MFC入门之---Windows编程基本原理

来源:互联网 发布:阿里丁丁办公软件 编辑:程序博客网 时间:2024/06/11 22:05

Windows程序以消息循环为基础,编写Windows程序的基本过程是:1、设计窗口类;2、创建窗口,用变量保存窗口句柄;3、显示及刷新窗口;4、定义消息结构体,开始消息循;5、书写窗口过程函数

#include <windows.h>#include <stdio.h>LRESULT CALLBACK WindowProc(  HWND hwnd,      // handle to window  UINT uMsg,      // message identifier  WPARAM wParam,  // first message parameter  LPARAM lParam   // second message parameter);int WINAPI WinMain(  HINSTANCE hInstance,      // handle to current instance  HINSTANCE hPrevInstance,  // handle to previous instance  LPSTR lpCmdLine,          // command line  int nCmdShow              // show state  ){//设计窗口类WNDCLASS wndcls;wndcls.cbClsExtra = 0;wndcls.cbWndExtra = 0;wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wndcls.hCursor = LoadCursor(NULL, IDC_ARROW);wndcls.hIcon = LoadIcon(NULL, IDI_APPLICATION);wndcls.hInstance = hInstance;wndcls.lpfnWndProc = WindowProc;wndcls.lpszClassName = "2012";wndcls.lpszMenuName = NULL;wndcls.style = CS_HREDRAW | CS_VREDRAW;RegisterClass(&wndcls);//创建窗口,用变量保存窗口句柄HWND hwnd;hwnd = CreateWindow("2012", "chuan609956435@gmail.com", WS_OVERLAPPEDWINDOW, 0, 0, 640, 400, NULL, NULL, hInstance, NULL);//显示及刷新窗口ShowWindow(hwnd, SW_SHOWNORMAL);UpdateWindow(hwnd);//定义消息结构体,开始消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}//窗口过程函数LRESULT CALLBACK WindowProc(  HWND hwnd,      // handle to window  UINT uMsg,      // message identifier  WPARAM wParam,  // first message parameter  LPARAM lParam   // second message parameter){switch(uMsg){case WM_CHAR:char szChar[20];sprintf(szChar, "char code is %d", wParam);MessageBox(hwnd, szChar, "char", 0);break;case WM_LBUTTONDOWN:MessageBox(hwnd, "mouse clicked", "message", 0);HDC hdc;hdc = GetDC(hwnd);TextOut(hdc, 0, 50, "2012", strlen("2012"));ReleaseDC(hwnd, hdc);break;case WM_PAINT:HDC hDC;PAINTSTRUCT ps;hDC = BeginPaint(hwnd, &ps);TextOut(hDC, 0, 0, "609956435@qq.com", strlen("609956435@qq.com"));EndPaint(hwnd, &ps);break;case WM_CLOSE:if (IDYES == MessageBox(hwnd, "是否真的结束?", "message", MB_YESNO)){DestroyWindow(hwnd);}break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, uMsg, wParam, lParam);}return 0;}

原创粉丝点击