我来自C#,非常新,所以请耐心等待。在CreateWindow上设置HWND似乎失败
我有一个MainWindow
类,它有一些私人的HWND
变量。一个用于窗口本身,另一个用于每个控件。我想我需要跟踪他们,或者以后会让事情变得更轻松?
不管怎么说,我有:
class GUIMain
{
private:
HINSTANCE hInstance;
HWND hWnd; // The windows itself
HWND cmdGenerate, cmdQuit; // 2 buttons
我有叫initialise(HWND hWnd)
私有方法被称为上WM_CREATE
,并将其添加的所有控件的窗口:
void MainWindow::initialise(HWND hWnd)
{
this->hWnd = hWnd;
cmdGenerate = CreateWindow(TEXT("BUTTON"), TEXT("&Generate..."),
WS_VISIBLE | WS_CHILD,
6, 6, 150, 25,
hWnd, (HMENU)1, 0, 0);
cmdQuit = CreateWindow(TEXT("BUTTON"), TEXT("&Quit"),
WS_VISIBLE | WS_CHILD,
6, 37, 150, 25,
hWnd, (HMENU)2, 0, 0);
}
然而,这似乎并没有把按钮放在窗口上。事实上,当我调试时,我可以看到它甚至没有超过第一行。奇怪的是,当我改变它:
void MainWindow::initialise(HWND hWnd)
{
//this->hWnd = hWnd;
/*cmdGenerate = */CreateWindow(TEXT("BUTTON"), TEXT("&Generate..."),
WS_VISIBLE | WS_CHILD,
6, 6, 150, 25,
hWnd, (HMENU)1, 0, 0);
/*cmdQuit = */CreateWindow(TEXT("BUTTON"), TEXT("&Quit"),
WS_VISIBLE | WS_CHILD,
6, 37, 150, 25,
hWnd, (HMENU)2, 0, 0);
}
它似乎工作正常。
逻辑似乎暗示分配私人HWND
变量CreateWindow
函数返回的值导致问题,但我以前做过,并没有问题?
我以前的代码和这段代码唯一的区别是,我现在正在使用类,而之前(当我正在学习时),我只是有一切在WinMain
和WndProc
。
的WinMain:http://pastebin.com/j54vW9gc
头文件:http://pastebin.com/cUs4vVJ6
CPP文件:http://pastebin.com/B5KUXTvx
似乎如果一个人应该工作,另一个应该。你能告诉我们你的WndProc吗?你说初始化(sp)是私有的,并从WM_CREATE调用。 wndproc是一个静态成员函数吗?对象在哪里被创建? –
我附上了完整源代码的链接。 – Ozzah
听起来像你的'this'指针是不正确的。 –