Я из C # и очень новичок в этом, поэтому, пожалуйста, потерпите меня.
У меня есть класс 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