MFC
欧特克_Glodon
C++开发Qt/MFC,三维可视化OpenGL/osg/cesium,GIS应用开发,矿山智能通风算法研究,AutoCAD二次开发(Arx开发)。
展开
-
MFC自定义消息ON_MESSAGE()的使用
1、MFC的自定义消息自定义消息的响应和资源消息的响应有很多类似之处;资源消息的响应是以资源的ID号作为标识的,而自定义的消息需要自己声明消息ID;1)定义消息:#define WM_MYMSG WM_USER+2002)在类声明中声明消息映射:DECLARE_MESSAGE_MAP()3)在类声明中定义消息处理函数:afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);4)在.cpp中实现消息映射:BEGIN_MESSAGE_MAP() ON_MESS原创 2020-11-24 22:50:23 · 9499 阅读 · 1 评论 -
MFC实现堆栈窗口:多个子界面可任意切换
MFC实现堆栈窗口:多个子界面可任意切换原创 2023-10-30 08:45:17 · 1459 阅读 · 0 评论 -
VS警告 C4819 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
VS警告 C4819 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失原创 2023-08-27 21:55:11 · 1566 阅读 · 0 评论 -
MFC表格控件CListCtrl的改造及用法
MFC表格控件CListCtrl的改造及用法原创 2023-07-27 10:15:46 · 1472 阅读 · 0 评论 -
MFC&XTP库读取和写入XML文件
注:XTP库文件可以在网上下载,然后引用到所写的程序中1、XML示范文件//示例文件<?xml version="1.0" encoding="UTF-8"?><GalleryLibrary CompactMode="1"> <GalleryItems> <GalleryItem ID="{704C9D93原创 2018-08-14 13:36:22 · 13242 阅读 · 0 评论 -
MFC利用CHttpFile类实现post数据
bool CUploadUtils::PostUploadPartFile(LPCTSTR Url, LPCTSTR sAaccess_token,std::wstring UploadName, char*& _RetStr, const std::string& _FilePath, std::wstring strLocalFileName, std::wstring wsProjId,ULONGLONG uTotalSize,int nShareCount,int nIndex)原创 2022-01-27 14:06:14 · 1141 阅读 · 4 评论 -
多线程上传不同类别数据进度条设计
1、功能效果图2、功能设计1) 将文件目录内的文件进行分类,按需求分为大文件、小文件、压缩文件。2)启用多线程上传小文件,并设定定时器来触发执行后续两个文件的上传线程。3)上传过程中不允许取消数据,做出提示。3、代码源码链接:源码void CMutiThreadUploadProjDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 // 整理数据文件,按照要求进行归类 CString strDir; GetDlgItem(IDC_EDIT_原创 2022-01-12 11:18:51 · 191 阅读 · 0 评论 -
MFC应用之CFileDialog 选择文件路径和文件夹路径
1、选择文件(单个或多个)bool CMyDlg::OnButtonSelectFile(const CString strDefPath, vector<CString>& vecFileNames){ int nFileType = 0; CString strFilter = _T("EXCEL文件(*.xls;*.xlsx)|*.xls;*.xlsx||"); if (nFileType == 0) { strFilter = _T("(*.shp)|*.shp|原创 2021-09-02 14:17:22 · 7452 阅读 · 0 评论 -
CTreeCtrl树控件:如何给MFC中的CTreeCtrl树控件添加复选框及选中状态
1、效果如下:2、首先需要重写树控件类CCheckTreeCtrl.h#pragma oncetypedef enum TREE_STATE { STATE_NONE, STATE_UNCHECKED, STATE_CHECKED, STATE_INTERMEDIATE, STATE_DISABLED};//当树中某项的选中状态被改变时,会触发NM_CHECKSTATECHANGED消息,数据类型为TREEINFO//ON_NOTIFY(NM_CHECKSTATECHANG原创 2021-06-17 15:45:38 · 2815 阅读 · 2 评论 -
mfc 关闭对话框的各种消息与方法
对话框关闭时发送的不同消息:1)点击OK按钮:OnOk-WM_DESTROY2) 点击Cancel按钮:OnCancel-WM_DESTROY3) 点击×按钮:WM_CLOSE-ONCANCEL-WM_DESTROY4) 键盘ESC按键:OnCancel-WM_DESTROY5)调用EndDialog(IDCANCEL),直接到WM_DESTROY消息这些方式都可以的,要是你的关闭没有成功,那么一定是出现内存泄漏,你需要在WM_DESTROY消息中释放资源,应为WM_DESTROY消息是所有销毁转载 2021-05-31 14:47:40 · 3019 阅读 · 0 评论 -
MFC定位窗口焦点
// 把焦点定位到桌面端主界面 { HWND hMainWnd = NULL; CLib_Global::GetAPI().pITools->GetWindowHandle(hMainWnd); FALSE_RETURN(NULL!=hMainWnd); CWnd *pWnd = CWnd::FromHandle(hMainWnd); if (pWnd != NULL && pWnd->GetParent() != NULL) { CDC dc;原创 2021-04-15 10:32:03 · 636 阅读 · 0 评论 -
MFC属性页CPropertySheet的使用
1、修改或隐藏“帮助”“下一步”上一步“取消”四个按钮自定义一个CPropSheet类继承CPropertySheet,并在初始化构造函数中进行修改CPropSheet::CPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(nIDCaption, pParentWnd, iSelectPage){ }CPropSheet::CPropSheet(LPCTSTR pszCaption,C原创 2021-03-10 14:13:01 · 870 阅读 · 0 评论 -
通过命令行参数创建进程来启动exe程序
在基于对话框的MFC项目的.cpp文件中,可以对函数InitInstance()修改来进行执行不同的命令行参数:BOOL CMyDialogApp::InitInstance(){//TODO: call AfxInitRichEdit2() to initialize richedit2 library. // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonContro原创 2020-12-02 16:34:00 · 945 阅读 · 0 评论 -
MFC防止同一个exe应用程序多次启动
// 唯一的一个 CLoaderApp 对象CLoaderApp theApp;// CLoaderApp 初始化BOOL CModelDownLoaderApp::InitInstance(){ // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls;原创 2020-11-25 10:08:15 · 1206 阅读 · 0 评论 -
含百分比数字进度条的设计
Myprogressctrl.h#if !defined(AFX_MYPROGRESSCTRL_H__3069A5BB_5A36_4D4E_B1E3_F703B1F98467__INCLUDED_)#define AFX_MYPROGRESSCTRL_H__3069A5BB_5A36_4D4E_B1E3_F703B1F98467__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000// MyProgre原创 2020-10-13 16:25:59 · 1643 阅读 · 0 评论 -
MFC常用小工具函数
1、判断文件是否存在bool IsFileExist(CString sFileName){ CFile File; if (TRUE != File.Open(sFileName, CFile::modeRead)) { return false; } return true;}2、判断目录是否存在bool CLib_Global::IsPathExist(const...原创 2019-10-23 14:09:11 · 626 阅读 · 0 评论 -
CListBox使用:MFC中的多个CListBox之间实现鼠标拖拽移动内容
功能描述:当界面中有两个或两个以上CListBox时,需要实现控件在一定控件范围内相互拖动,列表内容在拖动后动态增删,并且在拖动过程中,鼠标显示拖动样式。 以下实例是在两个CListBox控件之间进行拖动:实现步骤:1、首先生成cur指针文件 可用在线图片处理工具,或者ps讲png格式图片转换成cur文件格式 文件转换要求:loadcursor 对文件要求 32*32 24位......原创 2018-07-27 15:28:50 · 3000 阅读 · 0 评论 -
CListBox添加复选框(Check):同时实现list行上移下移按钮,对话框记忆功能
MFC中其实有一个CCheckListBox类支持复选框风格,所以可以直接使用CListBox控件,然后初始化时把它转化成CCheckListBox,再设置一下控件风格参数就行。但要注意一下,关键是要修改ListBox控件的两处属性设置,分别是“Owner draw”:设置为Fixed(LBS_OWNERDRAWFIXED),“Has strings”设置为True(LBS_HASSTRIN......原创 2018-08-02 13:30:05 · 3274 阅读 · 0 评论 -
CListBox实现list行上移下移
1.函数 // 获取移动前的顺序和选中状态 void GetAllTypeNameAndCheckStatus(std::map<CString, int>& mapTypeNameCheckStatus); // 设置移动后的各类型选中状态(确保与移动前保持一致) void SetAllTypeNameAndCheckStatus(std:......原创 2018-08-02 13:38:57 · 3106 阅读 · 0 评论 -
MFC编辑框CEdit中的气泡提示方法
经常在对MFC对话框中见到效果图如下: 下面是实现方法:1.头文件定义// 气泡提示 void ShowBalloonTip(HWND hWnd, LPCTSTR lpszText, LPCTSTR lpszTittle, int nTTIcon);2.主函数void CFasDlg::ShowBalloonTip(HWND hWnd, LPCTSTR......原创 2018-08-24 10:20:06 · 5722 阅读 · 0 评论 -
MFC对话框消除菜单栏和标题栏
1、对话框在消除之前:2.对话框在消除之后具体操作代码:// TODO: 在此添加控件通知处理程序代码 GetDlgItem(IDC_STATIC_PROGRES)->SetWindowText(_T("正在下载高程数据,请耐心等待……")); GetDlgItem(IDOK)->ShowWindow(FALSE); GetDlgItem(IDCANCEL)->S...原创 2018-11-20 15:14:34 · 1521 阅读 · 0 评论 -
XTPReportContrl 控件的改进使用
// 按钮的提示信息 CToolTipCtrl m_toolTip; // 各个按钮关联变量 CXTPButton m_btnAddProject;m_toolTip.Create(this);m_toolTip.AddTool(&m_btnAddProject, _T("添加方案"));m_toolTip.AddTool(&m_btnDelProject, _T(...原创 2019-08-09 08:53:27 · 368 阅读 · 0 评论 -
进度条窗口的设计与使用
CShowProgressDlg.h 头文件// 显示一个进度条class CShowProgressDlg{public: CShowProgressDlg(); ~CShowProgressDlg(); //进程外进度对话框会一直监视该窗口句柄,如果它变的无效就自动退出进度对话框, //防止调用程序崩溃后进度对话框还一直存在 void SetWatchWnd(HW...原创 2019-02-20 21:52:37 · 683 阅读 · 0 评论 -
MFC中资源对话框的切换类
源代码.cpp #include "SwitchResource.h" extern HINSTANCE g_hDllResInstance; CSwitchResource::CSwitchResource() { m_hSaveResInstance = AfxGetResourceHandle(); AfxSetResourc...原创 2019-03-07 09:34:00 · 450 阅读 · 0 评论 -
MFC对话框里利用CHtmlView加载界面(一)————加载网页
首先我们简单了解下CHtmlView类,CHtmlView类是MFC类,它继承自CView,属于MFC视图类。但我们看它的具体实现时,我们会发现其最大的本质在于IWebBrowser2(WebBrowser ActiveX 控件)的封装。即其实质是:利用IWebBrowser2,有效地使应用程序成为一个 Web 浏览器。当然里面具体的封装细节,涉及到了大量的COM组件和ActiveX 控件知识,...转载 2019-05-17 09:42:35 · 971 阅读 · 0 评论 -
根据窗口大小重新排列组合控件的位置和大小
#include “CtrlResize.h” #if !defined(CTRLRESIZE_H__) #define CTRLRESIZE_H__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // CtrlResize.h : header fi...原创 2019-05-17 10:08:14 · 273 阅读 · 0 评论 -
CTreeCtrl树控件:如何给MFC中的CTreeCtrl树控件添加右键菜单及使用
1、头文件中:// 可以用来屏蔽操作的消息virtual BOOL PreTranslateMessage(MSG* pMsg);// 右击树控件的节点弹出菜单afx_msg void OnRclickTreeObjects(NMHDR* pNMHDR, LRESULT* pResult);//展开树控件某一结点下的所有子节点(递归函数)void ExpandAllTreeI...原创 2018-07-27 13:27:11 · 5174 阅读 · 0 评论