gpt4 book ai didi

c++ - 对话框不显示在任务栏中

转载 作者:可可西里 更新时间:2023-11-01 12:09:20 25 4
gpt4 key购买 nike

我试图让一个没有边框或框架的 CDialog 显示在任务栏中。

它是在 CWinApp 的 InitInstance 中创建的(用于更新应用程序),我已经尝试设置 WS_EX_APPWINDOW 标志,但它仍然没有显示在任务栏中。

有什么想法吗?

编辑:如资源中所定义:

IDD_UPDATEFORM_DIALOG DIALOGEX 0, 0, 246, 124
STYLE WS_POPUP
EXSTYLE WS_EX_APPWINDOW
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END

作为使用:

 UpdateForm *dlg = new UpdateForm(UPDATE_FILES, CWnd::GetDesktopWindow());
INT_PTR nResponse = dlg->DoModal();


UpdateForm::UpdateForm(int updateType, CWnd* pParent) : CDialog(IDD_UPDATEFORM_DIALOG, pParent)
{
m_bInit = false;
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON);
m_Progress = new DesuraProgress();
m_updateType = updateType;
}

还是这样显示:

http://update.goldeneyesource.net/lodle/noicon.jpg http://update.goldeneyesource.net/lodle/noicon.jpg

最佳答案

编辑#2:

要为此窗口设置图标(本质上是启动画面),您可以向窗口发送 WM_SETICON 消息以及所需的图标。

对于对话框,您可以在 OnInitDialog() 中执行此操作。这是一个使用默认 Windows 信息图标的片段,如下所示:LoadIcon @ MSDN .

// CHelperDlg message handlers
BOOL CHelperDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 32516 is also known as IDI_INFORMATION
HICON hIcon = LoadIcon(0, MAKEINTRESOURCE(32516));

// 0 in WPARAM is 'small version'
::SendMessage(GetSafeHwnd(), WM_SETICON, 0, (LPARAM)hIcon);
// 1 in WPARAM is 'large version'
::SendMessage(GetSafeHwnd(), WM_SETICON, 1, (LPARAM)hIcon);

// No cleanup as HICONs are free from disposal rules.

return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}

--
编辑:

我创建了第二个项目来模拟您的更新,但除了在我的 .rc 文件中包含 DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS) 之外,我没有看到任何差异。这些对话框样式定义不会影响对话框的显示。

我已将我的最小示例的关键部分上传到 http://gist.github.com/461057供您引用,以防您想尝试在您的对话框之前添加此对话框进行测试。

此外,我正在使用 VS2010。如果您希望我也在该版本中重复此测试,我可以使用 VS2008。

--
原文:

尝试在创建对话框时将桌面窗口(通过 CWnd::GetDesktopWindow())指定为父窗口。

// Member Variable
CHelperDlg *dlg;

// Meanwhile, elsewhere...
dlg = new CHelperDlg();
dlg->Create(IDD_HELPERDLG, CWnd::GetDesktopWindow());
dlg->ShowWindow(SW_SHOW);
// or...
// dlg->DoModal();

此外,不要忘记在完成对话框后销毁它,可以在类所有者的析构函数中,也可以在其他方便的位置。

关于c++ - 对话框不显示在任务栏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163241/

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