在基于对话框的程序中,如何用CStatic显示外部exe,dll,icl中的图标
比如显示c:\mm\me.dll中第一个图标

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2019/2019274.xml?temp=.3914759
      

  2.   

    例如,如果需要在程序窗口左上角显示写字板图标(见图1),可以在相应视类的OnDraw中增加以下代码:  void CSampleView: OnDraw(CDC  pDC)  {  //获得图标信息  if( :: SHGetFileInfo(_T(C:\\Program Files\\Accessories\\wordpad.exe"),0,  &&stFileInfo,sizeof(stFileInfo),SHGFI_ICON))  {   //利用设备描述表的DrawIcon接口显示得到的图标信息  pDC ->DrawIcon(10,10,stFileInfo.hIcon);  }  }   另外也可以调用 ExtractIcon函数获得应用程序的图标信息,同样调用设备描述表的DrawIcon函数完成图标显示。  void CSampleView:: OnDraw(CDC pDC)  {  HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T  ("C:\\Program Files\\Accessories\\wordpad.exe"),0);  if (hIcon &&&&hIcon!=(HICON)-1)  pDC->DrawIcon(10,10,hIcon);  }上面的仅仅是获得 exe中的图标,显示的话
    CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC1);
    pStatic->ModifyStyle(0x0,SS_ICON|SS_CENTERIMAGE)
    pStatic->SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
      

  3.   

    首先要修改 你要用的 CStatic 控件的ID,缺省的是定值 IDC_STATIC  想使用它得自定义一个ID的