我想美化下我的程序,想在Button上显示ICo图标,可是显示图标后,文字没了!哪位大侠帮帮小弟啊?急......
切题就给分!

解决方案 »

  1.   

    这个可以实现的方法提供两种:
    一,用PS编辑图标,在上面写上文字:
    二,自绘按钮,要求是先绘制图标,再写字,代码如下按钮风格(BS_OWNERDRAW)case WM_DRAWITEM : 
      static LPDRAWITEMSTRUCT pdis; 
      static HICON hIcon; 
              pdis = (LPDRAWITEMSTRUCT) lParam ; 
    if(pdis->CtlType==ODT_BUTTON) 

              switch (pdis->CtlID) 
              { 
              case ID_1://按钮ID 
              FillRect(pdis->hDC,&pdis->rcItem ,CreateSolidBrush(RGB(255,255,255))); 
              hIcon=LoadIcon(getModuleHandle(0),MAKEINTRESOURCE(IDI_ICON)); 
              DrawIcon(pdis->hDC,0,0,hIcon);//按钮图标1 
              SetBkMode(pdis->hDC,TRANSPARENT); 
              TextOut(pdis->hDC,0,0,"按钮",4);//按钮文字 
              break; 
              } 
              if (pdis->itemState & ODS_SELECTED)//选中(按下) 
      switch(pdis->CtlID) 
      { 
              case ID_1: 
              hIcon=LoadIcon(getModuleHandle(0),MAKEINTRESOURCE(IDI_ICON2)); 
              DrawIcon(pdis->hDC,0,0,hIcon);//按钮图标2 
              SetBkMode(pdis->hDC,TRANSPARENT); 
              TextOut(pdis->hDC,0,0,"按钮",4);//按钮文字 
              break; 
      } 
              } 
      

  2.   

    如果是动态按钮的话,可以子类化按钮窗口,拦截WM_MOUSEMOVE,WM_MOUSELEVEL,....等消息,即可
    如果有什么不明白的,请加Q:501219511(没事勿扰哦,O(∩_∩)O~)
      

  3.   

    hIcon=LoadIcon(getModuleHandle(0),MAKEINTRESOURCE(IDI_ICON2));
    这一句里的应该是GetModuleHandle(0),而不是getModuleHandle(0),(请改过来)
      

  4.   

    一楼的大哥,你讲的很好,我基本弄懂了(第二种方法),可是这些代码写在哪了?是写在对话框的初始化里面,还是在OnPaint函数里面啊?劳烦再给小弟讲讲!O(∩_∩)O~