随笔分类 -  MFC

摘要:IDC_PIC_TEST是PictureControl控件的ID CRect mouseROI; GetDlgItem(IDC_PIC_TEST)->GetWindowRect(mouseROI); //桌面左上角是0,0 ScreenToClient(&mouseROI); //转换后,控件以客户 阅读全文
posted @ 2021-01-14 22:25 夕西行 阅读(411) 评论(0) 推荐(0) 编辑
摘要:效果如下: 原理,以宽高比图像(红色)<控件(蓝色)为例,即图更竖长。让l移到l'处、r移到r'处,即求下图中x即可。 注意,图中除x以外,都指的是像素位置(上下左右的意思,而不是边长)。 代码如下:CImage image在头文件里,m_IDCpic是Picture Control控件鼠标右键创建 阅读全文
posted @ 2020-12-28 19:53 夕西行 阅读(821) 评论(0) 推荐(0) 编辑
摘要:1、Windows下的程序都是基于消息的,窗口在创建时都会产生一个WM_CREATE消息。其他类可以响应这个消息,添加WM_CREATE消息的处理函数。 类视图——某个类处鼠标右键,属性——消息(找到WM_CREATE)。或者使用“类向导”。 2、文档/视类结构,视类窗口始终覆盖在框架类窗口之上,鼠 阅读全文
posted @ 2020-11-23 17:27 夕西行 阅读(1403) 评论(0) 推荐(0) 编辑
摘要:推荐前者。 unicode字符集 —— 多字节字符集。 wchar_t —— char wstring —— string CStringW —— CStringA,CString可以依据字符集自动转换CStringW/CStringA LPWSTR(即wchar_t*)—— LPSTR(即char 阅读全文
posted @ 2020-08-11 14:56 夕西行 阅读(140) 评论(0) 推荐(0) 编辑
摘要://选择图片 CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this); //打开文件选择窗体 阅读全文
posted @ 2020-04-11 12:14 夕西行 阅读(5262) 评论(0) 推荐(0) 编辑
摘要://E盘根目录创建以时间命名的文件夹,其中再建4个子文件夹 CString strTime = CTime::GetCurrentTime().Format("%Y%m%d");//获取当前时间 CString strPath = _T("E:\\" + strTime);//路径 if (!PathIsDirectory(strPath))//不存在则创建 ... 阅读全文
posted @ 2020-01-03 11:39 夕西行 阅读(922) 评论(0) 推荐(0) 编辑
摘要:HWND是Windows系统中的窗口句柄,CWnd是MFC中的窗体类,两者的所属不同。CWnd对HWND进行了封装类,更加高级也更加简化。 HWND是Window内核处理对象,系统通过HWND进行操作,而我们则更多的通过CWnd提供的函数来间接操作HWND。 HWND是CWnd类的组成部分,CWnd 阅读全文
posted @ 2019-12-09 13:25 夕西行 阅读(1043) 评论(0) 推荐(0) 编辑
摘要:新建单个文档的MFC应用程序,类视图——View项的属性——消息,WM_PAINT,创建OnPaint()函数 阅读全文
posted @ 2019-11-30 12:13 夕西行 阅读(6185) 评论(0) 推荐(3) 编辑
摘要:新建单个文档的MFC应用程序,类视图——View项的属性——消息,WM_PAINT,创建OnPaint()函数 dc默认有一个画笔(实心1像素宽黑线)。 CPen画笔非实心线像素宽必须为1,否则膨胀接到一起,与实心线没有差异。 CBrush画刷,用来填充封闭区域,默认白色填充。 阅读全文
posted @ 2019-11-30 11:25 夕西行 阅读(2814) 评论(0) 推荐(1) 编辑
摘要:CWinThread* p_myThread;//创建线程指针 BOOL flag_myThread = FALSE;//是否终止 //头文件中声明(放类内) static UINT MyThreadFunction(LPVOID pParam);//定义线程入口函数 UINT CMFCApplication25Dlg::MyThreadFunction(LPVOID pParam) //线程入口 阅读全文
posted @ 2019-11-28 13:06 夕西行 阅读(3782) 评论(0) 推荐(0) 编辑
摘要:线程函数必须是全局函数或静态成员函数。 非静态成员函数都有一个隐含的参数用于接收所属类的this指针,一般情况下调用时参数不匹配。所以static可以干掉隐含的参数。 但是没有了this,类内的函数就无法调用了。所以AfxBeginThread(线程函数,(LPVOID)this),this又回来了 阅读全文
posted @ 2019-11-28 11:27 夕西行 阅读(1157) 评论(0) 推荐(0) 编辑
摘要:【线程的创建】 AfxBeginThread(类外的线程函数,NULL); AfxBeginThread(类内的线程函数,(LPVOID)this); 【类外线程函数】 UINT 函数名(LPVOID pParam);//头文件中声明,放类外 UINT MyThreadA(LPVOID pParam 阅读全文
posted @ 2019-11-28 00:32 夕西行 阅读(1196) 评论(0) 推荐(0) 编辑
摘要:创建项目由向导生成的窗体作为工作的主窗体。用户登录、注册窗体添加对话框来实现。 【具体功能】 1、主窗体应该出现在登录窗体成功之后。 2、登录窗体关闭(右上角❌),程序直接退出。 在App.cpp的InitInstance()内起始处加入代码 用户登录对话框 用户注册对话框 阅读全文
posted @ 2019-11-23 17:57 夕西行 阅读(2178) 评论(0) 推荐(0) 编辑
摘要:TabSheet.h TabSheet.cpp 阅读全文
posted @ 2019-11-21 18:30 夕西行 阅读(3068) 评论(0) 推荐(0) 编辑
摘要:自带的标签页不好用,因此借助了TabSheet文件TabSheet源码 1、在解决方案资源管理器——项目处鼠标右键——在文件资源管理器中打开文件夹(或者按下图,更方便),把TabSheet.h、TabSheet.cpp拷贝进去。 2、在解决方案资源管理器——项目处鼠标右键——添加现有项,把TabSh 阅读全文
posted @ 2019-11-21 18:28 夕西行 阅读(2588) 评论(0) 推荐(0) 编辑
摘要:Tree Control属性:Has Buttons、Has Lines、Lines At Root这三个设为True 常用的事件:SelectChanged() ico图片放到项目的res文件夹中(防止拷贝丢失),之后,资源视图——Icon处添加资源——Icon导入 以下是SelectChange 阅读全文
posted @ 2019-11-21 15:27 夕西行 阅读(618) 评论(0) 推荐(0) 编辑
摘要:一般用带有表头的报表模式,所以属性:View设为Report 【参考】https://www.bilibili.com/video/av52921336?p=16 阅读全文
posted @ 2019-11-21 12:13 夕西行 阅读(1642) 评论(0) 推荐(0) 编辑
摘要:下拉框常用的事件是Change事件。属性常用:Data(英文;分隔),Sort(是否排序) 【参考】https://www.bilibili.com/video/av52921336?p=15 阅读全文
posted @ 2019-11-21 11:30 夕西行 阅读(519) 评论(0) 推荐(0) 编辑
摘要:Edit Control控件,默认状态下,按回车会调用OnOK()关闭窗体。解决此bug可以,类视图中单击CMFCApplication3Dlg,下方重写OnOK(),注释掉其中的代码即可。 Edit Control控件的属性Multiline与Want Return一致设为TRUE或FALSE C 阅读全文
posted @ 2019-11-21 00:17 夕西行 阅读(2195) 评论(0) 推荐(0) 编辑
摘要:窗体上操作控件内容,需要句柄,在控件处使用鼠标右键——添加变量。 DoDataExchange()函数会自动生成代码,把ID与变量绑定(即DDX_Control(pDX, IDC_TEXT, objText);),让变量具有句柄功能(其实头文件中自动定义了控件对象private: CStatic o 阅读全文
posted @ 2019-11-20 23:03 夕西行 阅读(662) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示