加载对话框的任务栏图标问题

时间:2011-05-31 13:14:19

标签: mfc visual-c++

我在显示应用创建的对话框的任务栏图标时遇到了一些问题。主要应用是基于系统托盘的Windows应用程序。

以下是我用来创建对话框的代码:

        g_pMainWnd->m_DlgAuth= new CDlg_Auth();
        g_pMainWnd->m_DlgAuth->SetTitle(_T("Authentication"));          
        g_pMainWnd->m_DlgAuth->SetSize(420,420);
        g_pMainWnd->m_DlgAuth->Create(IDD_DLG_AUTH,AfxGetMainWnd());
        g_pMainWnd->m_DlgAuth->ShowWindow(SW_SHOW);
        g_pMainWnd->m_DlgAuth->SetForegroundWindow();

g_pMainWnd是指向主类的全局指针,因为对话框的创建是在子线程的回调中完成的。

任务栏图标在MFC的OnInitDialog方法中创建,如下所示:

    m_hIcon = (HICON)LoadImage(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON, 0, 0, 0); 

    int cxIcon = GetSystemMetrics(SM_CXSMICON);
    int cyIcon = GetSystemMetrics(SM_CYSMICON);

    m_hIconSmall = (HICON)LoadImage(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON
        ,cxIcon,cyIcon, 0); 

    SetIcon(m_hIconSmall, FALSE);       // Set small icon
    SetIcon(m_hIcon, TRUE);     // Set small icon

小图标完全加载问题是大图标,它根本没有加载,句柄设置好,一切看起来都很好但是当任务栏按钮显示时,它会显示默认的Windows控制台应用程序图标。

我已经待了一个星期了,似乎什么都没有用。我尝试过其他32x32图标,尝试从不同的线程加载对话框。我试图让回调向主线程发布消息以创建对话框。对话框中的所有控件都可以正常工作。它获取了所有必要的消息,但它没有绘制图标。

感谢任何可能的帮助。 谢谢

1 个答案:

答案 0 :(得分:1)

通过使用发送WM_SETICON消息到主窗口而不是调用seticon函数来修复它