【远控编写09】客户端界面的设计和编写--为对话框添加入工具条

一.基础知识:

1.工具条类: CToolBar.(在MSDN中查看其成员Member)

①CToolBar::CreateEx
Call this function to create a Windows toolbar (a child window) and associate it with the CToolBar object.

[cpp]  view plain copy
  1. virtual BOOL CreateEx(  
  2.    CWnd* pParentWnd,  
  3.    DWORD dwCtrlStyle = TBSTYLE_FLAT,  
  4.    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,  
  5.    CRect rcBorders = CRect(  
  6.    0,  
  7.    0,  
  8.    0,  
  9.    0  
  10. ),  
  11.    UINT nID = AFX_IDW_TOOLBAR  
  12. );  


②.CToolBar::SetButtonText
Call this function to set the text on a button.

[cpp]  view plain copy
  1. BOOL SetButtonText(  
  2.    int nIndex,  
  3.    LPCTSTR lpszText   
  4. );  


2.位图类: CBitmap.(在MSDN中查看其成员Member)
①CBitmap::GetBitmap
Fills a BITMAP structure with information about the bitmap.
Call this member function to retrieve information about a CBitmap object.

[cpp]  view plain copy
  1. int GetBitmap(  
  2.    BITMAP* pBitMap   
  3. );  


 

3.位图类: CImageList.(在MSDN中查看其成员Member)
①CImageList::m_hImageList
A handle containing the image list attached to this object.

②CImageList::Create
Initializes an image list and attaches it to a CImageList object.

[cpp]  view plain copy
  1. BOOL Create(  
  2.    int cx,  
  3.    int cy,  
  4.    UINT nFlags,  
  5.    int nInitial,  
  6.    int nGrow   
  7. );  


③CImageList::Add
Call this function to add one or more images or an icon to an image list.

[cpp]  view plain copy
  1. int Add(  
  2.    CBitmap* pbmImage,  
  3.    COLORREF crMask   
  4. );  


④CImageList::Detach
Call this function to detach an image list object from a CImageList object.

[cpp]  view plain copy
  1. HIMAGELIST Detach( );  


 

 

二.具体实现:

1.在资源视图里面,创建工具条资源(Toolbar),
重设ID为:IDR_TOOLBAR_MAIN
2.导入BMP资源(Bitmap):
重设ID为:IDB_BITMAP_MAIN.
3.复制TrueColorToolBar文件,添加CTrueColorToolBar类.
[项目]-->>[添加现有项...]-->>选择"TrueColorToolBar.h" "TrueColorToolBar.cpp" 加入即可。

4.在对话框类所在的头文件中,添加:

[cpp]  view plain copy
  1. #include "TrueColorToolBar.h"  


5.在对话框类中,声明保护变量:

[cpp]  view plain copy
  1. CTrueColorToolBar m_ToolBar;  


6.添加CreateToolBar()函数:

[cpp]  view plain copy
  1.      if (!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP  
  2.  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  
  3.  !m_ToolBar.LoadToolBar(IDR_TOOLBAR_MAIN))  
  4. {  
  5.  TRACE0("Failed to create toolbar\n");  
  6.  return;      // fail to create  
  7. }  
  8. m_ToolBar.ModifyStyle(0, TBSTYLE_FLAT);    //Fix for WinXP  
  9. m_ToolBar.LoadTrueColorToolBar  
  10.  (  
  11.  48,    //加载真彩工具条  
  12.  IDB_BITMAP_MAIN,  
  13.  IDB_BITMAP_MAIN,  
  14.  IDB_BITMAP_MAIN  
  15.  );  
  16. RECT rt,rtMain;  
  17. GetWindowRect(&rtMain);  
  18. rt.left=0;  
  19. rt.top=0;  
  20. rt.bottom=80;  
  21. rt.right=rtMain.right-rtMain.left+10;  
  22. m_ToolBar.MoveWindow(&rt,TRUE);  
  23.   
  24. m_ToolBar.SetButtonText(0,"终端管理");    
  25. m_ToolBar.SetButtonText(1,"进程管理");   
  26. m_ToolBar.SetButtonText(2,"窗口管理");   
  27. m_ToolBar.SetButtonText(3,"桌面管理");   
  28. m_ToolBar.SetButtonText(4,"文件管理");   
  29. m_ToolBar.SetButtonText(5,"语音管理");   
  30. m_ToolBar.SetButtonText(6,"视频管理");   
  31. m_ToolBar.SetButtonText(7,"服务管理");   
  32. m_ToolBar.SetButtonText(8,"注册表管理");   
  33. m_ToolBar.SetButtonText(10,"参数设置");   
  34. m_ToolBar.SetButtonText(11,"生成服务端");   
  35. m_ToolBar.SetButtonText(12,"帮助");   
  36. RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);  


7.OnSize中添加代码:

[html]  view plain copy
  1. if(m_ToolBar.m_hWnd!=NULL)              //工具条  
  2.  {  
  3.   CRect rc;  
  4.   rc.top=rc.left=0;  
  5.   rc.right=cx;  
  6.   rc.bottom=80;  
  7.   m_ToolBar.MoveWindow(rc);     //设置工具条大小位置  
  8.  }  


8.Oninitdialog 中调用CreateToolBar函数:

[cpp]  view plain copy
  1. CreateToolBar();  


9.修改工具条里面各个图标的属性: 对应到右键菜单的功能ID,及顶部菜单的功能ID


10.修复最小化时出现的BUG:
在OnSize函数中,添加如下代码:

[cpp]  view plain copy
  1. if(SIZE_MINIMIZED == nType) // 如果是最小化,则直接跳出函数  
  2. {  
  3.  return;  
  4. }  


11.运行效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值