2011-05-31 28 views
0

我遇到了一些问题,显示我的应用程序创建的对话框的任务栏图标。主要应用程序是基于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图标,尝试从另一个线程加载对话框。我试图让回调发布消息给主线程来创建对话框。对话框中的所有控件都可以正常工作。它获取所有必要的信息,但它不绘制图标。

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

+0

一般就固定它,MFC框架挑头的图标了。如果其他图标/资源作为第一,MFC会无法加载图标 – 2011-06-01 02:57:47

+0

感谢您的评论。我已经解决了这个问题,并将答案发布到此线程。问题不是来自资源/图片,但谢谢。 – 2011-06-01 11:30:27

回答

1

通过发送WM_SETICON消息发送到主窗口,而不是调用操作SetIcon功能