0

我自定义了一个资源管理器类型的浏览对话框并添加了一些控件。打开对话框后,即使我在模板资源上指定了宽度和高度,它仍显示为最大化状态。

最大化对话框图像

我试图通过使用 SetWindowPos、MoveWindow 和 ShowWindow API 来覆盖此行为,但它们似乎都没有调整对话框的大小。

以下是在对话框初始化期间调用的特定代码:

HWND hTrueDlg = GetParent(hwndDlg);
::SetWindowPos(hTrueDlg, HWND_TOP, iXPx, iYPx, iWinWidthPx, iWinHeightPx, SWP_SHOWWINDOW);
::ShowWindow(hTrueDlg, SW_RESTORE);

这是资源文件:

    WPOPENDLGCUSTOM DIALOG  0, 0, 600, 40
    STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION

// I have also tried this 
    STYLE (DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION) & ~WS_MAXIMIZE

当我双击标题栏时,它是“已恢复”,下次我打开对话框时,它会显示正确的大小。问题只在第一次打开。当用户不知道这种解决方法时,它可能会导致一些问题。

4

1 回答 1

0

资源管理器样式对话框从第一次打开的一个注册表配置单元读取大小值,然后将大小值记录并读取到一个可能Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\CIDSizeMRU稍后打开的注册表配置单元。

于 2021-05-27T07:55:52.593 回答