Проблема при загрузке иконки панели задач для диалога - PullRequest
0 голосов
/ 31 мая 2011

У меня возникла небольшая проблема с отображением значка панели задач для диалогового окна, которое создает мое приложение.Основным приложением является 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 - это глобальный указатель на основной класс, поскольку создание диалога производится в обратном вызове издочерний поток.

Значок панели задач создается в методе OnInitDialog MFC, как показано здесь:

    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 Ответ

1 голос
/ 31 мая 2011

Просто исправили это, используя отправку сообщения WM_SETICON в главное окно вместо вызова функции seticon

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...