MFC
文章平均质量分 82
UniverseLin
决定写博客的目的,主要是为了能够帮助自己记录在日常学习和工作中碰到的一些问题对应的解决方法,文章的内容基本都是我自身或者网上实践可行的一些总结,希望对以后的自己有帮助
展开
-
【MFC】PostThreadMessage注意事项
PostThreadMessage是一个Windows API函数。其功能是将一个队列消息放入(寄送)到指定的消息队列里,不等待线程处理消息就返回。PostThreadMessage的原型是这样的BOOL PostThreadMessage(DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);参数idThread其消息将被寄送的线程的线程标识符。如果线程没有消息队列,此函数将失败。当线程第一次调用一个...原创 2022-04-11 10:09:02 · 1435 阅读 · 0 评论 -
【MFC】Onpaint和OnDraw的区别
1. OnPaint 和 OnDraw (1)OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。 (2)OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能. (3)当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint 处理函数通过创建CPaintDC类的DC对象来响应该转载 2022-04-11 12:00:49 · 794 阅读 · 0 评论 -
【MFC】 问题:Tab控件内删除首个标签页,剩余的标签页变为空白?(在同一个位置同时ShowWindow(SW_SHOW)两个界面的问题)
问题描述:mfc编程时,重写ctabctrl类。在实现动态增加删除界面功能时,发现当tab控件内有加载入两个tab界面,当删除tab1时,留下的另一个tab2标签页会变空白。现象如下:同时添加“666”和“667”两个tab页,并显示“667”tab页。然后删除“666”这个tab页,“667”这个标签页则会变成空白。重新切换上层页面,或是wnd消息触发,会逐步加载出界面。其实这个问题产生的根本原因是:在同一个位置同时ShowWindow(SW_SHOW)两个界面!因为我是重原创 2021-05-07 15:54:10 · 545 阅读 · 2 评论 -
【MFC】 CFileDialog类 实现文件打开和文件保存(另存为)
目录应用场景CFileDialog类实例文件打开(导入)文件另存为附录dwFlags参数 相关OFN标志位参考链接:应用场景在大多数常用软件中,都会发现“打开”和“另保存”的选项,以“记事本的另存为”为例,其打开对话画框的界面如下:为了实现如上图所示的对话框界面,我们可以通过CFileDialog类来实现。CFileDialog类CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件原创 2021-04-09 15:51:32 · 7884 阅读 · 5 评论 -
【MFC】CCriticalSection类在Release编译下调用Lock函数会报0xC0000008错误
【MFC】CCriticalSection类在Release编译下调用Lock函数会报错0xC0000008问题描述方法一 CRITICAL_SECTION代替CCriticalSection方法二 使用WaitForSingleObject和ReleaseMutex()结语问题描述通过以下伪代码方式描述问题:主对话框类内创建成员变量及结构体变量:typedef struct MSG_INFO{ int a; int b; char c[10];}MSGINFO;MSG_INFO m原创 2020-12-11 15:53:34 · 400 阅读 · 2 评论 -
【MFC】CMenu实现菜单栏/工具栏、工具栏前勾选效果、菜单文本动态调整
【MFC】CMenu实现菜单栏/工具栏、工具栏前勾选效果、菜单文本动态调整说明菜单栏/工具栏的创建添加菜单栏/工具栏工具栏前勾选效果菜单文本动态调整其他说明主要介绍该如何加载菜单栏、工具栏,如何改变菜单栏的文字,如何实现菜单栏Checked的勾选效果。菜单栏/工具栏的创建“资源视图”内选择“添加资源”,再在弹出的对话框中选择“Menu”再“新建”,菜单栏创建完毕。之后就可以根据自己的需求,是要建立菜单栏还是工具栏。往下创建设置为菜单栏,往右延伸为工具栏。添加菜单栏/工具栏作为菜单栏:在原创 2020-10-09 16:53:29 · 1714 阅读 · 0 评论 -
【MFC】 CControlBar如何实现横向/竖向控件条和动态摆放?
【MFC】CControlBar如何实现横向/竖向空间条?前言说明前言在设计对话框时,有时会需要引入工具栏(控件条),那么该如何让我们想要的控件条称为顶边工具栏或者侧边栏,这是我们要讨论的问题。说明类CControlBar是所有控件条类(CStatusBar、CToolBar、CDialogBar、CReBar和COleResizeBar)的基类。控件条一般是一个在框架窗口左边或右边的窗口。它可以包括子项,如基于HWND的控件(生成和响应消息的Windows窗口)和非基于HWND的控件(不是窗口,原创 2020-09-14 10:52:40 · 1169 阅读 · 0 评论 -
【MFC】socket网络编程示例
【MFC】socket网络编程示例MFC socket网络编程(流程示例)1.TCP流式套接字的编程步骤 在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK!服务器端程序:1、加载套接字库2、创建套接字(socket)。3、将套接字绑定到一个本地地址和端口上(bind)。4、将套接字设为监听模式,准备接收客户请求(listen)。5、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。6、用返回转载 2020-09-11 11:26:13 · 820 阅读 · 0 评论 -
【MFC】鼠标悬停提示 CToolTipCtrl
【MFC】CToolTipCtrl实现鼠标悬停提示Tip前言代码实现其他方案前言ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl。可以通过该类实现鼠标悬停后的提示tip。代码实现先声明CToolTipCtrl类的变量CToolTipCtrl m_TipMsg;初始化:m_TipMsg.m_hWnd = NULL;//船舶提示框初始化void TipInit(){ if (m_TipMsg.m_hWnd == NULL) { m_TipM原创 2020-09-10 14:24:25 · 1986 阅读 · 0 评论 -
【MFC】位图CBitmap、BITMAP、HBITMAP之间的转换
【MFC】位图CBitmap、BITMAP、HBITMAP之间的转换 一:理解BITMAP是C++中定义的位图结构体HBITMAP是Windows中使用的位图句柄CBitmap是MFC封装的位图类二:相互转换1、HBITMAP->CBitmap 方法一:HBITMAP hBitmap=(HBITMAP)::LoadImage(NULL, str, IMAGE_BITMAP,转载 2020-08-27 14:32:10 · 1993 阅读 · 0 评论 -
【MFC】如何画带箭头的直线
【MFC】如何画带箭头的直线前言代码获得箭头坐标前言如何绘制带箭头的直线,说来也简单,只需要算出箭头左右两边的坐标,再使用LineTo()函数即可。话不多说上代码。代码获得箭头坐标已知直线的起点ptStar和终点ptEnd坐标,设定好箭头的夹角和需要的箭头长度,就可以调用下面的函数计算出箭头两边点的坐标。//□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□////描述:获得箭头坐标//参数:// pStar 直线起始点// pEnd 直线终点// an原创 2020-08-13 15:48:38 · 1460 阅读 · 2 评论 -
【MFC】动态加载Picture Control控件中的图片
问题描述在MFC窗体中,我们经常需要根据不同的需求来动态显示Pictrue Control上的图片。并要求图片尺寸自动调整以适应控件尺寸。这里将介绍一种通用的方法。ShowPicture方法在ShowPicture方法中进行图片更新pictureResource为图片资源的IDCStatic mPictureViewer;为图片控件变量void CMyForm::ShowPicture(UINT pictureResource){CBitmap bitmap;//创建CBitmap对象用于存原创 2020-08-12 18:01:24 · 2872 阅读 · 3 评论 -
【MFC】SetCommMask()和WaitCommEvent()函数实现串口通信的接收
【MFC】串口通信底层函数API前言正文SetCommMask()函数WaitCommEvent()函数前言最近在做wince平台的上位机开发,关于串口通信都是直接调用系统底层的API函数,所以特地研究了一下串口通信的实现方法正文SetCommMask()函数取得 串行端口事件信息,必须先设函数置信息掩码。简单来说,就是过滤条件。SetCommMask()函数原型:BOOL SetCommMask(HANDLE hFile, //标识通信端口的句柄 DWORD原创 2020-07-03 14:59:36 · 2660 阅读 · 0 评论 -
【MFC】GDI如何释放资源
转载博客链接:https://blog.csdn.net/lin_angle/article/details/6603572对开发中常见的内存泄露,GDI泄露进行检测一、GDI泄露检测方法:在软件测试阶段,可以通过procexp.exe 工具,或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况。注意点:Create出来的GDI对象,都要用DeleteObject来释放;Create出来的DC,都要用DeleteDC来释放,GetDC得出的DC,要用ReleaseDC来释放。以下是一转载 2020-07-03 14:40:14 · 1295 阅读 · 0 评论 -
【MFC】问题:客户端与服务器建立连接后,拔掉网线的异常重连问题
【MFC】问题:客户端与服务器建立连接后,拔掉客户端网线,客户端无法重连?问题描述分析解决方法参考链接问题描述在项目开发的时候,需要实现异常断线重连的功能。在客户端和服务器端建立连接后,拔掉客户端的网线,客户端这边能够正常返回错误,但是在网络恢复后,执行重连函数却无法再次连接上服务器。分析此处是我一开始执行的流程:在客户端连接成功后,在recv()函数等待接收服务器端发来的消息。若此时拔掉网线,recv()会返回错误,此时会在sleep(3000)后再次调用connec()函数,尝试与服务器连接。当原创 2020-05-27 18:54:54 · 1486 阅读 · 0 评论 -
【MFC】问题:在定义的结构体中加入CString会报错?
【MFC】问题:在定义的结构体中加入CString会报错?问题描述分析结论问题描述在项目开发的时候,想要在结构体中定义一个CString,用来存放从配置文件中读取的字符串数据。但是一旦执行到该参数读取时,编译器便会弹出报错。//定义的结构体typedef struct READ_INICONFIG{ int nPage; char szFileName[20]; CString strFileProperty;}READINICONFIG;代码举例://定义的结构体REA原创 2020-05-26 16:24:57 · 1032 阅读 · 0 评论 -
【MFC】如何判断文件路径是否合法
【MFC】MFC如何判断文件路径是否合法前言正文参考链接前言当从配置文件中读取路径时,需要判断文件内的路径名是否合法,如果不加以判断,当你编程的软件在其他电脑上打开后,读取的路径不合法,程序运行就会出问题。正文当从配置文件中读取出路径后,可以调用GetFileAttributes()函数来获取文件的属性,然后通过判断文件的属性是否是“无效属性”,是则认为是不合法路径,不是则认为是合法路径。...原创 2019-10-24 20:07:52 · 1658 阅读 · 0 评论 -
【MFC】MFC如何对ini配置文件进行读取和写入
【MFC】MFC如何创建文本文档前言前言大家好! 这是我第一次写博客。决定写博客的目的,主要是为了能够帮助自己记录在日常学习和工作中碰到的一些问题对应的解决方法,文章的内容基本都是我自身或者网上实践可行的一些总结,若有些知识点表述有误,欢迎大家指正讨论。...原创 2019-10-24 14:30:36 · 1647 阅读 · 0 评论