我來自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'指針是不正確的。 –