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

状态条

开发平台:

Visual C++

  1. // StatusBarDemo.cpp : Defines the entry point for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "StatusBarDemo.h"
  5. #include "mystatusbar.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_STATUSBARDEMO, 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_STATUSBARDEMO));
  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_STATUSBARDEMO));
  70. wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
  71. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  72. wcex.lpszMenuName = MAKEINTRESOURCE(IDC_STATUSBARDEMO);
  73. wcex.lpszClassName = szWindowClass;
  74. wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
  75. return RegisterClassEx(&wcex);
  76. }
  77. CMyStatusBar statusBar1;
  78. //
  79. //   FUNCTION: InitInstance(HINSTANCE, int)
  80. //
  81. //   PURPOSE: Saves instance handle and creates main window
  82. //
  83. //   COMMENTS:
  84. //
  85. //        In this function, we save the instance handle in a global variable and
  86. //        create and display the main program window.
  87. //
  88. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  89. {
  90.    HWND hWnd;
  91.    hInst = hInstance; // Store instance handle in our global variable
  92.    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  93.       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
  94.    if (!hWnd)
  95.    {
  96.       return FALSE;
  97.    }
  98.    statusBar1.CreateStatusBar(WS_CHILD|WS_VISIBLE|SBARS_SIZEGRIP |SBARS_TOOLTIPS ,hWnd,12345,hInst);
  99.    
  100.    int Arr[]={100,300,-1};
  101.    SendMessage(statusBar1.GetHandle(),SB_SETPARTS, 3,(LPARAM)&Arr);
  102.    SendMessage(statusBar1.GetHandle(),SB_SETICON, 1,(LPARAM)LoadIcon(hInstance, MAKEINTRESOURCE(IDI_STATUSBARDEMO)));
  103.    SendMessage(statusBar1.GetHandle(),SB_SETMINHEIGHT, 100,(LPARAM)0);
  104.    SendMessage(statusBar1.GetHandle(),SB_SETTEXT, 1,(LPARAM)_T("Toi di hoc"));
  105.    SendMessage(statusBar1.GetHandle(),SB_SETTIPTEXT, 1,(LPARAM)_T("Toi di hoc nha"));
  106.    
  107.    RECT rect;
  108.    SendMessage(statusBar1.GetHandle(),SB_GETRECT, 1,(LPARAM)&rect);
  109.    
  110.    int A[3];
  111.    SendMessage(statusBar1.GetHandle(),SB_GETPARTS, 3,(LPARAM)&Arr);
  112.    int len=SendMessage(statusBar1.GetHandle(),SB_GETTEXTLENGTH, 1,0);
  113.    
  114. //   SendMessage(statusBar1.GetHandle(),SB_GETTEXT, 1,(LPARAM)buf);
  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 IDM_ABOUT:
  143. DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
  144. break;
  145. case IDM_EXIT:
  146. DestroyWindow(hWnd);
  147. break;
  148. default:
  149. return DefWindowProc(hWnd, message, wParam, lParam);
  150. }
  151. break;
  152. case WM_PAINT:
  153. hdc = BeginPaint(hWnd, &ps);
  154. // TODO: Add any drawing code here...
  155. EndPaint(hWnd, &ps);
  156. break;
  157. case WM_DESTROY:
  158. PostQuitMessage(0);
  159. break;
  160. case WM_SIZE:
  161. SendMessage(statusBar1.GetHandle(),WM_SIZE,0,0);
  162. break;
  163. default:
  164. return DefWindowProc(hWnd, message, wParam, lParam);
  165. }
  166. return 0;
  167. }
  168. // Message handler for about box.
  169. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  170. {
  171. UNREFERENCED_PARAMETER(lParam);
  172. switch (message)
  173. {
  174. case WM_INITDIALOG:
  175. return (INT_PTR)TRUE;
  176. case WM_COMMAND:
  177. if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  178. {
  179. EndDialog(hDlg, LOWORD(wParam));
  180. return (INT_PTR)TRUE;
  181. }
  182. break;
  183. }
  184. return (INT_PTR)FALSE;
  185. }