小编Chr*_*chi的帖子

如何设置对话框的所有者(或父级)?

我有六个窗口,它们都可以生成一个对话框。对话框需要知道它是由六个窗口中的哪一个生成的。我相信我应该能够从对话框中调用 GetParent(hWnd) 或 GetWindow(hWnd, GW_OWNER) ,但这两个调用都返回整个项目窗口,而不是我传递到 DialogBox() 中的第三个参数。

下面是生成对话框的代码(所有六个窗口共享相同的 wndproc 函数),以及一些 printf 调试:

        case ID_SETTINGS_BUTTON:
            OutputDebugStringA("hWnd from Caller to DialogBox: ");
            char buffer[128];
            GetClassNameA(hWnd, buffer, 128);
            OutputDebugStringA(buffer);
            OutputDebugStringA("\n");
            DialogBox(hInst, MAKEINTRESOURCE(IDD_PORTSETTINGS), hWnd, portSettingsProc);
            break;
Run Code Online (Sandbox Code Playgroud)

这是对话框过程开头的代码:

INT_PTR CALLBACK portSettingsProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
    case WM_INITDIALOG:
        for (int k = 0; k < PaneInfo::BAUDRATE_I_COUNT; k++)
            SendDlgItemMessage(hWnd, IDC_PORTSETTINGS_BAUDRATE, CB_ADDSTRING, 0, (LPARAM)PaneInfo::BAUDRATE_NAME_ARR[k]);
        for (int k = 0; k < PaneInfo::DATABITS_I_COUNT; k++)
            SendDlgItemMessage(hWnd, IDC_PORTSETTINGS_DATABITS, CB_ADDSTRING, 0, (LPARAM)PaneInfo::DATABITS_NAME_ARR[k]);
        for (int …
Run Code Online (Sandbox Code Playgroud)

c++ winapi visual-studio-2017

2
推荐指数
1
解决办法
468
查看次数

标签 统计

c++ ×1

visual-studio-2017 ×1

winapi ×1