
MFC随笔
猪猪加大码力
What doesn't kill you makes you stronger.
展开
-
VS2013崩了,打不开资源文件了
之前和大佬合并完代码,忽然发现VS资源管理器的.rc文件打不开了。就这样:VS崩掉了。。。但是,想想也是啊。VS也是软件,是软件就可能存在bug,有bug我们就解决它。【尝试解决】1.rc文件打不开,就到项目路径下去找到对应的Resource Script文件:2.打开SVN,仔细比对文件差异。3.对比出来异常。箭头指向,Mine的3078行两个END并行了。这会不会是问题所在呢?不知道,拆开保存后试试。4.现在打开试试,成功。小结:1.项目Merge需要仔细处理每个冲突,原创 2021-11-15 22:23:33 · 724 阅读 · 0 评论 -
MFC进度条学习笔记
最近工作中有使用到进度条的知识,就来学习学习这个控件~~先来看看想要达到的效果:好的,现在开始正题。我们这里的进度条,在程序里面叫做CProgressCtrl,它是继承自CWnd类的基础控件类,用来展示工作进展度。1、主线程的处理方式。1.1先给我们的控件添加一个环境变量,起个名字就叫做: CProgressCtrl m_progressCtrl;1.2 接着,在对话框初始化的时...原创 2019-11-09 19:54:55 · 1051 阅读 · 0 评论 -
MFC保存BMP、JPG、PNG图片
最近用户反映软件里面的图片保存只有bmp格式,体验不好,需要添加jpg和png。那么就来改一改吧。一、添加工具类CSaveHelper。#pragma onceclass CSaveHelper{public: CSaveHelper(); ~CSaveHelper();public: int Save(CWnd* pWnd, CString filePath);};in...原创 2019-10-21 21:00:38 · 2487 阅读 · 1 评论 -
轻松搞定MFC组合键。
检测到组合键响应消息,基本上是依靠HOOK和PreTranslateMessage()两种方法。今天只讨论第二种方法,以CTRL+X、ALT+X为例。一、在PreTranslateMessage()函数体内部依靠静态bool变量来判断CTRL的按下与抬起。BOOL CMFCApplication1Dlg::PreTranslateMessage(MSG* pMsg){ static boo...原创 2019-10-10 20:16:17 · 1382 阅读 · 0 评论 -
【转载】MFC键盘响应
转载自:传送门一:首先介绍键盘消息系统消息:ALT,F1,——F24等,是由系统内部处理的,程序本身就存在,比如F1是帮助键。WM_SYSKEYDOWNWM_SYSKEYUPWM_SYSCHAR非系统消息:是由我们自己加上去的,WM_KEYDOWNWM_KEYUPWM_CHAR二:然后介绍虚拟键代码符号形式 十六进制形式 说...转载 2019-09-25 18:22:16 · 1155 阅读 · 0 评论 -
MFC之序列化及反序列化。
MFC之序列化及反序列化。一、概述。1.1 序列化是指对象将其状态保存在一个字节流中,并用该字节流重建对象。1.2 序列化的基本思想是:一个类应该能够对自己的成员变量的数据进行读写操作,对象可以通过读操作而重新创建。即对象可以将其当前状态(由其成员变量的值表示)写入永久性存储体(通常指磁盘)中,以后可以从永久性存储体中读取(载入)对象的状态,从而重建对象。类的对象自己应该具备将状态值写入磁盘...原创 2019-09-20 16:58:57 · 778 阅读 · 0 评论 -
MFC自绘制微调编辑框
这是一种好玩的自绘制微调编辑框。附上地址:https://download.youkuaiyun.com/download/struggling_jeff/11621478原创 2019-09-02 20:43:16 · 455 阅读 · 0 评论 -
SendMessage()窗体之间发消息
SendMessage调用一个窗口的窗口函数,将一条消息发给那个窗口。一、父窗口向子窗口发消息。1.1在接收方,也就是子窗口类头文件里面声明消息。#define MSG_UPDATE_LEFT_CHILD WM_USER+6001.2消息映射,在头文件里面添加响应函数。 afx_msg LRESULT OnUpdate(WPARAM w, LPARAM l);1.3响应响应函...原创 2019-08-19 18:48:53 · 4082 阅读 · 0 评论 -
一种好玩的浮动窗体。
MFC实现的一种好玩的浮动窗体。它可以像360悬浮球或者QQ一样吸附停靠在电脑屏幕的左右上三个边缘。鼠标移动到窗体上,会显示完全。原创 2019-08-06 18:32:55 · 297 阅读 · 0 评论 -
移动自绘制对话框的两种方法。
1、原理:左键按下记录一个点坐标,并且设置拖拽变量true,抬起来又记录一个点,有了位移差,在移动响应里面去移动窗体就行。1.1 关键成员:public: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg v...原创 2019-08-02 18:16:09 · 410 阅读 · 0 评论 -
MFC自绘制菜单那些事
1、最近,项目里面需要用到自绘的MFC菜单。2、但是出现问题:自绘制的菜单有边框。就像这样子:参考资料:添加链接描述去除边框后,酱紫:3、一波未平一波又起,使用钩子去除了边框,但是二级菜单却很难选中。参考资料:添加链接描述解决后效果:4、出现问题。下级菜单的区域没有重叠区,导致二级菜单很难被选中。使用钩子,但是不要像以前一样直接对菜单大小进行裁剪,因为裁剪只保证菜单向一个...原创 2019-07-31 19:30:07 · 1036 阅读 · 0 评论 -
MFC CListctrl里面使用编辑框和下拉框
对于需要使用到子控件的单元格,就把子控件移动到需要使用的位置就好。1、创建工程,添加控件CEdit和CListCtrl到对话框。分别添加控件变量:protected: CEdit m_Edit; CListCtrl m_ListCtrl; int m_row;//选中行 int m_col;//选中列2、需要在对话框初始化里面响应Init().void CListEditCo...原创 2019-07-11 19:53:23 · 3717 阅读 · 2 评论 -
编辑框设置焦点到文本最后,TAB键切换光标。
1、初始化Init(),需要new五个编辑框,并保存到数组。void CCTimeTestDlg::Init(){ for (int i = 0; i < 5; i++) { CEdit *p = new CEdit; p->Create(WS_CHILD | WS_VISIBLE | ES_LEFT, CRect(100, 50 * (i + 1), 200, 50 ...原创 2019-06-11 17:46:04 · 546 阅读 · 0 评论 -
MFC 控制列表控件文本颜色显示
MFC 控制CListCtrl 变换横行文本颜色1、添加列表变量。CListCtrl m_ListCtrl;2、定义颜色枚举。enum COLOR{ COLOR_RED, COLOR_GREEN, COLOR_BLUE};3、关键设置函数。m_ListCtrl.SetItemData(i, COLOR_RED + i);4、初始化列表数据,并设置行数据颜色。v...原创 2019-05-29 19:21:23 · 1642 阅读 · 0 评论 -
MFC 设置编辑框文本为当前时间
需要格式化处理字符串。void CCTimeTestDlg::Init(){ CTime tm = CTime::GetCurrentTime(); CString str; str.Format("%d-%02d-%02d %02d:%02d:%02d", tm.GetYear(), tm.GetMonth(), tm.GetDay(), tm.GetHour(), tm.GetMi...原创 2019-05-24 19:02:25 · 600 阅读 · 0 评论 -
MFC编辑框设置只允许输入数字
1、动态创建出来的,需要在Create()的时候,设置风格ES_NUMBER 只允许数值输入到编辑控件。void CEditTestDlg::Init(){ CEdit *p = new CEdit; p->Create(WS_CHILD | WS_VISIBLE | ES_NUMBER, CRect(100, 100, 200, 120), this, 123); p->S...原创 2019-05-15 18:04:19 · 2022 阅读 · 0 评论 -
MFC 判断文件所在路径存在与否
1、头文件:shlwapi.h2、链接库:Shlwapi.lib#include <iostream>#include <shlwapi.h>using namespace std;#pragma comment(lib,"Shlwapi.lib")int main(){ string str = "E:\\Visual Studio 2013\\Proj...原创 2019-05-08 18:24:18 · 1275 阅读 · 0 评论 -
MFC API之ShellExecute()
1、加头文件:shellapi.h2、看一看函数声明:SHSTDAPI_(HINSTANCE) ShellExecuteA(_In_opt_ HWND hwnd, _In_opt_ LPCSTR lpOperation, _In_ LPCSTR lpFile, _In_opt_ LPCSTR lpParameters, _In_opt_ LPCSTR lpDirectory, _In_...原创 2019-05-07 18:49:57 · 1845 阅读 · 0 评论 -
MFC WritePrivateProfileString()和GetPrivateProfileString() 的读写ini配置文件
MSDN看一看函数原型:1、写文件 BOOL WritePrivateProfileStringA( LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName );参数一:lpAppName ini文件的字段名参数二:lpKeyName 字段...原创 2019-05-03 16:00:11 · 885 阅读 · 0 评论 -
MFC响应对话框最小化
ShowWindow(SW_SHOWMINIMIZED);原创 2019-04-20 21:40:42 · 679 阅读 · 1 评论 -
MFC自绘控件需要注意的地方
在自绘对话框的右上角画出了自己需要的 close、maximize、minimize这三个按钮,还需要在ON_WM_NCHITTEST消息里面屏蔽掉这三个按钮的点击,不然在OnMouseMove()绘制的时候,就算鼠标移到按钮区域也不会出现自己想要的高亮风格,困扰了一下午。错误效果:例如:LRESULT CMyStockDlg::OnNcHitTest(CPoint point){ LR...原创 2019-04-20 21:10:49 · 359 阅读 · 0 评论 -
MFC消息响应之ON_CONTROL_RANGE
对于动态创建出来的多个编辑框的EN_CHANGE响应事件的处理,需要用到ON_CONTROL_RANGE。看一看它的宏:#define ON_CONTROL_RANGE(wNotifyCode, id, idLast, memberFxn) \ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)idLast, AfxSigCmd_RANGE, ...原创 2019-04-17 18:57:22 · 2605 阅读 · 0 评论 -
MFC消息响应之ON_NOTIFY_RANGE
1原创 2019-04-17 18:44:40 · 2846 阅读 · 1 评论 -
小白解决“不能实例化抽象类“的错误。
MFC工程 error C2259: “CXXXX”: 不能实例化抽象类。解决方法:就是需要把基类里面的所有纯虚函数在派生类里面全部实现,缺少一个都不行,简单实现就是子类的头文件里面直接空实现(用不到此接口的情况下)。例如:接口类方法:virtual void OnUpdate() = 0;派生类实现:virtual void OnUpdate(){};...原创 2019-04-10 18:16:38 · 6481 阅读 · 0 评论