ToolbarDemo.cpp
上传用户:sz4588
上传日期:2021-04-13
资源大小:2399k
文件大小:6k
源码类别:

工具条

开发平台:

Visual C++

  1. // ToolbarDemo.cpp : Defines the entry point for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "ToolbarDemo.h"
  5. #include "mytoolbar.h"
  6. #define MAX_LOADSTRING 100
  7. // Global Variables:
  8. HINSTANCE hInst; // current instance
  9. TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
  10. TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
  11. // Forward declarations of functions included in this code module:
  12. ATOM MyRegisterClass(HINSTANCE hInstance);
  13. BOOL InitInstance(HINSTANCE, int);
  14. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  15. INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
  16. int APIENTRY _tWinMain(HINSTANCE hInstance,
  17.                      HINSTANCE hPrevInstance,
  18.                      LPTSTR    lpCmdLine,
  19.                      int       nCmdShow)
  20. {
  21. UNREFERENCED_PARAMETER(hPrevInstance);
  22. UNREFERENCED_PARAMETER(lpCmdLine);
  23.   // TODO: Place code here.
  24. MSG msg;
  25. HACCEL hAccelTable;
  26. // Initialize global strings
  27. LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
  28. LoadString(hInstance, IDC_TOOLBARDEMO, szWindowClass, MAX_LOADSTRING);
  29. MyRegisterClass(hInstance);
  30. // Perform application initialization:
  31. if (!InitInstance (hInstance, nCmdShow))
  32. {
  33. return FALSE;
  34. }
  35. hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TOOLBARDEMO));
  36. // Main message loop:
  37. while (GetMessage(&msg, NULL, 0, 0))
  38. {
  39. if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  40. {
  41. TranslateMessage(&msg);
  42. DispatchMessage(&msg);
  43. }
  44. }
  45. return (int) msg.wParam;
  46. }
  47. //
  48. //  FUNCTION: MyRegisterClass()
  49. //
  50. //  PURPOSE: Registers the window class.
  51. //
  52. //  COMMENTS:
  53. //
  54. //    This function and its usage are only necessary if you want this code
  55. //    to be compatible with Win32 systems prior to the 'RegisterClassEx'
  56. //    function that was added to Windows 95. It is important to call this function
  57. //    so that the application will get 'well formed' small icons associated
  58. //    with it.
  59. //
  60. ATOM MyRegisterClass(HINSTANCE hInstance)
  61. {
  62. WNDCLASSEX wcex;
  63. wcex.cbSize = sizeof(WNDCLASSEX);
  64. wcex.style = CS_HREDRAW | CS_VREDRAW;
  65. wcex.lpfnWndProc = WndProc;
  66. wcex.cbClsExtra = 0;
  67. wcex.cbWndExtra = 0;
  68. wcex.hInstance = hInstance;
  69. wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TOOLBARDEMO));
  70. wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
  71. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  72. wcex.lpszMenuName = MAKEINTRESOURCE(IDC_TOOLBARDEMO);
  73. wcex.lpszClassName = szWindowClass;
  74. wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
  75. return RegisterClassEx(&wcex);
  76. }
  77. CMyToolBar toolBar1;
  78. CMyToolBar toolBar2;
  79. //
  80. //   FUNCTION: InitInstance(HINSTANCE, int)
  81. //
  82. //   PURPOSE: Saves instance handle and creates main window
  83. //
  84. //   COMMENTS:
  85. //
  86. //        In this function, we save the instance handle in a global variable and
  87. //        create and display the main program window.
  88. //
  89. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  90. {
  91.    HWND hWnd;
  92.    hInst = hInstance; // Store instance handle in our global variable
  93.    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  94.       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
  95.    if (!hWnd)
  96.    {
  97.       return FALSE;
  98.    }
  99.   
  100.    toolBar1.CreateToolBar(WS_CHILD|WS_VISIBLE ,hWnd,1001,hInst);
  101.    toolBar1.SetButtonImages(16,16,IDB_BITMAP1,5);
  102.    
  103.    toolBar1.AddButton(0,BTNS_WHOLEDROPDOWN  ,0,323,_T("A"),3);
  104.    toolBar1.AddButton(0,BTNS_CHECKGROUP,1,32883,_T("B"),3);
  105.    
  106.    toolBar1.AddButton(0,BTNS_CHECK ,1,3283,_T("C"),3); 
  107.    toolBar1.AddNonButtonControl(_T("combobox"),WS_CHILD|WS_VISIBLE|WS_BORDER|CBS_DROPDOWNLIST,IDC_COMBO1,200,300,2,545);  
  108.    toolBar1.AddNonButtonControl(_T("edit"),WS_CHILD|WS_VISIBLE|WS_BORDER,IDC_EDIT1,200,0,3,565);  
  109.    
  110.    //SendMessage(toolBar1.hToolBar,TB_CHECKBUTTON ,323,TRUE);
  111.    //SendMessage(toolBar1.hToolBar,TB_CHECKBUTTON ,32883,TRUE);
  112.    //toolBar2.CreateToolBar(WS_CHILD|WS_VISIBLE ,hWnd,1002,hInst);
  113.    RECT rect;
  114.    GetClientRect(hWnd,&rect);
  115.    ShowWindow(hWnd, nCmdShow);
  116.    UpdateWindow(hWnd);
  117.    return TRUE;
  118. }
  119. //
  120. //  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
  121. //
  122. //  PURPOSE:  Processes messages for the main window.
  123. //
  124. //  WM_COMMAND - process the application menu
  125. //  WM_PAINT - Paint the main window
  126. //  WM_DESTROY - post a quit message and return
  127. //
  128. //
  129. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  130. {
  131. int wmId, wmEvent;
  132. PAINTSTRUCT ps;
  133. HDC hdc;
  134. switch (message)
  135. {
  136. case WM_COMMAND:
  137. wmId    = LOWORD(wParam);
  138. wmEvent = HIWORD(wParam);
  139. // Parse the menu selections:
  140. switch (wmId)
  141. {
  142. case 323:
  143. {
  144. /*HWND h=(HWND)SendMessage(toolBar1.hToolBar,TB_GETTOOLTIPS,0,0); 
  145. SetWindowText(h,_T("Toi di hoc"));
  146. ShowWindow(h,SW_SHOWNORMAL);*/
  147. //MessageBox(hWnd,_T("Vua nhan vao mot nut"),_T("Thong bao"),0);
  148. break;
  149. }
  150. case IDM_ABOUT:
  151. {
  152. DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
  153. break;
  154. }
  155. case IDM_EXIT:
  156. DestroyWindow(hWnd);
  157. break;
  158. case IDC_COMBO1:
  159. {
  160. switch (wmEvent)
  161. {
  162. }
  163. break;
  164. }
  165. case IDC_EDIT1:
  166. {
  167. switch(wmEvent)
  168. {
  169. }
  170. break;
  171. }
  172. default:
  173. return DefWindowProc(hWnd, message, wParam, lParam);
  174. }
  175. break;
  176. case WM_NOTIFY:
  177. {
  178. if (wParam==1001)
  179. {
  180. toolBar1.DoNotify(NULL,NULL,NULL,lParam);
  181. }
  182. break;
  183. }
  184. case WM_SIZE:
  185. {
  186. //SendMessage(toolBar1.hToolBar,TB_AUTOSIZE,0,0);
  187. //MoveWindow(toolBar1.hToolBar,100,100,400,100,TRUE);
  188. //MoveWindow(toolBar2.hToolBar,0,0,400,100,TRUE);
  189. EnableWindow(toolBar1.hToolBar,FALSE);
  190. break;
  191. }
  192. case WM_PAINT:
  193. hdc = BeginPaint(hWnd, &ps);
  194. // TODO: Add any drawing code here...
  195. EndPaint(hWnd, &ps);
  196. break;
  197. case WM_DESTROY:
  198. PostQuitMessage(0);
  199. break;
  200. default:
  201. return DefWindowProc(hWnd, message, wParam, lParam);
  202. }
  203. return 0;
  204. }
  205. // Message handler for about box.
  206. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  207. {
  208. UNREFERENCED_PARAMETER(lParam);
  209. switch (message)
  210. {
  211. case WM_INITDIALOG:
  212. return (INT_PTR)TRUE;
  213. case WM_COMMAND:
  214. if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  215. {
  216. EndDialog(hDlg, LOWORD(wParam));
  217. return (INT_PTR)TRUE;
  218. }
  219. break;
  220. }
  221. return (INT_PTR)FALSE;
  222. }