界面设计

主管就是客户,所以我把工具条的界面给主管LOOK了一下,让他操作一下

主管很不满意,说界面太难过.

长得丑也有错?????????没办法,客户是上帝,于是我只得想得点办法美化一下.

开始我想直接往上添加位图的方法实现,如下

SendMessage(hwndToolbar,ADDBITMAP,0,(LPARAM)&bmp);

可是它跟文字总不能很好相处,搞了好久,郁闷.

于是我一翻资料,找到了向按扭上添加ImageList的方法.那就需要一个画好的工具条位置.

可惜,美术功底差,画的更难看,网上一找,也没找到正好符合我的要求的图片.

看来这个方法只能放弃了.

胡乱在网上找了一回,看到了WM_NOTIFY消息,忽然想起通知消息中NM_CUSTOMDRAW消息中能传回控件的DC,

能不能在这个DC上面画上我们想要添加的位置呢?

我当及开始了工作:

在主窗口中添加处理WM_NOTIFY的代码

case WM_NOTIFY:

           ToolBarNotify(hWnd,hwndToolbar,lParam);

           break;

处理函数如下:

LRESULT ToolBarNotify(HWND hWnd, HWND hwndToolBar,LPARAM lParam)
{
          LPNMHDR pnmhdr=(LPNMHDR)lParam;
          if(pnmhdr->hwndFrom==hwndToolBar)
          {
               switch(pnmhdr->code)
                {
               case NM_CUSTOMDRAW:
                {
                     LPNMCUSTOMDRAW pnmcd=(LPNMCUSTOMDRAW)lParam;
                     ViewBmp(hwndToolBar,pnmcd->hdc);
                      break;
                 }

           }

}

ViewBmp函数:

void ViewBmp(HWND htool,HDC hdc)
{
 BITMAP bm;
 RECT rt;
 HDC memdc;
 HBITMAP hbm,hbm1;
 GetClientRect(htool,&rt);
 memdc=CreateCompatibleDC(hdc);
 hbm=(HBITMAP)LoadBitmap((HINSTANCE)::GetWindowLong(htool,GWL_HINSTANCE),MAKEINTRESOURCE(IDB_COOL));
 GetObject(hbm,sizeof(bm),&bm);
 hbm1=(HBITMAP)SelectObject(memdc,hbm);
 StretchBlt(hdc,0,0,rt.right,rt.bottom,memdc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
 SelectObject(memdc,hbm1);
 DeleteObject(memdc);
 DeleteObject(hbm);
}

显示效果如下:

请主管一看,OK,可以.

总结:

如果以后要更改显示风格只要将背景位图换一下就可以了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值