MFC学习
文章平均质量分 57
天上的猩猩Y
好好学习,天天向上!
展开
-
MFC快捷键功能使用总结
MFC快捷键功能使用总结原创 2022-06-18 11:51:16 · 2502 阅读 · 0 评论 -
MFC自绘虚拟列表的问题总结
多次填充数据,ListCtrl无法正确更新的bug原创 2022-06-13 16:08:45 · 362 阅读 · 0 评论 -
MFC中CFile读取中文乱码
在Unicode下使用MFC的CFile读取有中文的文件读取出来,直接显示会显示乱码。原创 2022-06-12 11:08:10 · 2109 阅读 · 1 评论 -
MFC用代码安装卸载矢量字体
MFC用代码安装卸载矢量字体具体代码在下面有贴出。具体工程下载:下载地址安装代码:void CInstallFontDemoDlg::OnBnClickedButton1()//安装字体{ CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Font File(*.ttf)|*.ttf; |Font File(*.otf)|*.otf; ||"), NULL); if (dlg.DoM原创 2021-02-19 15:06:16 · 316 阅读 · 1 评论 -
修改光标
Windows程序和Doc程序很大的不同 , 就在于Windows有一个亮丽的图形界面和简捷的操作方式 , 而鼠标就是Windows程序中最重要的一个操作手段 . 有朋友向我咨询如何修改鼠标形状 , 这本来是一个简单的问题 ,但是当朋友向我询问进一步的,更加深入的操作机制时 ,我才发现里面隐藏着更多的问题 , 回到家里研究了一下 ,得到一些结论 。 这里就Windows下鼠标转载 2015-12-15 16:05:11 · 587 阅读 · 0 评论 -
VS2008mfc文本文档初始界面最大化
在MainFrm.cpp中的 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 函数中加入以下代码即可:WINDOWPLACEMENT lwndpl; WINDOWPLACEMENT * lpwndpl; lpwndpl=&lwndpl; GetWindowPlacement(lpwndpl); lpwndpl->sho转载 2015-11-27 14:03:28 · 1118 阅读 · 0 评论 -
VS2008中添加Splash screen控件
在VC6.0中,可以通过添加Splash组件,然后在工程调用组件中提供的函数,就可以实现。但是在VS2008中却没有这样的组件(我自己找了好久,没找到,网上查阅也没有相关资料)。在查阅了相关资料后总结如下:1、需要自己添加一个专门的类C SplashWnd。代码如下://////////////////////////////////////////////////////转载 2015-11-30 14:01:00 · 1719 阅读 · 0 评论 -
VC/MFC如何添加启动界面
1、利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h 这两个文件(也就是基于框架类的应用程序添加启动画面的步骤) (1)用Photoshop等制作启动画面图像,保存为bmp格式。 (2)用Appwizard建一个基于单文档的工程Splash。 (3)在资源中插入位图资源 打开VC++的资源编辑器,用鼠标右键单击Reso转载 2015-11-30 16:08:03 · 746 阅读 · 0 评论 -
vs2008程序退出时自动清除注册表!
在VS2008中,界面的大小会在程序结束后自动保存注册表中,在下一次打开时程序界面就会显示为上一次关闭时的大小!有的时候我们不想要这种效果!要求程序界面每次打开时都是以最大化或者固定大小打开。解决办法:找到XXXApp.cpp中的ExitInstance()函数,在其中添加CleanState();原创 2015-12-02 10:59:41 · 1178 阅读 · 0 评论 -
CMFCToolBarButton动态切换位图
CMFCToolBarButton中有时候要用不同的图标表示不同的状态,那么如何改变CMFCToolBarButton的位图或者图标呢?这个问题今天困扰了我一天?查了一天的资料终于解决了。问题:图中红色圆形中的图标在程序初始化时是灰色的,但是当我点击连接设备并成功后图标变为绿色,代表表连接成功。实现方法:1、在创建CMFCToolBar工具栏时 //创建串口工具栏 i原创 2015-12-03 16:32:53 · 4073 阅读 · 0 评论 -
cfiledialog
CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。 可以用构造函数提供的方式使用CFileDialog,也可以从CFileDialog派生出自己的对话类并编写一个构造函数来适应你的需要。每种情况下,对话框都与标准MFC对话框一样工作。因为它们都是CCommonDialog类的派生类。原创 2016-03-16 15:14:31 · 652 阅读 · 0 评论 -
使用SHBrowseForFolder函数打开文件目录对话框
关于SHBrowseForFolder函数和简单使用打开文件目录对话框,我找到的方法就是使用SHBrowseForFolder函数,这个函数的原型是LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi)。函数很简单,就一个返回值和一个参数。参数简单罗列如下typedef struct _browseinfo { HWND hwndOw转载 2016-03-16 17:31:57 · 5697 阅读 · 0 评论 -
VC中CTreeContrl实现响应单击或双击事件
首先需要重写CtreeContrl,然后在.h中添加afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);//双击事件afx_msg void OnClkTree(NMHDR* pNMHDR, LRESULT* pResult);//单击事件.h文件#pragma once//////////////////原创 2016-03-29 16:22:55 · 7174 阅读 · 2 评论 -
VC中CTreeCtrl控件单击事件,如何判断是单击的是某项的按钮,还是单击的文字
// NM_CLICK消息void CXXXDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here CPoint pt; GetCursorPos(&pt); m_tree.ScreenToClien原创 2016-03-29 16:43:29 · 2608 阅读 · 0 评论 -
CView的派生类: CScrollView
调用SetScrollSizes() 让 CScrollView 知道你的“逻辑视图”的大小,获得大小信息后,操纵传递给 OnDraw() 的DC,从而支持滚动 CScrollView 如何运作: CScrollView ( VIEWSCRL.CPP ) · m_nMapMode —— 在 SetScrollSizes(转载 2016-02-19 16:19:30 · 2911 阅读 · 0 评论 -
调试技巧MFC中TRACE宏的使用
个人总结:最近看网络编程是碰到了TRACE语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于在CSDN上找到了,真是个高地方啊,方法如下:1.在MFC中加入TRACE语句2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能看到TRACE内容,是因为不是调试执行,转载 2016-02-24 12:04:46 · 519 阅读 · 0 评论 -
RegQueryValueEx详解
说到“详解”二字,实在是有点不敢当,但是当我为了找到它的正确使用方法在网上到处奔波的时候,最后给我的都是一些破碎的答案,即便是篇幅丰满的,也是将MSDN上面的东西照搬过来,只不过翻译了一下。所以我决定将RegQueryValueEx“详解"一下。头文件:windows.h(一般进行MFC开发的都不用考虑这个问题)例子描述:判断当前操作系统是否是Windows XpH转载 2016-03-21 11:16:49 · 811 阅读 · 0 评论 -
VC MFC删除指定文件或文件夹内容
1.删除指定文件第一种方法:定义一个文件类对象来操作 CFile TempFile; TempFile.Remove(指定文件名);第二种方法:DeleteFile("c:\\abc\\test.exe ");//MFC框架中可直接调用此函数2.删除目录_rmdir()转载 2016-03-23 14:20:37 · 1348 阅读 · 0 评论 -
VC 获取系统特殊文件夹的路径如:系统目录,桌面等
如果需要,请在StdAfx.h中添加 #include TCHAR MyDir[_MAX_PATH]; SHGetSpecialFolderPath(this->GetSafeHwnd(),MyDir,CSIDL_APPDATA,0);AfxMessageBox(MyDir); 其中第三个参数CSIDL_APPDATA可以为以下的值:转载 2016-03-23 15:04:58 · 5239 阅读 · 1 评论 -
vc创建带新建文件夹按钮的保存对话框
创建一个类似上图的对话框。代码如下:void CNewObject::OnBnClickedButtonScan(){ // TODO: Add your control notification handler code here //CString szDefault = TCHAR szPath[_MAX_PATH];//保存路径变量 BROWSEINFO bi;//BRO原创 2016-03-23 15:17:26 · 1355 阅读 · 0 评论 -
2.2--当用户每次创建一个新文档时,如何管理 多文档模板 而不用弹出对话框?.......包含2.6的内容
一旦用户开始使用多于一个的文档模板对象,MFC就会弹出一个New对话框,让用户选择需要的文档模板类型。当在应用程序的InitInstance()函数中调用AddDocTemplate()来注册多个文档模板对象时,MFC无法知道应该使用哪一个文档模板对象来完成用户的“File->New”请求。因此,MFC弹出一个对话框,该对话框列出了 各种注册过的文档模板对象 以允许用户指出应该使用哪一个来调用CD转载 2016-03-25 10:05:24 · 794 阅读 · 0 评论 -
MFC集合类
[cpp] view plain copyclass CPoint3D { public: CPoint3D() { x=y=z=0; } CPoint3D(int xPos,int yPos,int zPos) {转载 2016-03-25 10:10:07 · 652 阅读 · 0 评论 -
VC中单文件和多文档文件的创建流程和打开流程
无论是单文档还是多文档,当开始运行程序时,它们的流程都是一样的,只是它们的模板不一样.如下:程序启动-->CWinApp::OnFileNew-->文档管理器的(CDocManager *)m_pDocManager-->OnFileNew()-->文档模板(单文档或多文档模板)的OpenDocumentFile函数打开文档,当文档不存在时则创建-->CreateNewDocument()转载 2016-03-25 14:16:25 · 1502 阅读 · 0 评论 -
CTreeCtrl 控件使用总结
一 基础操作 1 插入节点1)插入根节点 [cpp] view plain copy//插入根节点 HTREEITEM hRoot; CString str=L"ROOT" hRoot=nTreeCtrl.InsertItem(str); //相当于 hRoot=nTreeCtrl.转载 2016-03-25 15:02:26 · 580 阅读 · 1 评论 -
vc枚举所有可用的端口号
代码如下:void CMainFrame::FindComPort()//查找所有可用的端口号{ HKEY hKey; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Hardware\\DeviceMap\\SerialComm"), NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { TCHAR szPort原创 2016-03-25 15:32:35 · 1240 阅读 · 0 评论 -
VC MFC SDI/MDI框架各部分指针获取方式
VC MFC SDI/MDI框架各部分指针获取方式前人在CSDN总结的,曾经帮助过我,整理总结一下,希望也能帮助一下别人。 获得CWinApp获得CMainFrame获得CChildFrame获得CDocument获得CView在CWinApp中Af转载 2016-04-14 10:04:28 · 2537 阅读 · 0 评论 -
CArray排序
http://www.codeguru.com/forum/archive/index.php/t-215414.html 这篇贴子帮了大忙。有一个回贴这样说到: #include ...// Note the *only* change is the template type!CArray MyCArray;//...std::sort( M转载 2016-04-26 17:30:54 · 916 阅读 · 0 评论 -
排序sort与qsort的区别
qsort和sort的区别 First qsort基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题。所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分。函数对buf 指向的数据按升序排序。使用方法: void转载 2016-04-26 18:02:07 · 529 阅读 · 0 评论 -
CTreeCtrl用法
简介树控制(CTreeCtrl)主要用来显示具有一定层次结构的数据项,如资源管理器中的磁盘目录等,以供用户在其中进行各种选择。树控制中的每个数据项包括数据项名称的文本字符串和用于表示该数据项的图像,每个数据项下面均可包含各种子项,整个结构就象目录树一样。对于包含各种子项的数据项,可通过鼠标双击来展开或合拢,这可以通过控制树的不同风格来实现树控制的不同显示形态。控件的建立Ct转载 2016-04-27 17:56:59 · 1558 阅读 · 0 评论 -
VC的MDI中实现动态切换文档视图
今天要实现一个功能,如下图所示:在1中点击Screen0,然后2中的视图如果视图Screen0存在,则激活Screen0窗口,如果不存在这新建一个Screen0窗口并显示。实现代码:第一步:判断树形控件所按下时的文件名void CViewTree::OnClkTree(NMHDR* pNMHDR, LRESULT* pResult){ CPoint pt; GetCu原创 2016-04-15 15:49:30 · 2683 阅读 · 2 评论 -
MDI多文档模板中tab切换事件消息处理定义
1.头文件定义 afx_msg LRESULT OnActivateTabChanged(WPARAM,LPARAM);2.定义消息ON_REGISTERED_MESSAGE(AFX_WM_CHANGE_ACTIVE_TAB,&CMainFrame::OnActivateTabChanged)3.定义实现LRESULT CMainFrame::OnActivat转载 2016-05-10 18:09:58 · 2906 阅读 · 0 评论 -
CtreeCtrl节点展开关闭切换图标
实现代码:void CViewTree::OnClkTree(NMHDR* pNMHDR, LRESULT* pResult)//CtreeCtrl单击事件{ CPoint pt; GetCursorPos(&pt); ScreenToClient(&pt); UINT uFlag = 0; m_hLButtonDown = HitTest(pt, &uFlag); if(m原创 2016-04-28 16:53:11 · 2523 阅读 · 0 评论 -
vc合并CDockPane视图窗口
在vc的文本工程中时常要用到CDockPane进行悬挂窗口。但是我们创建时CDockPane的视图一个个都是分散开的如下图:那样这并不是我所需要的结果,我希望三个CDockPane的视图结合在一起,就如同CPageCtrl那样。如下图中的效果:实现这种效果的关键函数:AttachToTabWnd实现代码:CDockablePane* pTabbedBar = NULL; CD原创 2016-04-06 20:07:03 · 2018 阅读 · 1 评论 -
VC CFont 用法
LOGFONT结构的变量 仔细查一下CFont my_CFont;if( !my_CFont.CreatePointFont( 300,_T("Helvetica"),NULL ) )return;( GetDlgItem (IDC_EDIT1) )->SetFont( &my_CFont );二、常用法CRect rcRectangle(x,x,x,x);转载 2016-05-24 14:38:50 · 7243 阅读 · 0 评论 -
在CDockablePane中嵌入对话框
CDockablePane类可以用来创建停靠栏。可以将其他控件集成到CDockablePane的派生类中。本文描述如何将对话框集成到CDockablePane中。集成其他控件的方式类似。1、首先创建多文档应用程序,创建一个对话框类CTestDlg。2、在程序添加一个停靠栏类,名为ControlPanel,其父类为CDockablePane,在该类中添加对话框成员。需要将对话转载 2016-05-13 15:45:28 · 2038 阅读 · 0 评论 -
vc创建可移动控件
vc创建类似对话框编辑界面效果。效果如图所示:原创 2016-05-27 10:06:18 · 770 阅读 · 0 评论 -
VC中创建文件夹的方法
转自http://blog.sina.com.cn/s/blog_4be46b180100axvo.html方法一、CreateDirectory函数查了下MSDN,发现该函数用起来十分方便BOOL CreateDirectory(LPCTSTR lpPathName, // pointer to directory path stringLPSECUR原创 2016-05-27 17:56:40 · 1916 阅读 · 0 评论 -
在MFC程序中启动其他的exe程序
在MFC程序中启动其他的exe程序 ShellExecute(NULL, "open", "http://www.sina.com.cn", NULL, NULL, SW_SHOWNORMAL); // ShellExecute(NULL, "open", "C:\\Documents and Settings\\Administrator\\桌面\转载 2016-05-16 10:52:15 · 1077 阅读 · 0 评论 -
VC 常见问题百问
(1) 如何通过代码获得应用程序主窗口的 指针?主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。转载 2016-05-16 14:23:04 · 1007 阅读 · 0 评论 -
CMFCPropertyGridCtrl响应消息
一 类的继承关系class CMFCPropertyGridCtrl : publicCWndclass CMFCPropertyGridProperty : public CObject 查看CMFCPropertyGridCtrl的源码//Overrides virtualvoidOnPropertyChanged(CMFCPr转载 2016-05-17 16:00:31 · 1621 阅读 · 0 评论