私はC#から来ており、これは非常に新しいので、ご容赦ください。
MainWindow
いくつかのプライベートHWND
変数を持つクラスがあります。1つはウィンドウ自体用で、もう1つは各コントロール用です。私はそれらを追跡する必要があると思いますか、それとも後で物事が簡単になると思いますか?
とにかく、私は持っています:
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
関数returnの値を割り当てることが問題を引き起こしていることを示唆しているように見えますが、私は以前にこれを行ったことがあり、問題はありませんでしたか?
以前のコードとこのコードの唯一の違いは、現在はクラスを使用しているのに対し、以前(学習中)はすべてをWinMain
とに入れていたということWndProc
です。
WinMain: http: //pastebin.com/j54vW9gc
ヘッダーファイル: http: //pastebin.com/cUs4vVJ6
CPPファイル:http://pastebin.com/B5KUXTvx