Я думал, что ситуация когда ошибка есть, а гетЛастЕррор ее не видит, весьма специфична. Ок. Вот кусок кода
| Код | LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK ChildProc(HWND hChild, UINT message, WPARAM wParam, LPARAM lParam); BOOL InitApplication(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE hInstance, int nCmdShow); VOID GetWindowsError();
HMENU hMenu; HWND hWndFrame; HWND hWndClient; HINSTANCE hInst;
LPCSTR szFrameClassName = "MDI Frame"; LPCSTR szClientClassName = "MDICLIENT"; LPCSTR szChildClassName = "MDI Child"; LPCSTR szFrameTitle = "Имя фрейма"; LPCSTR szChildTitle = "Имя документа"; MDICREATESTRUCT mdiStruct; WorkspaceManager wsManager; BOOL isGridEnabled;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { hInst = hInstance; MSG msg; if (!InitApplication(hInstance)) return (FALSE);
if (!InitInstance(hInstance, nCmdShow)) return(FALSE);
while (GetMessage(&msg, NULL, 0, 0)) { if(!TranslateMDISysAccel(hWndClient, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (msg.wParam); }
BOOL InitApplication(HINSTANCE hInstance) { WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_ASTERISK); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENUSTRIP); wc.lpszClassName = szFrameClassName; wc.hIconSm = LoadIcon(wc.hInstance, NULL); BOOL resFrame = RegisterClassEx(&wc); if(!resFrame) { GetWindowsError(); }
wc.lpfnWndProc = (WNDPROC)ChildProc; wc.lpszClassName = szChildClassName; //wc.cbWndExtra = DLGWINDOWEXTRA; wc.lpszMenuName = NULL; BOOL resChild = RegisterClassEx(&wc); if(!resChild) { GetWindowsError(); }
return resFrame && resChild; }
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hWndFrame = CreateWindowEx ( NULL, szFrameClassName, szFrameTitle, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
if (!hWndFrame) return (FALSE); ShowWindow(hWndFrame, nCmdShow); UpdateWindow(hWndFrame); return (TRUE); }
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hDC; PAINTSTRUCT ps;
switch (message) { case WM_CREATE: { CLIENTCREATESTRUCT clientStruct; clientStruct.hWindowMenu = GetSubMenu(GetMenu(hWnd), 0); clientStruct.idFirstChild = 50000;
hWndClient = CreateWindowEx ( WS_EX_CLIENTEDGE, szClientClassName, NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, NULL, GetModuleHandle(NULL), &clientStruct); if(!hWndClient) { GetWindowsError(); }
ShowWindow(hWndClient, SW_SHOW);
mdiStruct.szClass = szChildClassName; mdiStruct.szTitle = szChildTitle; mdiStruct.hOwner = hInst; mdiStruct.x = CW_USEDEFAULT; mdiStruct.y = CW_USEDEFAULT; mdiStruct.cx = CW_USEDEFAULT; mdiStruct.cy = CW_USEDEFAULT; mdiStruct.style = NULL; mdiStruct.lParam = NULL;
HWND hwndSystemInformation = (HWND) SendMessage(hWndClient, WM_MDICREATE, 0, (LPARAM) (LPMDICREATESTRUCT) &mdiStruct) ;
|
В hwndSystemInformation пишется ноль |