int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
WNDCLASSEX wc;
wc.cbClsExtra = 0;
wc.cbSize = sizeof(WNDCLASSEX);
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
wc.hInstance = hInst;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = L"My Wnd Class";
wc.lpszMenuName = 0;
wc.style = CS_HREDRAW | CS_VREDRAW;
if (!RegisterClassEx(&wc)) return 0;
g_hWnd = CreateWindow(L"My Wnd Class", L"Title",
WS_OVERLAPPEDWINDOW,
0, 0,
640, 480,
NULL,
NULL,
hInst,
NULL);
if (!g_hWnd) return 0;
ShowWindow(g_hWnd, SW_SHOW);
return S_OK;
}
Проблема с созданием обычного оконного WinAPI приложения
Люди подскажите в чем проблема. CreateWindow все время возвращает нулевой хэндл.
Код:
Функции CreateClass в коде не обнаружено. Есть CreateWindow и RegisterClass. Вы какую имели в виду?
Описка.Я имел в виду CreateWindow.
Что возвращает GetLastError() ?
The system cannot find the file specified
После CreateWindow:
The specified module could not be found
Код:
return 0;
а это неверно. Дело в том, что из функции CreateWindow оконная процедура вызывается и не один раз. Причем некоторые обрабатываемые ею сообщения критичны для создания окна.
В общем, вставьте в оконную процедуру вызов DefWindowProc. Если он уже был, а некоторые сообщения вы обрабатываете сами, то посмотрите внимательно на их коды возврата, возможно ошибка в них.
RegisterClassEx() с юникодными параметрами.
проверте определен ли UNICODE в проекте.
(#define UNICODE)
Цитата: tarekon
Судя по всему, ваша оконная процедура состоит из одной строки
а это неверно. Дело в том, что из функции CreateWindow оконная процедура вызывается и не один раз. Причем некоторые обрабатываемые ею сообщения критичны для создания окна.
В общем, вставьте в оконную процедуру вызов DefWindowProc. Если он уже был, а некоторые сообщения вы обрабатываете сами, то посмотрите внимательно на их коды возврата, возможно ошибка в них.
Код:
return 0;
а это неверно. Дело в том, что из функции CreateWindow оконная процедура вызывается и не один раз. Причем некоторые обрабатываемые ею сообщения критичны для создания окна.
В общем, вставьте в оконную процедуру вызов DefWindowProc. Если он уже был, а некоторые сообщения вы обрабатываете сами, то посмотрите внимательно на их коды возврата, возможно ошибка в них.
В этом и была причина. По глупости не заметил. Как обычно ищещ в одном месте, а ошибка совсем в другом.