這樣使添加處理消息函數變得簡單數組
步驟1: 頭文件中添加相關項ide
步驟2: cpp添加具體實現方法函數
步驟3: 結構體數組中添加相關項ui
.h 文件:spa
- struct DecodeUint{
- UINT meesage;
- LONG (*fun)(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
- };
- #define dim(x) (sizeof(x)/sizeof(x[0]))
- LONG OnDestory(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
- LONG OnPaint(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
.c文件:code
- #include <Windows.h>
#include "Border.h"- struct DecodeUint MainMessageProc[] = {
- WM_DESTROY,OnDestory,
- WM_PAINT,OnPaint,
- };
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
- int WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPTSTR lpCmdLine,
- int nCmdShow)
- {
- WNDCLASS wc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
- wc.hCursor = NULL;
- wc.hIcon = NULL;
- wc.hInstance = hInstance;
- wc.lpfnWndProc = WndProc;
- wc.lpszClassName = TEXT("hello");
- wc.lpszMenuName = NULL;
- wc.style = CS_HREDRAW | CS_VREDRAW;
- if (!RegisterClass(&wc)) return -1;
- HWND hWnd = CreateWindow(TEXT("hello"),TEXT("helloworld"), WS_VISIBLE | WS_BORDER | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_CAPTION,
- 10,10,320,240,NULL,NULL,hInstance,NULL);
- UpdateWindow(hWnd);
- ShowWindow(hWnd,nCmdShow);
- MSG msg;
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return 1;
- }
- LONG OnDestory(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- PostQuitMessage(1);
- return TRUE;
- }
- LONG OnPaint(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- PAINTSTRUCT ps;
- HDC hdc;
- RECT rect;
- GetClientRect(hWnd,&rect);
- hdc = BeginPaint(hWnd,&ps);
- DrawText(hdc,TEXT("hello world"),-1,&rect,DT_VCENTER | DT_CENTER);
- EndPaint(hWnd,&ps);
- return TRUE;
- }
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- for (int i = 0;i < dim(MainMessageProc); i++)
- {
- if (MainMessageProc[i].meesage == message)
- {
- (*MainMessageProc[i].fun)(hWnd,message,wParam,lParam);
- }
- }
- return DefWindowProc(hWnd,message,wParam,lParam);
- }