gpt4 book ai didi

c++ - 从对话框窗口调用第二个对话框无法使任何一个处于事件状态

转载 作者:行者123 更新时间:2023-11-30 00:41:59 25 4
gpt4 key购买 nike

很抱歉提出愚蠢的问题,我正在按照本教程中的描述进行所有操作: http://www.functionx.com/visualc/howto/calldlgfromdlg.htm

我创建对话框窗口并尝试调用另一个对话框以响应使用以下代码按下的按钮:

CSecondDlg Dlg;
Dlg.DoModal();

模态窗口出现但未激活,主窗口也未激活,一切都滞后。这是一个屏幕截图:

Two dialogs interfering with each other http://img713.imageshack.us/img713/3919/63418833w.gif

下面是我的对话框的定义:

IDD_DIARY_TEST_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "diary_test"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "Second",IDC_SECOND_BTN,209,179,50,14
PUSHBUTTON "Cancel",IDCANCEL,263,179,50,14
CTEXT "TODO: Place dialog controls here.",IDC_STATIC,10,96,300,8
END

IDD_SECOND_DLG DIALOGEX 0, 0, 195, 127
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_DISABLED | WS_CAPTION
CAPTION "Second"
FONT 8, "MS Shell Dlg", 400, 0, 0x0
BEGIN
LTEXT "TODO: layout property page",IDC_STATIC,53,59,90,8
PUSHBUTTON "Button1",IDC_BUTTON1,61,93,50,14
END

最佳答案

我们只是比较一下两个对话框的样式:

STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_DISABLED | WS_CAPTION

我已经用粗体指出了不同之处,您的问题的原因现在应该很明显了:您的第二个对话框被禁用 (WS_DISABLED),因此阻止了它被激活!另一个不同之处是缺少 DS_MODALFRAME 样式,会导致它出现轻微异常(但不会对行为产生很大影响);最后的区别 (WS_SYSMENU) 只是阻止显示系统菜单(和左图标,右关闭按钮)。

您的屏幕截图中显示的另一个奇怪之处,即显示的第二个对话框混合到第一个的控件中,可能是由于您最初使用了 WS_CHILD as patriiice surmised ...

鉴于此代码和您发布的其他代码,我怀疑您最初将其创建为属性页。属性页虽然类似于普通对话框模板,但旨在显示为子窗口;普通模式对话框不是

关于c++ - 从对话框窗口调用第二个对话框无法使任何一个处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2313659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com