所以我找到了一些多winodw教程/课程,但似乎没有一个能解决我的问题。
我正在尝试在第二个窗口创建一个按钮,而不是另一个。
这是我的代码(不包括不必要的东西)
HWND hWindow1;
HWND hWindow2;
HINSTANCE hInstGlobal;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
...WindowClass / RegisterClass...
//HWND hWindow1;
hWindow1 = CreateWindow("WinProg", "Window_1", WS_OVERLAPPEDWINDOW,
0, 0, 800, 600, NULL, NULL, hInstance, NULL);
//HWND hWindow2;
hWindow2 = CreateWindow("WinProg", "Window_2", WS_OVERLAPPEDWINDOW,
150, 50, 800, 600, NULL, NULL, hInstance, NULL);
...show/update windows...
...MessageLoop...
}
LRESULT WINAPI WinProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
{
switch(uiMessage)
{
case WM_CREATE:
{
HWND hButton;
hButton = CreateWindow("BUTTON", "PUSH ME NOW",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
50, 200, 150, 20,
hWindow2, (HMENU) 1,
hInstGlobal, NULL);
}
使用此代码不会创建任何按钮。
对于我的调试,我可以通过将WM_CREATE下的hWindow2更改为hWindow1来在第一个窗口上创建一个按钮。但这不是我想要的。然而,我可以在第二个窗口创建一个按钮,将其保留为hWindow2,但将消息事件更改为WM_PAINT ......
我不明白发生了什么,我宁愿不解决这个问题。
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
这不是在hWindow2
上创建按钮的明显方法吗?
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
...WindowClass / RegisterClass...
//HWND hWindow1;
hWindow1 = CreateWindow("WinProg", "Window_1", WS_OVERLAPPEDWINDOW,
0, 0, 800, 600, NULL, NULL, hInstance, NULL);
//HWND hWindow2;
hWindow2 = CreateWindow("WinProg", "Window_2", WS_OVERLAPPEDWINDOW,
150, 50, 800, 600, NULL, NULL, hInstance, NULL);
HWND hButton = CreateWindow("BUTTON", "PUSH ME NOW",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
50, 200, 150, 20,
hWindow2, (HMENU) 1,
hInstGlobal, NULL);
...show/update windows...
...MessageLoop...
}
LRESULT WINAPI WinProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
{
switch(uiMessage)
{
...
}
}
真的不确定为什么要尝试在hWindow1
和hWindow2
使用的代码中创建按钮。减少对全局变量的需求。