代码之家  ›  专栏  ›  技术社区  ›  Vibeeshan Mahadeva

更改对话框图标

  •  1
  • Vibeeshan Mahadeva  · 技术社区  · 15 年前

    我最近正在用visual c++2010编辑一个开源项目,我对vc++了解不多(我只有5天的c++经验),由于我所知甚少,我正在更改项目的一些用户界面

    我的项目中只有一个图标,应用程序将主图标显示为图标,同时我希望该图标也显示在对话框的标题上(单击主窗体中的按钮时将显示该对话框),

    对话框已经在资源/对话框中,但我想更改它的图标;

    3 回复  |  直到 15 年前
        1
  •  3
  •   casablanca    15 年前

    您需要找到您感兴趣的对话框的对话过程,并在 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);
    
        2
  •  0
  •   Dmitri K    13 年前

    如果LoadIcon是MFC,也可以搜索它(例如CDialog)

        3
  •  0
  •   Walden    8 年前

    希望对你有帮助

    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);