level 1
破面一护
楼主
为什么我在使用CreateWindow函数创建子窗口时,hMenu参数填我自己定义的宏ID时就创建子窗口失败,但是填0或者NULL就能创建成功
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId = LOWORD(wParam);
switch (message)
{
case WM_COMMAND:
{
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
g_hSubWindow = CreateWindow(
szWindowClass,
L"subwindow",
WS_CAPTION | WS_SYSMENU | WS_CHILD | WS_POPUP | WS_VISIBLE,
200,
200,
400,
400,
hWnd,
//******************************************************问题在这里******************************************************
(HMENU)ID_SUBWINDOW, //***************这里填0就没问题,填我定义的宏ID就创建子窗口失败
hInst,
NULL
);
if (!g_hSubWindow)
{
OutputDebugStringA("无效句柄");
}
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: 在此处添加使用 hdc 的任何绘图代码...
EndPaint(hWnd, &ps);
}
break;
case WM_CREATE:
CreateWindow(L"button", L"subwindow", WS_OVERLAPPED | WS_CHILD | WS_VISIBLE, 400, 400, 100, 100, hWnd, NULL, hInst, NULL);
break;
case WM_DESTROY:
//if (wmId == g_SubWindowID)
// DestroyWindow(g_hSubWindow);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
2020年03月24日 03点03分
1
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId = LOWORD(wParam);
switch (message)
{
case WM_COMMAND:
{
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
g_hSubWindow = CreateWindow(
szWindowClass,
L"subwindow",
WS_CAPTION | WS_SYSMENU | WS_CHILD | WS_POPUP | WS_VISIBLE,
200,
200,
400,
400,
hWnd,
//******************************************************问题在这里******************************************************
(HMENU)ID_SUBWINDOW, //***************这里填0就没问题,填我定义的宏ID就创建子窗口失败
hInst,
NULL
);
if (!g_hSubWindow)
{
OutputDebugStringA("无效句柄");
}
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: 在此处添加使用 hdc 的任何绘图代码...
EndPaint(hWnd, &ps);
}
break;
case WM_CREATE:
CreateWindow(L"button", L"subwindow", WS_OVERLAPPED | WS_CHILD | WS_VISIBLE, 400, 400, 100, 100, hWnd, NULL, hInst, NULL);
break;
case WM_DESTROY:
//if (wmId == g_SubWindowID)
// DestroyWindow(g_hSubWindow);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}