![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] DirectX |
|
C/C++ - [решено] DirectX
|
![]() Пользователь Сообщения: 147 |
не получается, набираю по примеру в книге.
Вот: отчет прикрепил #include "stdafx.h" //------------------- char szWindowClass[] = "Direct3DTemplateProj"; char szTitle[] = "Direct3d Demo by Michael Flenov"; //-------------------- IDirect3D9 *pD3D = NULL; IDirect3DDevice9 *pD3DDevice = NULL; int iWidth = 800; int iHeight = 600; //-------------------- int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); bool Init(HWND hWnd); void GraphEngine(); //-------------------- int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd) { WNDCLASSEX wcex; MSG msg; HWND hWnd; CoInitialize(NULL); //------------------- wcex.cbSize = sizeof(wcex); wcex.style = CS_CLASSDC; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInst; wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = NULL; wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&wcex)) return FALSE; //---------------------- hWnd = CreateWindow(szWindowClass, szTitle, WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, iWidth, iHeight, NULL, NULL, hInst, NULL); if(!hWnd) return FALSE; //---------------------- ShowWindow(hWnd, SW_NORMAL); UpdateWindow(hWnd); //---------------------- if(Init(hWnd) == TRUE) { while(true) { if(PeekMessage(&msg, NULL,NULL,NULL,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); if(msg.message == WM_QUIT) break; } GraphEngine(); } } //---------------------------- if(pD3DDevice) {pD3DDevice = NULL; pD3DDevice = NULL;} if(pD3D) {pD3D = NULL; pD3D = NULL;} CoUninitialize(); return 0; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } bool Init(HWND hWnd) { if(DX3DInitZ(&pD3D, &pD3DDevice, hWnd,iWidth,iHeight,FALSE) != S_OK) { MessageBox(hWnd, "DirectX Initialize Error","Error",MB_OK); return FALSE; } return TRUE; } void GraphEngine() { pD3DDevice->Clear(0,NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f,0); if(SUCCEEDED(pD3DDevice->BeginScene())) { pD3DDevice->EndScene(); } pD3DDevice->Present(NULL,NULL,NULL,NULL); } |
|
Отправлено: 16:35, 14-02-2010 |
![]() Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 17:33, 14-02-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать осталась одна ошибка:
Компиляция... directx.cpp .\directx.cpp(80) : error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [25]' в 'LPCWSTR' Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции stdafx.cpp |
Отправлено: 18:32, 14-02-2010 | #3 |
![]() Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 21:19, 14-02-2010 | #4 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать ganselo, LPCWSTR и L"" одно и тоже.
Более логично или просто L"", или использовать макро подстановочный LPCSTR. Последний означает LPCWSTR, в случаи определения UNICODE в проекте, или сам себя - LPCSTR, в случаи ANSI. |
|
Отправлено: 06:17, 19-02-2010 | #5 |
![]() Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Admiral, а что значит LPTSTR и вообще TCHAR?
|
------- Отправлено: 12:17, 19-02-2010 | #6 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать ganselo резонно. В предыдущем посте ошибся - пропустил один символ, что в данном случаи принципиально. Та макро подстановка правильно пишется с буквой T - LPCTSTR, а далее по тексту "сам себя" лишнее.
Что касается LPTSTR - это тоже макро подстановка: LPWSTR в случаи определения UNICODE, и LPSTR в противном случаи. Только эти строки не заканчиваются нуль символом('\0'), в отличии от LPCXXX. TCHAR ещё одна макро подстановка, в зависимости от определений в проекте (например директивой #define или ключом линкера /D) может означать как char, так и WCHAR (wchar_t) символ(ы). |
Отправлено: 03:00, 20-02-2010 | #7 |
![]() Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать #include "stdafx.h" //------------------- LPCWSTR szWindowClass = L"Direct3DTemplateProj"; LPCWSTR szTitle = L"Direct3d Demo by Michael Flenov"; //-------------------- IDirect3D9 *pD3D = NULL; IDirect3DDevice9 *pD3DDevice = NULL; int iWidth = 800; int iHeight = 600; //-------------------- int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); bool Init(HWND hWnd); void GraphEngine(); //-------------------- int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd) { WNDCLASSEX wcex; MSG msg; HWND hWnd; CoInitialize(NULL); //------------------- wcex.cbSize = sizeof(wcex); wcex.style = CS_CLASSDC; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInst; wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = NULL; wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&wcex)) return FALSE; //---------------------- hWnd = CreateWindow(szWindowClass, szTitle, WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, iWidth, iHeight, NULL, NULL, hInst, NULL); if(!hWnd) return FALSE; //---------------------- ShowWindow(hWnd, SW_NORMAL); UpdateWindow(hWnd); //---------------------- if(Init(hWnd) == TRUE) { while(true) { if(PeekMessage(&msg, NULL,NULL,NULL,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); if(msg.message == WM_QUIT) break; } GraphEngine(); } } //---------------------------- if(pD3DDevice) {pD3DDevice = NULL; pD3DDevice = NULL;} if(pD3D) {pD3D = NULL; pD3D = NULL;} CoUninitialize(); return 0; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } bool Init(HWND hWnd) { if(DX3DInitZ(&pD3D, &pD3DDevice, hWnd,iWidth,iHeight,FALSE) != S_OK) { MessageBox(hWnd, (LPCWSTR)L"DirectX Initialize Error", (LPCWSTR)L"Error", MB_OK); return FALSE; } return TRUE; } void GraphEngine() { pD3DDevice->Clear(0,NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f,0); if(SUCCEEDED(pD3DDevice->BeginScene())) { pD3DDevice->EndScene(); } pD3DDevice->Present(NULL,NULL,NULL,NULL); } Ошибка 2 fatal error LNK1120: 1 неразрешенных внешних элементов C:\MVS\p\directX\directx\Release\directx.exe кто чего может подсказать? |
Последний раз редактировалось котвася, 01-03-2010 в 19:38. Отправлено: 19:25, 01-03-2010 | #8 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать делаешь поиск *.lib в папка_с_DX_SDK/lib, *.obj *.cpp в папке с проектом слова _DX3DInitZ. Если найдёшь cpp, то добавляешь его в проект, иначе lib, иначе obj. А если хочешь осознавать, что делаешь, то найди #include, который объявляет эту функцию. Если он в проекте, то ищи cpp, где он описан; если в папка_с_DX_SDK/include, то ищи в хелпе, какой к нему надо lib
|
Отправлено: 23:32, 01-03-2010 | #9 |
![]() Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать Яуже добавил lib в проект d3d9.lib d3dx9.lib.Делаю всё по книге. Хочю освоить технологию деректХ.
Правда не знаю для какого компилятора книга . Пишу в MVS2008 пробовол в BDS2006 но там еще больше ошибок, может в этом дело? |
Отправлено: 18:39, 04-03-2010 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Август 2009: новая версия DirectX и DirectX SDK | OSZone News | Новости и события Microsoft | 0 | 12-09-2009 00:30 | |
DirectX 9 | Maxximus | Хочу все знать | 49 | 08-05-2009 18:53 | |
Установка - DirectX 10 | gelios_aa | Microsoft Windows Vista | 7 | 26-06-2008 04:04 | |
DirectX 9.0c | &-) | Microsoft Windows 95/98/Me (архив) | 12 | 03-02-2005 10:50 |
|