изменить значок диалога - PullRequest
2 голосов
/ 26 ноября 2010

Я недавно редактирую проект с открытым исходным кодом в Visual C ++ 2010, я не очень разбираюсь в VC ++, (у меня есть только 5 дней опыта в C ++), с моим небольшим знанием я меняю некоторый пользовательский интерфейс проекта

в моем проекте есть только один значок, приложения показывают основной значок в виде значка, в то же время я хочу, чтобы этот значок также был в заголовке диалогового окна (диалоговое окно будет показано, когда кнопка в нажата основная форма),

диалог уже находится в ресурсах / диалогах, но я хочу изменить его значок;

Ответы [ 3 ]

3 голосов
/ 26 ноября 2010

Вам нужно найти процедуру диалога в интересующем вас диалоге, а в обработчике сообщений WM_INITDIALOG (вам нужно добавить его, если его еще нет) используйте WM_SETICON дляустановить иконку:

// hIcon is your icon handle
SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
0 голосов
/ 18 августа 2018

Надеюсь, это полезно для вас

BOOL sendWndIconToTaskbar(HWND hWnd,HICON hIcon) 
{ 
    BOOL ret = TRUE; 
    ASSERT(hWnd); 
    if(!::IsWindow(hWnd)) 
        return FALSE; 
    CWnd* pWnd; 
    pWnd = pWnd->FromHandle(hWnd); 
    ASSERT(pWnd); 
    if(!pWnd) 
        return FALSE; 
    if(pWnd->GetParent())
    {
        if(::SetWindowLong(hWnd,GWL_HWNDPARENT,NULL) == 0) 
            return FALSE; 
    }


    if(!(pWnd->ModifyStyle(NULL,WS_OVERLAPPEDWINDOW))) 
        ret = FALSE; 
    pWnd->SetIcon(hIcon,TRUE); 
    pWnd->SetIcon(hIcon,FALSE); 

    return ret; 
} 

HICON hIconSm = (HICON)LoadImage(NULL, "default.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
sendWndIconToTaskbar(pOcxDlg->m_hWnd,hIconSm);
0 голосов
/ 15 февраля 2013

Вы также можете искать LoadIcon, если это MFC (например, CDialog)

...