MFC
Windows MFC 现在看已经是过时了。就是想把一些之前遇到过的困难和学习笔记 记录下来。
DZWH
o(* ̄︶ ̄*)oo(* ̄︶ ̄*)oo(* ̄︶ ̄*)oo(* ̄︶ ̄*)o
展开
-
VS2008, MFC 文件的操作5 - 注册表 操作
接上一节笔记:VS2008, MFC 文件的操作4 - CFile类, CFileDialog类 方式 文本方式打开1. 在工程APP类,先在InitInstance中进行示范 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); //操作win.ini //::WriteProfileString(_T("xxxxxxxx.原创 2020-06-26 12:33:30 · 287 阅读 · 0 评论 -
VS2008, MFC 文件的操作4 - CFile类, CFileDialog类 方式 文本方式打开
接上一节笔记:VS2008, MFC 文件的操作3 - Win32 API 方式 文本方式打开1. 代码 及 点击 子菜单项 WriteFile 时候的可选文件void Cvs2008_SX_jiaocheng12View::OnFileWritefile(){ // TODO: 在此添加命令处理程序代 //CFilel类 //CFile file(L"5.txt",CFile::modeCreate | CFile::modeWrite); //file.Write(L"yyyyyx.原创 2020-06-26 11:36:14 · 398 阅读 · 0 评论 -
VS2008, MFC 文件的操作3 - Win32 API 方式 文本方式打开
接上一节笔记:VS2008, MFC 文件的操作2 - C++ 语言方式 文本方式打开1. 代码void Cvs2008_SX_jiaocheng12View::OnFileWritefile(){ // TODO: 在此添加命令处理程序代码//Win32 API 方式 HANDLE hFile; hFile = CreateFile(_T("4.txt"),GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL); DWO原创 2020-06-26 10:45:26 · 242 阅读 · 0 评论 -
VS2008, MFC 文件的操作2 - C++ 语言方式 文本方式打开
上一节是:VS2008, MFC 文件的操作1 - C语言方式 文本方式打开 / 二进制方式打开 读写 C本节接着 上一笔记1. 在工程view类中 增加头文件#include <fstream>2. 加入代码void Cvs2008_SX_jiaocheng12View::OnFileWritefile(){ // TODO: 在此添加命令处理程序代码//C++方式 ofstream ofs("3.txt"); ofs.write("xxxxxxxddddddddd原创 2020-06-26 10:18:14 · 271 阅读 · 0 评论 -
VS2008, MFC 文件的操作1 - C语言方式 文本方式打开 / 二进制方式打开 读写 C
1. 在菜单栏 新建 子菜单File 和菜单项 WriteFile,ReadFlile,并都添加 事件处理函数到工程view类中。2. 以文本新式打开 读写文件代码void Cvs2008_SX_jiaocheng12View::OnFileWritefile(){ // TODO: 在此添加命令处理程序代码 //C语言方式 FILE *pFile = fopen("1.txt","w");//Opens an empty file for writing. If the give原创 2020-06-25 23:08:44 · 642 阅读 · 0 评论 -
VS2008, MFC 编程 对话框 笔记6 - 属性表单 TAB 页面2 - 向导属性表单 List Box Combo Box
本部分需要 查看 我的另一篇:VS2008, MFC 编程 对话框 笔记6 - 属性表单 TAB 页面1 - 点击子菜单 显示建立的属性对话框1. 在上一篇, 成功的实现了点击 子菜单 PropertyPage 弹出 属性表单对话框,只需要在 建立模态对话框之前加入 设置向导模式就可以,函数为 SetWizardMode();void Cvs2008_SX_jiaocheng08_1View::OnPropertypage(){ // TODO: 在此添加命令处理程序代码 CPropShee原创 2020-06-25 16:56:26 · 360 阅读 · 0 评论 -
VS2008, MFC 编程 对话框 笔记6 - 属性表单 TAB 页面1 - 点击子菜单 显示建立的属性对话框
1. 插入属性表单,在资源视图中 右键Diag,选择 添加资源, 在Dialog展开项 可以看到三种PROPPAGE的属性页。选择IDD_PROPPAGE_LARGE页插入 3个PROPPAGE。ID 分别为 IDD_PROP1,IDD_PROP2,IDD_PROP3. caption分别改为 Page1,Page2,Page3.2. 给新建的3个PROPPAGE添加控件 如下:3. 针对3个PROPAGE属性框 建立3各基类为CPropertyPage,的类:CProp1,CPro原创 2020-06-24 23:13:24 · 428 阅读 · 0 评论 -
VS2008, MFC 编程 对话框 笔记5 - 逃跑按钮的实现(鼠标指到某按钮,则按钮消失)
原理:当鼠标指到 escape 按键,则当前escape消失 另外一个显示。1. 新增加一个类 基类为CButton,右键工程,2. 控件关联成员变量 成员变量放到工程Dlg类中,成员变量类型为步骤1 中创建的类CDyBtn。3. 给新增加的类CDyBtn 增加windows消息WM_MOUSEMOVE响应的函数OnMouseMove:(因为是button类 所以只有到鼠标移动到button上才响应WM_MOUSEMOVE)4. 在工程Dlg 的OnInitDia原创 2020-06-24 18:58:50 · 424 阅读 · 1 评论 -
VS2008, MFC 编程 对话框 笔记4 - 实现回车键 在Edit Control控件 焦点切换
1. 把Edit Control 控件属性Multiline设置为False2. 在default 按钮 OnOK函数里操作:(OnOK 函数 ,不管 确定 按钮存在与否,都会被调用,以做默认操作)如果要使用自定义的buton去做OnOK(比如 默认 确定 按钮不见了),一定要把自定义的button 的ID改为IDOK。void CtestDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码// OnOK(); 注释掉基类的 OnOK调用 那么在按原创 2020-06-24 17:50:54 · 340 阅读 · 0 评论 -
VS2008, MFC 编程 对话框 笔记3 - 实现回车键 在Edit Control控件 输入焦点切换(此方法比较麻烦)
1. 一般情况,当按回车键 会触发default按键,而一般来讲是 确定 按钮 ,此时会程序会退出,原因是 确定 按钮 的Defalut Button属性 设为true,过程中调用了基类的OnOK函数:2. 在新建的Dialog类中,增加 Windows 消息处理INITDIALOG,但是不太一样的是 要在重写里面添加3. 用来转移焦点的Edit control控件的属性 Multiline 设为True4.双击 资源视图 dialog的 确定 按钮 实现一个OnBnClickedO原创 2020-06-24 17:16:35 · 628 阅读 · 0 评论 -
VS2008, MFC 编程 对话框 笔记2 - 实现展开收缩对话框
1. 当点击Unexpand的时候 图像控件 以下部分展开,再次点击 图像控件以下部分收缩;Dialog图:2.实现功能的代码 ,请参看注释:void CtestDlg::OnBnClickedButton2(){ // TODO: 在此添加控件通知处理程序代码 CString str; if(GetDlgItemText(IDC_BUTTON2,str),str == L"Unexpand<<")//点击Unexpand 呈展开显示文字 { SetDlgItem原创 2020-06-24 15:51:58 · 301 阅读 · 0 评论 -
VS2008, MFC 编程 对话框 笔记1
1. 静态文本框要响应鼠标单击 就要设置其属性中的Notify 为True,同时改变其ID,以使得其ID 与其他静态文本ID不同.2. 实现 点击 静态文本改变 其内容的代码void CtestDlg::OnStnClickedNumber1(){ // TODO: 在此添加控件通知处理程序代码 CString str; if( GetDlgItem(IDC_NUMBER1)->GetWindowTextW(str),str ==L"Number1")//GetDlgIt..原创 2020-06-24 14:51:51 · 498 阅读 · 0 评论 -
VS2019, MFC 使用按键动态给对话框上添加一个按钮
1 . 当点击ADD 会在对话框中新增一个按钮,属性:2. 见代码注释void CTestDlg::OnBnClickedBtnAdd(){ // TODO: 在此添加控件通知处理程序代码 /*方法1 if (FALSE == m_bIsCreate)//m_bIsCreate是CTestDlg 的bool类型成员,在构造函数中初始化为FALSE { //当多次点击ADD 按钮就不会增加或消失 一个DDD按钮,就不会因多次装载而报错。原创 2020-06-24 11:42:43 · 3629 阅读 · 0 评论 -
VS2019, MFC 模态对话框与非模态对话框
1. 模态对话框 显示时,应用程序被暂停,只有模态对话框关闭了 才能操作其他应用.2. 非模态对话框 显示时 其他程序仍然可以运行。3. 首先建立一个对话框3.1 在资源视图 右键Dialog 增加一个IDD_DIALOG13.2 右键 Dialog面板 为其增加CDialog 类CTestDlg4. 增加菜单项,用于当点击菜单项时候 弹出新建的 对话框。设为非Popup类型,ID:ID_DIALOG4.1 右键子菜单 ”对话框“ ,为其添加“事件处理程序(A)...”.原创 2020-06-24 11:01:31 · 2124 阅读 · 0 评论 -
VS2008, MFC view类中实现一个电话簿程序
功能为:往view窗口输入 信息(姓名 电话)然后回车,则在子菜单的菜单项增加一项。通过点击增加的菜单项,又可以显示 窗口输入的信息(姓名 电话)1. 在View类中增加一个windows消息响应WM_CHAR,这样所有键盘的消息都会在OnChar消息响应函数中被捕获。实现函数 参看代码注释void CxxxxView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CC...原创 2020-06-23 17:09:58 · 253 阅读 · 0 评论 -
VS2008, MFC 动态添加菜单项
1. 在CMainFrame类的OnCreate函数的最后的TODO::后面添加代码,如下:见代码注释:int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP原创 2020-06-23 15:31:30 · 381 阅读 · 0 评论 -
vs2019, MFC 如何在视类窗口添加右键弹出菜单功能
1. 添加一个menu资源2.在view类中增加一个右键WM 消息处理,在消息响应函数OnRButtonDown中添加如下代码:void CxxxxView::OnRButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CMenu menu; menu.LoadMenuW(IDR_MENU2);//装载创建的menu资源 CMenu* pPopup = menu.GetSubMenu(0); C原创 2020-06-23 11:57:38 · 1420 阅读 · 0 评论 -
vs2019, MFC 工具栏和菜单项,disable和enable操作
1. 要使得工具栏与菜单项同步,只需要把菜单项的ID号与工具栏的ID号一致即可。如子菜单编辑(E)>>剪切(I)的ID:ID_EDIT_CUT,那么工具栏这个图标的ID:ID_EDIT_CUT.2. Enable或disable一个菜单项,在资源视图里面右键菜单项,如下添加UPDATE_COMMAND_UI,在CFRAME类中。在生成的函数OnUpdateEditCut添加代码void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI){.原创 2020-06-23 11:17:14 · 2805 阅读 · 0 评论 -
VS2019, MFC 菜单以及菜单相关编程---标记菜单/缺省菜单项
1. Menu消息在各个类中的响应顺序:view类->DOC 类->Frame类->APP 类2.要实现标记菜单可以在 CMainFrame OnCreate成员中进行。即在窗口创建完成之后,在OnCreate函数最后加入如下代码://GetMenu()->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);//设置菜单项check状态 // Get the main window's m.原创 2020-06-22 21:50:54 · 1945 阅读 · 0 评论 -
VS2019, MFC 光标文字操作
1. 如何创建光标显示在view类中1.1 创建OnCreate函数,在view类上右键>>属性,然后在选择WM消息中的OnCreate1.2, 在Oncreate中添加如下代码(详细见代码及注释,取消代码中的注释以打开功能即可)int CxxxxView::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO:原创 2020-06-22 20:18:50 · 2743 阅读 · 0 评论 -
VS2019, MFC 在view类实现画图(直线,线的颜色,粗细,扇形...)
1,添加鼠标左键按下Windows Message的响应函数OnLButtonDown;添加鼠标左键弹起响应函数OnLButtonUp。右键view类>>属性,然后在WM消息中选择OnLButtonDown和OnLButtonUp.2. 在view类中添加成员变量,各个变量的使用原因见注释3. 在OnLButtonDown函数中 获取/保存 鼠标原点 (鼠标左键按下去时刻的坐标)和写标号m_bDrav = TRUE4.在OnButtonUp函数中实现画线(..原创 2020-06-22 15:28:12 · 4653 阅读 · 0 评论 -
vs2019,MFC 如何在View类中添加一个按钮
首先,在CxxxView类中添加一个CButton成员m_btn (xxx表示你创建的工程名)其次,右键View类>>属性,如下图选择Windows Message 添加OnCreate函数然后,在OnCreate函数中添加button运行,看到添加的button显示在视类窗口范围,(根据自己的需要调整button的大小及位置)重点:关于CButton类提供的成员函数Create 和CButton的父类CWnd提供的ShowWindow说明如下:...原创 2020-06-22 14:40:09 · 4018 阅读 · 0 评论 -
vs2019 MFC 如何在框架类中实现添加一个按钮button
首先, 在框架类CMainFrame中添加一个CButton m_btn的成员然后,在框架类CMainFrame中OnCreate 函数最后添加创建button的函数并显示button最后运行,可以看到显示添加的button在框架显示栏范围内(根据需要调整button大小位置让其显示在合理位置即可)重点:关于CButton类提供的成员函数Create 和CButton的父类CWnd提供的ShowWindow说明如下: Create Creates th原创 2020-06-22 14:27:11 · 7270 阅读 · 0 评论 -
VS2019,MFC 加事件处理程序(A) 无效,不能使用添加事件处理程序(A)...
应该是安装过程,选择工作负载的时候少了MFC项。如下图,(安装时尽可能全勾选吧)原创 2020-06-19 14:54:22 · 2935 阅读 · 3 评论 -
VS2019的MFC中如何添加windows消息函数
如下图所示:右键类>>属性,这个时候弹出属性对话框。里面就有消息。选择想要得到的消息响应:如<add>OnCreate 即可。原创 2020-06-19 14:47:25 · 1761 阅读 · 0 评论 -
无法将参数 1 从“WCHAR [100]”转换为“char *”
使用window提供的wcscpy_s 可以解决 errno_t wcscpy_s( wchar_t *strDestination, size_t numberOfElements, const wchar_t *strSource ); 例如:WCHAR szWindowClass[MAX_LOADSTRING]; wcscpy_s(szWindowClass, L"xxxxxxx"); //把“xxxxxxx” copy到szWindowCla..原创 2020-06-13 16:19:32 · 1010 阅读 · 0 评论 -
如何修改vs2008修改编译选项,将/MD或/MDd 改为 /MT或/MTd
当需要解决exe不能在其他电脑运行时,有一种解决方案时修改编译选项把MD或MDd改为MT或MTD,那么VS2008这个编译选项的位置 在哪里。看下图。进入工程属性(这个应该知道在哪吧)另一种就是决绝exe不能在其他电脑运行的方法是,设置工程为静态编译(静态库)...原创 2018-05-11 10:57:11 · 3828 阅读 · 1 评论 -
VS2008 MFC 的components和controls中的组件Splash Screen的启动界面
还遗憾!我装的VisualStudio2008中并未找到这个Splash screen组件。但是也不必遗憾,软件的一大特点就是可移植,软件攻城狮的特点就是站在巨人的肩膀上---其实就是一个字“抄”。本文是完全参考孙鑫MFC编程第9课的VC6.0代码完成!如果有MFC编程经验和C++软件编程经验的同志,请直接跳到本文“2.参考代码”看代码即可,因为不难,就是拷贝代码而已!本文是对0基础讲解!原创 2018-02-07 14:59:08 · 712 阅读 · 0 评论 -
CButton类的继承+重写--本类来自孙鑫老师C++课堂
本类摘自孙鑫老师C++课堂,如果转载请注明!直接将头文件和CPP文件加入工程,利用类成员函数对Button控件进行设置(颜色、边框、背景等。。。)头文件↓//// Class: CButtonST//// Compiler: Visual C++// Tested on: Visual C++ 5.0//// Version: See GetVersionC() or GetVersionI()...转载 2018-02-27 11:18:52 · 723 阅读 · 0 评论 -
VS2008MFC编程资源视图的Dialog测试按钮在哪里?
1.菜单栏 格式(O)->测试对话框(T)2.工具栏上找到图标,点击即可原创 2018-01-29 14:56:55 · 990 阅读 · 0 评论 -
“static_cast”: 无法从“void (__thiscall CMainFrame::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,L
现在有VS2017版本了,但是我还是用着VS2008,最近有个很早的工程,我用VS2008打开转换后,提示如下:“static_cast”: 无法从“void (__thiscall CMainFrame::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM).这个提示很明显了就是这个消息 函数形式要改变形式,1.增加一个原创 2018-02-02 11:50:46 · 942 阅读 · 1 评论 -
VS2008MFC中创建的基于Dialog的工程无法使用Dialog上Button按键新建CButton类?
1.按如下图示方式添加,然后选择MFC 添加MFC类2.如果首先在Button按键上右键添加,则基类下拉框 得不到CButton基类原创 2018-01-25 17:12:08 · 566 阅读 · 0 评论