想修改任务栏的图标,于是修改了IDR_MAINFRAME指定的ICO文件。这样一来,主对话框的系统图标和任务栏图标都改变了。但是主对话框create之前,在
BOOL CClientApp::InitInstance()里面会有弹出登陆窗口,而此时任务栏的图标是MFC默认图标。怎样才能修改登陆时的任务栏图标呢?请各位指教!

解决方案 »

  1.   


    NOTIFYICONDATA nid;nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
    nid.hWnd=hWnd;
    nid.uID=IDR_MAINFRAME;
    nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP|NIF_INFO;
    nid.dwInfoFlags=NIIF_INFO;
    nid.uCallbackMessage=WM_SHOW_TASK;//自定义的在托盘区显示图标的消息,
    //鼠标移动到托盘图标上即发送此消息
    nid.hIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDR_MAINFRAME));wcscpy(nid.szInfoTitle, L"驱动助手");
    wcscpy(nid.szInfo, L"欢迎使用");
    nid.uTimeout=1000; 
    wcscpy(nid.szTip,L"助手");//信息提示条
    Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
      

  2.   

    C:\Documents and Settings\Administrator\桌面\01.bmp就是这个
      

  3.   

    上面的代码颜色挂掉了。
    重发,下面的代码放到InitDlg里面NOTIFYICONDATA nid; nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
    nid.hWnd=this->m_hWnd;
    nid.uID=IDR_MAINFRAME;
    nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP|NIF_INFO;
    nid.dwInfoFlags=NIIF_INFO;
    // nid.uCallbackMessage=WM_SHOW_TASK;//自定义的在托盘区显示图标的消息,鼠标移动到托盘图标上即发送此消息
    nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MYICON));
    wcscpy(nid.szInfoTitle, L"驱动助手");
    wcscpy(nid.szInfo, L"欢迎使用");
    nid.uTimeout=1000; 
    wcscpy(nid.szTip,L"助手");//信息提示条
    Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
      

  4.   

     谢谢楼上的回答,不过我要问的不是系统托盘图标,而是MainFrame出来之前弹出的登录对话框。
      

  5.   

    你Dlg是不是单独的资源文件才会出现你这个问题哎。。我也是有登陆框的,和MainFrm不是一个资源文件,都修改了就没这个问题了
      

  6.   


    谢谢你的回答,我刚才在登录对话框的初始化里面SetIcon,把这问题解决了