0

これは私のクラスコンストラクターです:

ActionButton::ActionButton(CallbackFunction function, void* param, HWND parent, int x, int y, int heigth, int width) :
    m_function(function), m_parameters(param), m_window(NULL)
{
    HWND m_window = CreateWindowEx(0, L"Action button", NULL, WS_CHILD | WS_VISIBLE, 
        x, y, width, heigth, parent, NULL, NULL, NULL);

    DWORD dw = GetLastError();

    SetWindowLongPtr(m_window, GWLP_USERDATA, (LONG_PTR)this);
    ShowWindow(m_window, SW_NORMAL);
}

私はデバッガーを使用し、それが実行されることを発見しましたCreateWindowEx()が、F11 を押した後、プログラムはコンストラクターからジャンプしました (そして、私は 1 つのスレッドしか使用していません)。私のコードに何か問題がありますか?


CreateWindowExパラメーターを使用してウィンドウ プロシージャを実行した後、たとえば、WM_CREATE次のステップCreateWindowExはコンストラクターにないため、いくつかのウィンドウ プロシージャー コールバックを実行した後、コンストラクターに戻ります。

4

1 に答える 1