大的网站制作,pc网站建设费用,做设计的网站定制,五常网站建设基本概念
MFC Microsoft Fundation class 微软基础类库
框架 基于Win32 SDK进行的封装 属性#xff1a;缓解库关闭
属性-C/C/代码生成/运行库/MTD
属性-常规-MFC的使用#xff1a;在静态库中使用MFC#xff0c;默认是使用的共享DLL#xff0c;运行时库
SD…基本概念
MFC Microsoft Fundation class 微软基础类库
框架 基于Win32 SDK进行的封装 属性缓解库关闭
属性-C/C/代码生成/运行库/MTD
属性-常规-MFC的使用在静态库中使用MFC默认是使用的共享DLL运行时库
SDK版本开发软件的套件
WSK开发驱动的套件 MFC基于类的管理
预编译头
Demo01.h
Demo01.cpp
Demo01Dlg.cpp Demo01Dlg.h 绑定在对话框上的类 类的继承关系 Cobject处理序列化以及反序列化 CCmdTarget处理WM_COMMAND消息 CWnd窗口类 CDialog对话框 CDialogEx对话框 Demo01Dlg自己创建的对话框 OnInitDialog对话框MFC框架的入口 MFC里和窗口句柄有关的函数均不需要填写窗口句柄函数 如果需要添加作用域强行退出MFC的命名空间 模态对话框 非模态对话框
MFC中依然支持SDK的做法 类绑定
添加类类名
MFC绑定变量
值类型
控件类型
复习总结 创建MFC项目的时候项目名称中不能出现中文。 如果想要兼容让其他没有安装visual studio的计算机使用那么就要使用在静态链接库中使用MFC MFC是基于类的 Practice.h 该文件为我们创建了CPracticeApp类 类的继承关系 上面还有很多 CWinThread应用程序线程继承CCmdTarget CWWinApp对话框继承CWinThread CPraticeApp是我们自己的应用程序类继承CWinApp PracticeDlg.h 这个头文件中是我们自己创建的对话框类 类继承关系 CObject基础类库中的主体基类处理序列化与反序列化 CCmdTarget消息映射结构体系类继承Cobject CWnd窗口类继承CCmdTarget CDialog对话框类继承CWnd CDialogEx对话框类继承CDialog CPraticeDlg我们自己的对话框类继承CDialogEx
相关操作 按钮操作在对话框上双击按钮即可编辑相关操作 添加对话框比如说要在某个按钮上添加对话框首先需要画出对话框然后双击添加MFC类在要显示的时候先用这个类声明一个变量然后使用DoModal方法也可以先new出该对话框的类然后使用Create方法创建出对话框但是这种方法需要ShowWindow方法 实例 第一种 CDialogOne obj;obj.DoModal();第二种 CDialogTwo *obj NULL;obj new CDialogTwo;obj-Create(IDD_DIALOG2, this);obj-ShowWindow(SW_SHOW);可以在按钮上添加变量比如说在一个按钮上添加了一个文本框变量将其添加为值的形式字符串类型那么我们在处理按钮的时候可以直接 其中UpDateData方法的作用是同步 UpdateData(TRUE);m_EDIT L欢迎来到MFC的世界;UpdateData(FALSE);在MFC中有很多消息是自己处理了我们并不用关心但是如果我们要自己处理消息 处理SendMessage消息 在对话框中使用类向导添加OnWndMsg方法在OnOwnMsg方法中我们可以像SDK那样处理消息。 BOOL CPracitceDlg::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{// TODO: 在此添加专用代码和/或调用基类switch (message) {case WM_KEYDOWN: {switch (wParam) {case VK_F4: {MessageBox(LF!, LMSG, NULL);break;}}break;}case WM_LBUTTONDOWN: {MessageBox(LWM_LBUTTONDOWN, LMSG, NULL);break;}case 199: {MessageBox(LSEND199, LMSG, NULL);break;}case 200: {break;MessageBox(LSEND200, LMSG, NULL);}case 201: {MessageBox(LSEND201, LMSG, NULL);break;}case 202: {MessageBox(LSEND202, LMSG, NULL);break;}}return CDialogEx::OnWndMsg(message, wParam, lParam, pResult);
}处理PostMessage消息 在对话框中使用类向导添加PreTranslateMessage方法在PreTranslateMessage方法中我们可以像SDK那样处理消息。 BOOL CPracitceDlg::PreTranslateMessage(MSG* pMsg)
{// TODO: 在此添加专用代码和/或调用基类switch (pMsg-wParam) {case 199: {MessageBox(LPOST199, LMSG, NULL);break;}case 200: {break;MessageBox(LPOST200, LMSG, NULL);}case 201: {MessageBox(LPOST201, LMSG, NULL);break;}case 202: {MessageBox(LPOST202, LMSG, NULL);break;}}return CDialogEx::PreTranslateMessage(pMsg);
}SendMessage会等待消息响应会阻塞所以会按照顺序来但是PostMessage不会等待消息返回所以导致顺序倒置 void CPracitceDlg::OnBnClickedButton1()
{//CDialogOne obj;//obj.DoModal();///*//HWND hEdit1Dlg ::GetDlgItem(m_hWnd, IDC_EDIT1);//::SetWindowText(hEdit1Dlg, L欢迎来到MFC的世界);*///UpdateData(TRUE);//m_EDIT L欢迎来到MFC的世界;//UpdateData(FALSE);//SendMessage(199, NULL, NULL);//SendMessage(200, NULL, NULL);//SendMessage(201, NULL, NULL);//SendMessage(202, NULL, NULL);PostMessage(199, NULL, NULL);PostMessage(200, NULL, NULL);PostMessage(201, NULL, NULL);PostMessage(202, NULL, NULL);
}