
MFC
致终有林夕
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++:解决MFC界面无响应PeekMessage
在编写MFC程序过程中,会出现点击按钮后,该按钮内部卡住,界面无法刷新的情况。遇到后可以考虑PeekMessage。PeekMessage是一个Windows API函数。该函数为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。和函数PeekMessage不一样的是,GetMessage:从系统获取消息,将消息从系统中移除,属于阻塞函数。当系统无消息时,GetMessage会等待下一条消息。而函数PeekMesssge是以查看的方式从系统中获取消息,可以不将消息从系统中移除,是非阻原创 2022-05-03 13:26:01 · 2341 阅读 · 0 评论 -
Halcon:通过CFileDialog选择图片
上代码:HObject hImage;//待读取的图像CString strFilter = _T("Image Files (*.bmp)|*.bmp|BMP File (*.bmp)|*.bmp|PNG File (*.png)|*.png|JPG File (*.jpg)|*.jpg|All Files (*.*)|*.*||");//路径中包含的格式CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,原创 2022-03-22 17:24:41 · 429 阅读 · 0 评论 -
C++:同步和异步读写(重叠I/O详解)
1.写C++程序时,会出现一些情况,做此记录举例:类似读取文件先CreateFile,接着再ReadFile或者WriteFile情况1:如果CreateFile时,参数DWORD dwFlagsAndAttributes, 该参数代表文件属性,该参数没有设置为FILE_FLAG_OVERLAPPED(允许对文件进行重叠操作)那么在ReadFile时,就需要等读完数据后(数据的长度是自己指定的),才会返回。假设在WriteFile时,需要一次性写入很多数据,那么需要在数据完全写完,才会返回。原创 2022-03-04 17:07:50 · 5522 阅读 · 0 评论 -
使用Spy++点击其他程序按钮
1.首先打开VS2019->工具->Spy++2.打开后有以下的界面。接下来需要鼠标左键点击这个查找程序工具,然后鼠标就会变成圆形,移到你想要查询的程序上3.目前移动到了界面上,句柄就能看到了4.假设移动到按钮Button2上5.然后通过Spy++看整个界面的所有按钮的句柄。对应关系如下6.如果想写一个新程序,去对其他程序的按钮进行操作//根据窗口句柄获取EDIT控件的ID,但是这个ID是通过VS工具spy++获取的 HWND hMain = ::GetDlgItem(原创 2022-01-24 09:17:52 · 1619 阅读 · 0 评论 -
C++获取其他程序内信息
1.根据程序名称获取程序窗口句柄//一个程序获取另一个程序Edit控件的内容 char temp[256]; strTest.clear(); //根据指定程序的标题名获取改程序窗口的句柄 HWND hWnd = ::FindWindow(NULL, L"Test"); if (hWnd!=NULL) { EnumChildWindows(hWnd, EnumWindowsProc, NULL); UpdateData(0); }vector<CString&原创 2022-01-14 16:30:54 · 771 阅读 · 0 评论 -
C++实现程序的拖拽
针对A程序去拖拽B程序的位置1.首先获取到B程序为主2.执行拖拽 //移动鼠标位置,目的是移动到title位置 ::SetCursorPos(1000, 275); Sleep(50); //左键按下,目的是点击到title mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //鼠标移动,水平方向位移500,垂直方向位移200 mouse_event(MOUSEEVENTF_MOVE, 500, 200, 0, 0);原创 2022-01-14 11:32:15 · 972 阅读 · 0 评论 -
C++实现log记录
1.需要在头文件中定义log对象以及控件IDconst int IDC_LISTBOX_LOG = 12345;CListCtrl m_logList;2.在初始化代码中添加CListCtrl控件的初始化代码//获取当前坐标 CRect rcClient; GetClientRect(&rcClient); //设置log控件位置 CRect rcListBox; rcListBox.left = rcClient.left ; rcListBox原创 2022-01-14 11:06:40 · 644 阅读 · 0 评论 -
C++实现鼠标点击其他程序
1.主要是SendInput函数。代码如下: //初始化 INPUT input = {0}; input.type = INPUT_MOUSE; //dx,dy代表的是进行点击的坐标。下面显示的是(950,150) input.mi.dx = static_cast<long>(65535.0f / (GetSystemMetrics(SM_CXSCREEN) - 1) * 950); input.mi.dy = static_cast<long>(65535.原创 2022-01-14 10:54:22 · 3198 阅读 · 1 评论 -
halcon和C++联合编程
1.首先新建MFC程序2.建立完成后,项目->属性->VC++目录->包含目录 ,修改如下:3.项目->属性->VC++目录->库目录,修改如下:4.项目->属性->链接器->输入->附件依赖项,修改如下:5.在头文件中添加:#include “halconcpp.h”using namespace HalconCpp;6.在代码中添加新建窗口7.接着生成成功。注意安装halcon时是64位还是32位,需要和创建的程序相原创 2022-01-04 15:34:25 · 3633 阅读 · 0 评论 -
C++:VS2019调用dll
1.直接通过代码加载dll,进行测试首先在头文件中添加函数指针,会方便一点,函数指针的名称随意。假设为TestDll1,TestDll22.加载dll,并且将指针函数指向dll中函数地址3.若是在exe路径下未包含dll,则运行exe时会闪退。...原创 2021-12-15 14:01:29 · 2455 阅读 · 0 评论 -
C++:VS2019调用lib
1.测试调用lib首先创建一个MFC的对话框程序2.将之前生成的CreateDll.lib和CreateDll.dll拷贝到程序所在路径接着将dll中的函数接口所在的头文件Interface.h也拷贝到该路径下3.这些只是代表拷贝到路径下,并不代表能够使用,需要将这些添加到程序中先将头文件包含到程序中4.在MFC窗口程序中添加一个按钮进行测试,并且在该按钮中增加相应的函数5.这时Interface.h的函数内容需要修改。修改如下:添加CreateDll.lib,函数接口修原创 2021-12-15 12:05:41 · 4522 阅读 · 0 评论 -
C++:VS2019生成dll和lib
1.首先打开VS2019选择其中的动态链接库,并点击下一步2.接着选择创建新项目的名称和位置3.创建后的项目打开如下4.在pch.h的文件处添加函数接口5.在pch.cpp处添加函数内容6.点击生成—>生成解决方案7.生成后的dll和lib在一开始创建工程的路径下...原创 2021-12-14 15:15:42 · 2860 阅读 · 0 评论 -
并行技术的学习
1.转载https://www.cnblogs.com/lsgxeva/p/7702298.html转载 2019-05-10 14:17:59 · 229 阅读 · 0 评论 -
MFC:Boost库的加载使用
1.第一步是C++包含目录2.第二步是C++库目录3.C/C++预处理器定义4.以及所有选项5.还有Opencv的使用原创 2020-12-16 18:52:28 · 338 阅读 · 0 评论 -
关于类的继承,多态
1.首先,说一下类的继承:基类是CAnimal:class CAnimal{protected: CString m_cstrName = L""; int m_nShoutNum = 3;public: CAnimal(); CAnimal(CString name); ~CAnimal();public: int GetShoutNum(); void SetSh...原创 2019-04-10 13:58:27 · 231 阅读 · 0 评论 -
使用Boost库的时候,出现如下错误C4996
使用Boost库的时候,出现如下错误error C4996: 'std::copy::_Unchecked_iterators::_Deprecate': Call to 'std::copy' with parameters that may be unsafe - this call relies on the caller to check that the passed values a...原创 2019-04-02 15:33:25 · 471 阅读 · 1 评论 -
C++:删除文件夹及其内部文件
1.删除的路径strPath.Format(L"F:\\RawImage\\Station_%d",1); DeleteFolderTotal(strPath);2.确定要删除的文件夹是哪些:void ConfigFileCpyDlg::DeleteFolderTotal(CString cstrDirectoryPath){ CFileFind cFinder; BOOL bFile...原创 2019-04-02 15:48:05 · 1290 阅读 · 0 评论 -
基础知识
1.关于接收的时候,怎么去接收一个char*LRESULT CWindowReceiveMapDlg::OnRecieveMsg(WPARAM wParam, LPARAM lParam){ char* cstrp =(char*) wParam;//转换成char* int nSize = sizeof(cstrp);//获取到sizeof std::vector<char&g...原创 2019-04-17 09:36:45 · 121 阅读 · 0 评论 -
读取Hex文件并求和
1.读取Hex文件void CTestProjectDlg::OnBnClickedButtonReadHex(){ CString filename = _T(""); CFileDialog Open(TRUE, _T("*.hex"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Hex Files (*.hex)|*.he...原创 2019-04-09 10:17:33 · 1129 阅读 · 0 评论 -
CString中的GetBuffer()和GetString()的对比
CString::GetString()GetString() 使用時機是當我們需要知道其(char )指针以取得其字元內容比方說 某個window API需要(char)指针做為輸入時 我們就可以使用GetString()不過要注意的是 GetString() 所傳出來的指针是不能被修改的他只能用來讓我們知道裡面的字元 而不能讓我們對裡面做修改CString::GetBuffer()...转载 2019-04-17 09:40:30 · 4870 阅读 · 0 评论 -
MFC下做一个能显示文字的进度条功能(VS2015)
MFC下做一个能显示文字的进度条功能(VS2015)1.在进度条上显示百分比,也就是在Progress Bar Control控件上显示,(没有找到很好的方法)2.就想到做了一个Edit的控件,然后在外面一层画一个矩形的填充控件,并且显示透明的文字。源码如下: CClientDC dc(this); CRect rect(m_rcDiskSpaceValueExist);//Ed...原创 2019-03-14 11:24:05 · 3066 阅读 · 0 评论