网站建设的三要素,广州手机网站建设公司哪家好,怎么查看网站后台地址,大学生做家教网站1.什么是MFC?全称是Microsoft Foundation Class Library#xff0c;我们称微软基础类库。它封装了windows应用程序的各种API以及相关机制的C类库MFC是一个大的类库MFC是一个应用程序框架MFC类库常用的头文件afx.h-----将各种MFC头文件包含在内afxwin.h-------包含了各种MFC窗…1.什么是MFC?全称是Microsoft Foundation Class Library我们称微软基础类库。它封装了windows应用程序的各种API以及相关机制的C类库 MFC是一个大的类库 MFC是一个应用程序框架MFC类库常用的头文件afx.h-----将各种MFC头文件包含在内afxwin.h-------包含了各种MFC窗口类。包含了afx.h和windows.h。afxext.h-------提供了扩展窗口类的支持例如工具栏状态栏等。2.底层实现窗口1.1 sdk apl句柄1.2 消息处理机制1.3 头文件windows.h1.4 程序入口 winMain具体6个步骤1.设计窗口 WNDCLASS wc; 2. 注册窗口 RegisterClass(wc);3.创建窗口 CreateWindow4.显示和更新 ShowWindow(hwnd, SW_SHOWNORMAL); UpdateWindow(hwnd);5.通过循环取消息 MSG msg;5.1 写循环 while5.2 GetMessagefalse退出循环5.3 翻译消息5.4分发消息6.窗口过程6.1 LRESULT CALLBACK WindowPro6.2 返回值用默认处理方式6.3 return DefWindowProc(hwnd,uMsg,wParam,lParam); 6.4 点击叉子 WM_CLOSE destroy6.5 WM_DESTROY PostQuitMessage(0)#include Windows.h//底层实现窗口的头文件//程序入口//6.处理窗口的过程LRESULT CALLBACK WindowPro(HWND hwnd, // 消息所属的商句柄UINT uMsg,//具体消息.名称―BOX 消息名WPARAM wParam, //键盘附加消息LPARAM lParam //鼠标附加消息){switch (uMsg) {case WM_CLOSE://所有xxxWindow为结尾的方法﹐都不会进入到消息队列中而是直接执行DestroyWindow(hwnd); // Destroyindown 发送另一个消息 WM__DESTROYbreak;case WM_DESTROY:PostQuitMessage(0);//真正的关闭窗口break;case WM_LBUTTONDOWN:{int xPos LOWORD(lParam);int yPos HIWORD(lParam);char buf[1024];wsprintf(buf, TEXT(x%d,y%d), xPos, yPos);//拼接字符串MessageBox(hwnd, buf, TEXT(鼠标左键按下), MB_OK);break;}case WM_KEYDOWN: //键盘MessageBox(hwnd, TEXT(键盘按下), TEXT(键盘键按下0000), MB_OK);break;case WM_PAINT: //绘图{PAINTSTRUCT ps; //绘图结构体HDC hdc BeginPaint(hwnd, ps); //开始画图//画文字TextOut(hdc, 100, 100, TEXT(hello), strlen(HELLO));//结束画图EndPaint(hwnd,ps);}break;}//返回值用默认处理方式return DefWindowProc(hwnd,uMsg,wParam,lParam);}//WINAPI代表 _stdcall参数的传递顺序。从右到左 以此入栈并且在函数返回前 清空堆栈int WINAPI WinMain( HINSTANCE hInstance, // 应用程序实例句柄 HINSTANCE hPrevInstance, // 上一个应用程序句柄, 在win32环境下参数一般为NUL不起作用了 LPSTR lpCmdLine,//char * argv[] int nShowCmd //显示命令最大化、最小 、正常){//1、设计窗口 //2、注册窗口//3、创建窗口//4、显示和更新//5、通过循环取清息//6、处理消息(窗口过程)//设计窗口WNDCLASS wc;wc.cbClsExtra 0;//额外的内存wc.cbWndExtra 0;//窗口额外的内存wc.hbrBackground (HBRUSH)GetStockObject(WHITE_BRUSH);//设置背景wc.hCursor LoadCursor(NULL, IDC_HAND);//设置光标如果第一个参数为MLL代表使用系统提供的光标wc.hIcon LoadIcon(NULL, IDI_ERROR);//图标――如果第一个参数为NLL代表使用系统提供的光标wc.hInstance hInstance;//应用程序实例句柄传入inMlain中的形参即可wc.lpfnWndProc WindowPro; //回调函数窗口过程wc.lpszClassName TEXT(WIN); //指定窗口类名称wc.lpszMenuName NULL;//菜单名称wc.style 0; //显示风格0代表默认风格//2.注册窗口RegisterClass(wc);//3.创建窗口/*lpClassName, 类名lpWindowName, 标题名dwStyle, WS_OVERLAPPEDWINDOW 风格x, 显示坐标 CW_USEDEFAULT 默认值y,\ nWidth,宽高 nHeight, hWndParent,父窗口 hMenu, 菜单 NULL hInstance, 实例句柄 hInstance lpParam)\ 附加值 NULL*/HWND hwnd CreateWindow(wc.lpszClassName,TEXT(WINDOWS),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,NULL,NULL,hInstance,NULL);//4.显示和更新ShowWindow(hwnd, SW_SHOWNORMAL);UpdateWindow(hwnd);//5.通过循环取消息/*HWND hwnd; 主窗口句柄 UINT message; 具体消息名称 WPARAM wParam; 附加消息键盘消息 LPARAM lParam; 附加消息鼠标 DWORD time; 消息产生时间 POINT pt; 附加消息 鼠标消息 x y*/MSG msg;while (GetMessage(msg, NULL, 0, 0) FALSE) {/*_Out_ LPMSG lpMsg,消息 _In_opt_ HWND hWnd, 捕获窗口填NULL代表捕获所有的窗口 _In_ UINT wMsgFilterMin,最小最大的过滤的消息 一般填入0 _In_ UINT wMsgFilterMax*///关闭了退出循环/*if(GetMessage(msg, NULL, 0, 0)FALSE){break;}*///翻译消息TranslateMessage(msg);//不是false分发消息DispatchMessage(msg);}return 0;}3.利用mfc创建窗口3.1 mfc头文件 afxwin.h3.2 自定义类 继承于CWinApp 应用程序类 MyApp app应用程序对象﹐有且仅有一个3.3 程序入口 InitInstance()3.4 入口里 创建窗口3.5 窗口类MyFrame 继承于 CFrameWnd3.6 MyFrame构造中create(NULL标题名称)3.7 创建窗口对象√3.8 显示和更新3.9 m_pMainWnd frame; //保存指向应用程序的主窗口的指针3.10 return TRUE3.11 对项目进行配置 在共享DLL中使用MFRC3.12遇到 LNK2019: 无法解析的外部符号 _main该符号在函数 ___tmainCRTStartup 中被引用 MSVCRTD.lib test。解决方案