![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MFC
分享mfc
不脱发的码农~~~~
发呆
展开
-
查看dll或exe文件的依赖项——使用vs自带的dumpbin工具
在使用vs写程序的时候,我们经常会将程序生成为dll或是exe文件,而这些文件通常也会需要依赖其他库的dll才能单独使用。那我们该如何确定某个dll或是exe文件依赖了哪些dll呢?这个问题可以通过使用vs自带的dumpbin工具来解决。下面详细介绍其使用方法:首先点击开始菜单,打开vs命令行程序,如下图所示。在打开的界面上输入dumpbin /dependents +dll/exe文件路径,比如dumpbin /dependents E:\xxx\xxx\plugins\qPDALIO.dll ,然后转载 2022-07-09 12:10:36 · 6112 阅读 · 2 评论 -
MFC文件操作
MFC原创 2022-07-02 16:57:49 · 135 阅读 · 0 评论 -
MFC错误0xc000007b 应用程序无法正常启动 的一种原因(未验证)
错误:将该程序(32位)拷到一台64位机子上,提示缺少mfc110u.dll等,于是从开发电脑(64位)上System32里拷相应的dll到exe的目录里,不提示缺dll啦,但出现如下错误原因及对策:win7 64位System32里的dll为64位的,32位的dll在SysWOW64里。32位的程序误用64位的dll自然会出错,改从SysWOW64里拷相应的dll里即可。详情咨询:https://blog.csdn.net/u010634308/article/details/77900700...转载 2022-06-15 11:00:45 · 1030 阅读 · 0 评论 -
MFC自定义button实现颜色控制
此自定义按钮可以实现鼠标的点击、释放、hover和leave功能。1、新建一个button按钮,修改Owner Drawer的属性为True2、在工程新建CCustomButton类3、点击工程的视图界面,右键按钮,选择"增加变量",将原来类名CButton修改名为CCustomButton...转载 2022-06-13 10:38:54 · 1322 阅读 · 0 评论 -
实现MFC程序的重启工作
方法一:1.使用记事本新建批处理文件Start.bat,将文件与编译的.exe程序放在同一路径下即可@echo offset /a num=5:Cirfor /l %%i in (1,1,1000) do echo offset /a num=%num%-1if not %num%==0 goto Circd /d %~dp0start "" "Your Program.exe"exit2.在程序中添加代码: if (true) { //--------批处理文件重启程转载 2022-05-11 16:31:01 · 461 阅读 · 2 评论 -
MFC重置串口大小
CRect preWin; GetWindowRect(preWin); SetWindowPos(NULL, 0, 0, preWin.Width() * 2, preWin.Height() * 2, SWP_NOMOVE |SWP_NOZORDER);原创 2022-04-29 09:41:21 · 152 阅读 · 0 评论 -
【MFC】如何使用MFC?MFC如何编写界面?MFC使用零基础教程
一点一点建立MFC程序 新建MFC项目选择向导单个文档,取消文档视图结构支持使用经典菜单选择CMainFrame类 新建的窗口在哪呢?启动调试开始修改创建吧修改一下新建Dialog改窗口ID对应你需要弹出的窗口改窗口的左上角的名字 如何设计窗口呢添加处理事项 为弹窗添加类生成主函数添加头文件添加控件响应 调试 新建MFC项目 选择向导 单个文档,取消文档视图结构支持 使用经典菜单 选择CMainFrame类 新建..转载 2022-03-28 21:46:46 · 2892 阅读 · 0 评论 -
WINDOWS.H already included. MFC apps must not #include <Windows.h>
新建头文件.h内容如下:#pragma once#include<Windows.h>extern void* g_Port;#if 1char* getErrorMsg(int code);#endifcpp#include "global.h"#include"pch.h"void* g_Port = INVALID_HANDLE_VALUE; //串口句柄char* getErrorMsg(int code){ switch (code) { cas原创 2022-03-28 20:39:27 · 728 阅读 · 0 评论 -
MFC获取时间字符串
基本上有2种方式,一种是利用"time.h"文件中的系统函数;另一种是利用CTime类。利用系统函数。#include "time.h"CString time_cstr;SYSTEMTIME st; //定义系统时间结构体的对象GetLocalTime(&st); //调用GetLocalTime获得当前时间,并保存在结构体st中time_cstr.Format(_T("%04d-%02d-%02d %02d:%02d:%02d:%3d"), st.wYear, st转载 2022-03-25 16:11:49 · 407 阅读 · 0 评论 -
MFC ComBox获取下拉数量
if(m_comCom.GetCount()>0) m_comCom.SetCurSel(0);原创 2022-03-24 19:26:13 · 522 阅读 · 0 评论 -
VC MFC 窗口最大化、最小化所触发的事件
消息名称:WM_SYSCOMMANDafx_msg void OnSysCommand( UINT nID, LPARAM lParam);ParametersnIDSpecifies the type of system command requested. This parameter can be any one of the following values:SC_CLOSE Close the CWnd object.SC_HOTKEY Activate the CWnd转载 2021-11-29 14:44:52 · 1068 阅读 · 0 评论 -
GetDlgItem、EnableWindow等函数在线程函数中无法使用
将窗口指针传递给线程,或者申明一个全局窗口指针,使线程内可见。例如:UINT TestThread(LPVOID pParam){ CMyDlg* pDlg = (CMyDlg*)pParam; pDlg->GetDlgItem(IDC_Button1)->EnableWindow(0); return 0; }void CMyDlg::OnBnClicked1(){ AfxBeginThread(TestThread,this);}重点是对于线转载 2021-08-30 11:17:19 · 355 阅读 · 0 评论 -
控制台输出重定向到MFC的view对象里
一、思路:1.将标准输出重定向到管道2.创建一个线程从管道里取出数据3.在view的OnPaint中将数据显示出来二、实现1.创建管道1 BOOL bRet = CreatePipe(&hRead, &hWrite, NULL, 0); // 创建匿名管道2 if (bRet != TRUE)3 printf("创建匿名管道失败,错误代码:%d\n", GetLastError());2.将标准输出重定向到管道的写句柄中1 int nOpenHandle = _转载 2021-07-25 11:40:57 · 341 阅读 · 0 评论 -
[MFC]禁止双击标题栏最大化&还原
引子用MFC写的程序,双击标题栏,程序会最大化,再次双击程序还原,如何禁止这样响应呢?其实这是需要自己对 WM_NCLBUTTONDBLCLK 的消息进行处理。具体做法重载 DefWindowProc( ) 函数,过滤WM_NCLBUTTONDBLCLK在HTCAPTION区的响应即可。这种做法就是,将消息在实现这个功能之前将它过滤掉。在 类向导 上,重载 虚函数 “ DefWindowProc( ) ”,在里面过滤掉 WM_NCLBUTTONDBLCLK在HTCAPTION区的响应。代码转载 2021-07-21 08:44:07 · 420 阅读 · 0 评论 -
VC 获取文件后缀名
1.CString GetSuffix(CString strFileName) { return strFileName.Right(strFileName.GetLength()-strFileName.ReverseFind('.')-1); }2.PathFindExtension3.忽略大小写方法CString::MakeUpper();全部转化为大写; CString::MakeLower();全部转化为小写;#include <tchar.h>#inc转载 2021-07-15 13:52:59 · 402 阅读 · 0 评论 -
MFC实例:将本地IP显示在标题上
将下面代码写在初始化地方: CString TextName; CString strIp; WSADATA wsaDataqq; WSAStartup(MAKEWORD(1, 1), &wsaDataqq);//标题边显示ip PHOSTENT hostinfo; char name[512] = { 0 }; if (gethostname(name, sizeof(name)) != 0 || (hostinfo = gethostbyname(name)) == NULL转载 2021-07-08 09:17:48 · 166 阅读 · 0 评论 -
VC MFC删除指定文件或文件夹内容
1.删除指定文件第一种方法:定义一个文件类对象来操作CFile TempFile; TempFile.Remove(指定文件名);第二种方法:DeleteFile("c:\\abc\\test.exe ");//MFC框架中可直接调用此函数2.删除目录_rmdir()DeleteDirectory(sTempDir)RemoveDirectory(sTempDir) //删除文件夹目录(非空)bool DeleteDirectory(CString DirName)转载 2021-07-08 09:17:26 · 4175 阅读 · 0 评论 -
MFC实例:SendMessage 发送字符串,结构体,数字
将指定的消息发送到一个窗口或多个窗口。SendMessage为这个指定的消息调用窗口处理程序,直到窗口处理完这个程序后才会返回。和SendMessage函数相比,PostMessage函数发送一个消息到线程消息对列中,并立即返回。函数原型:B00L SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);下面分享详细实例:界面设计如下:1、发送字符串步骤:(1)在建好的MFC工程中头文件添加消息定义宏:#define TTMSG_转载 2021-07-08 09:17:55 · 1613 阅读 · 0 评论 -
MFC学习串口号大于等于10时的写法
\\\\.\\COM10原创 2021-06-14 09:33:03 · 459 阅读 · 0 评论 -
MFC对话框屏蔽Enter和ESC键
MFC对话框屏蔽Enter和ESC键参考:http://www.docin.com/p-122354833.html方法一重载PreTranslateMessage函数BOOL CXXDlg::PreTranslateMessage(MSG* pMsg){ //对话框屏蔽Enter和ESC键 if (WM_KEYDOWN == pMsg->message) { if ( (VK_RETURN == pMsg->wParam)转载 2021-06-05 09:37:53 · 228 阅读 · 0 评论 -
MFC关闭调用的窗口
调用窗体的方法:// chart是一个MFC的窗体类chart *chartdialog = new chart;//调用窗体,获取返回值int ReturnValue = chartdialog->DoModal(); // Show the dialogprintf("%d\n", ReturnValue); 关闭窗体的语句,在窗体类中执行//0x01就是窗体关闭后返回给主程序的返回值EndDialog(0x01); ...转载 2021-06-01 08:51:51 · 235 阅读 · 0 评论 -
MFC 中线程传递CString 是不安全的(转载)
在MFC中,向线程传递CString变量参数时,很容易犯一个错误,就是使用一个超出生存期的变量,在主函数中定义的CString变量是局部变量,当主函数结束时,这个CString变量就会被析构,而却在另一个线程中继续使用,参数传递就会出现问题。解决此问题,可以在主函数中new一个CString,在线程结束时在delete一下释放内存。或者声明一个全局变量,保证CString变量不会超出生存期,这样传递进线程的参数就可以正常使用了。下面为示例代码: 1 DWORD WINAPI test::Process原创 2021-05-27 08:47:28 · 1575 阅读 · 0 评论 -
MFC-一个很简单的程序最小化到托盘,带右键菜单带图标
MFC-一个很简单的程序最小化到托盘,带右键菜单带图标 </h1> <div class="clear"></div> <div class="postBody"> <div id="cnblogs_post_body" class="blogpost-body blogpost-body-htm...转载 2021-05-24 11:11:15 · 862 阅读 · 1 评论 -
VS2012 MFC + OpenCV
版本说明Visual Studio 2012 + OpenCV-2.4.9。关键代码根据参考资料,总结MFC中利用OpenCV读取并且显示图像的方法如下:void CMFCDialogOpenCVDlg::OnBnClickedBtnOpenImage(){ // TODO: 在此添加控件通知处理程序代码 // 打开图像文件 TCHAR filter[] = _T("jpeg图像(*.jpg)|*.jpg|bmp图像(*.bmp)|*.bmp|tif图像(*.tif)|*.tif||..转载 2021-05-24 08:42:42 · 198 阅读 · 0 评论 -
MFC一一窗口控件随窗口大小进行自适应
通常,我们在将窗口进行最大化时会出现窗口中的控件自适应问题,如何让窗口中的所有控件跟随窗口做自适应变化,提供如下操作方法供参考1、首先在OnInitDialog函数中获取窗口位置坐标BOOL CDialogQual::OnInitDialog(){ CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 CRect rect; GetClientRect(&rect); //取客户区大小 old.x=rect.r.转载 2021-05-24 08:42:50 · 593 阅读 · 0 评论 -
MFC中将CEdit设置光标当前位置在编辑框最后
CString strInfo;m_Edit.GetWindowText(strInfo);int nLength = strInfo.GetLength();m_Edit.SetSel(nLength,nLength, FALSE);m_Edit.SetFocus();原创 2021-05-19 14:19:46 · 1238 阅读 · 0 评论 -
C++/MFC简单实现HTTP通信(基于CHttpFile)
源码:HttpTools.h#pragma once#include <iostream>#include "afxinet.h" namespace HttpTools{ enum HttpResult { HTTP_SUCCESS = 0, //成功 HTTP_FAILURE = 1, //失败 HTTP_OUTTIME = 2, //超时 }; enum HttpConnectType { NORMAL_CONNECT = INTERNET_FL转载 2021-05-19 14:11:05 · 1004 阅读 · 0 评论 -
VC++ 从 CString类型的文件路径中获取文件名和扩展名
CString GetFileFullName(CString csFilePath){ int nPos = csFilePath.ReverseFind('\\'); // 文件路径,以'\'斜杠分隔的路径 CString csFileFullName; csFileFullName = csFilePath.Right(csFilePath.GetLength() - nPos - 1); // 获取文件全名,包括文件名和扩展名 return csFileFullName;} CStr转载 2021-05-19 11:27:59 · 1068 阅读 · 0 评论 -
MFC 设置窗口置顶显示
//窗口置顶::SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//窗口不置顶::SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);可以在菜单,或者添加一个按钮,来更改程序是否置顶的选项.转载 2021-05-20 09:02:20 · 1500 阅读 · 0 评论 -
MFC 退出程序的方法
1、对话框用 CDialog::OnOk(); Doc/View用 OnClose();2、PostQuitMessage(0);//最常用 PostMessage(WM_QUIT,0,0);//最常用 ::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用 ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用3、转载 2021-05-18 14:18:16 · 1582 阅读 · 0 评论 -
SendMessage 和 PostMessage的区别
1、返回时间不同PostMessage发送消息后就立即返回 (非阻塞)SendMessage发送消息后,等待消息处理函数处理完后才返回 (阻塞)2、返回值不同PostMessage的返回值是BOOL,返回非0则消息执行成功,返回0则消息执行不成。SendMessage的返回值是LRESULT,返回的是消息处理函数后的返回值3、同步和异步问题如果发送的消息码在WM_USER之下(非自定义消息)且消息参数中带有指针,那么PostMessage,SendNotifyMessage,SendM转载 2021-05-18 09:44:59 · 1090 阅读 · 0 评论 -
MFC 自动关闭弹出的MessageBox对话框方法
首先,创建定时器和弹出MessageBox:void CTestDlg::Test(){ //启动定时器 SetTimer(111,1000,NULL); int ret = MessageBox("Hello World", "MyTestBox", MB_YESNO); if(ret == IDYES) { TRACE("按钮【YES】被按下\n"); }转载 2021-05-18 08:53:32 · 1913 阅读 · 0 评论 -
MFC CListControl删除所有列标题
CHeaderCtrl* pHeaderCtrl = m_listctrl.GetHeaderCtrl();if (pHeaderCtrl != NULL){ int nColumnCount = pHeaderCtrl->GetItemCount(); for (int i=0; i<nColumnCount; i++) { m_listctrl.DeleteColumn(0); }}原创 2021-05-17 16:03:57 · 459 阅读 · 0 评论 -
messagebox的弹框效果为非模态的问题
遇到messagebox的弹框效果为非模态的问题,发现:WINAPI MessageBox(HWND hWnd ,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);当参数hWnd = NULL时,生成的对话则为非模态对话框。指定句柄即可改为模态对话框。转载 2021-05-17 14:01:57 · 1147 阅读 · 0 评论 -
MFC CEdit打印日志
void CLOG_DEBUG(char *str, ...){ CEdit *e = s_log_handle; CString strTxt; char szLog[4096 * 100] = { 0 }; if (e == NULL) return; if (g_enable_pci_server_log < 0) return; va_list arg_ptr = NULL; va_start(arg_ptr, str); vsprintf(szLog, str原创 2021-05-15 10:39:08 · 364 阅读 · 0 评论 -
MFC 获取list控件列头的字符串
HDITEM hdi;TCHAR lpBuffer[256];bool fFound = false;hdi.mask = HDI_TEXT;hdi.pszText = lpBuffer;hdi.cchTextMax = 256;for (i=0;!fFound && (i < nCount);i++){ pmyHeaderCtrl->GetItem(i, &hdi); if (strcmp(hdi.pszText, lpszm原创 2021-05-12 08:43:16 · 409 阅读 · 0 评论 -
GetLastError()返回值意义总结
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效。〖14〗-存储器不足,无法完成此操作。〖15〗-系统找不到指定的驱动器。〖16〗-无法删除目录。〖17〗-系统无法将文件移到不同转载 2021-05-11 11:36:05 · 2034 阅读 · 0 评论 -
MFC List Control滚动条
起因是这样的,我在对话框中,放置了一个List Control控件,里面显示的内容很多,内容多时就出现了垂直滚动条,我想让List Control能够实时显示最新的内容,如何做呢?很简单,一行代码就可以了。代码如下://确保List Control最后一行可见 m_List.EnsureVisible(m_List.GetItemCount()-1,FALSE);...原创 2021-05-11 11:22:38 · 1355 阅读 · 0 评论 -
VC窗口淡入淡出
窗口淡入淡出要使用AnimateWindow函数,要在StdAfx.h文件的开始添加相关宏定义//编译前在STDAFX.H中加入#undef WINVER#define WINVER 0x5000//在窗口创建时…int CAboutDlg::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; CenterWindow()转载 2021-05-11 11:15:13 · 204 阅读 · 0 评论 -
在程序中添加背景音乐!...
//在程序中使用背景音乐时,记得包括以下两行代码(使用PlaySound函数//时需要在#include<windows.h>后面加上,//注意:不能加在前面)//#include <mmsystem.h> //#pragma comment(lib, "WINMM.LIB")//注意:导入的音乐格式应为wav //播放音乐函数void CPlaySoundDlg::OnBUTTONPlay(){ BOOL bPlay =PlaySound(MAKE.转载 2021-05-11 11:04:43 · 603 阅读 · 0 评论