MFC
文章平均质量分 57
思考者Jack
这个作者很懒,什么都没留下…
展开
-
mfc之CListCtrl控件的使用
第一步,在对话框上添加,CListCtrl控件,并添加变量为m_listHistory;第二步,设置CListCtrl控件的风格,具体代码如下:LONG lStyle;lStyle = GetWindowLong(m_listHistory.m_hWnd, GWL_STYLE);//获取当前窗口stylelStyle &= ~LVS_TYPEMASK; //清除显示方式位lStyle |= LVS_REPORT; //设置styleSetWindowLong(m_listHisto原创 2020-12-09 09:00:38 · 561 阅读 · 0 评论 -
mfc下改变菜单的文本
参考文章:https://blog.csdn.net/li_canhui/article/details/6636101下面是自己实际操作后的结果。第一步,加载菜单:CMenu m_ClearMenu;m_ClearMenu.LoadMenu(IDR_MENU_FOUR_HEADS_PULL);第二步,修改菜单的文本:CString strNormal,strDeep;CString strHead1,strHead2,strHead3,strHead4,strAllHeads;原创 2020-12-08 19:44:38 · 1323 阅读 · 0 评论 -
动态链接库操作
声明:本文不提供理论知识,只有实际操作记录。目的:以DLL的形式创建独立的功能模块,在系统中调用DLL,实现功能模块的独立输出。解决方案:第一步:创建DLL选择 文件/新建/项目,选择MFC/MFC DLL,在下面的名称位置输入项目名称,这里用LanPackageDLL。后面应用程序设置中选择 使用共享MFC DLL的规则 DLL(D),点击完成。第二步,新增DLL的功能在项目中新增一个类,这里用CXmlFileReadWrite,目前要新增一个读取XML文件中内容的功能,具原创 2020-12-02 16:59:42 · 210 阅读 · 0 评论 -
MFC下的ComboBox下拉框获取数量和获取索引的处理
1、若是使用其他接口函数直接调用下拉框的下拉处理函数,则对应的GetCount()数量不会有变化,除非重新对下拉框进行ResetContent()和InsertString()操作,然后再使用GetCount()才会得到实际的值。2、且GetCurSel()也是如此,要重新进行SetCurSel()的处理。以上的说明,只是基于使用其他接口函数直接调用下拉框的下拉函数处理,若是使用鼠标点击下...原创 2020-04-15 10:57:10 · 3564 阅读 · 0 评论 -
CListCtrl控件使用技巧
这几天处理单文档中CListCtrl控件,找了不少资料。最后得到以下的使用技巧,记录下来,方便后面用得到。当然可能有不正确的地方,请大家指出。问题一:修改网格的高度方法1:直接在OnInitDialog()中添加以下代码://此处通过新建一个空白的图片将行高撑起来 CImageList m_image; m_image.Create(1,20,ILC_COLOR32,1,0); m_...原创 2018-05-23 17:34:55 · 2315 阅读 · 3 评论 -
关于C++中防止exe多开的问题
BOOL CTestApp::InitInstance(){ HANDLE hMutex = ::CreateMutex(NULL,FALSE,"WellPrintExp.exe"); //下面这段代码要放在InitInstance()的最前面,放在后面就无效了、 if(GetLastError() == ERROR_ALREADY_EXISTS) { return FALSE; }.........原创 2018-05-12 17:49:01 · 2714 阅读 · 0 评论 -
MFC设置工具栏按钮Tip方法总结
静态方法直接在资源视图里,对要修改的工具栏的某个按钮,在其属性对话框中,对Prompt属性进行修改;Prompt格式为“字符串1\n字符串2”,其中字符串1是状态栏提示信息,字符串2是工具栏提示信息,我们修改字符串2即可。例如:动态方法1. OnUserToolTip我们可以将框架类中的m_wndToolBar成员变量从CToolBar类型替换成CMFCToolBar类型,并在CMFCToolBa...转载 2018-05-11 14:33:52 · 767 阅读 · 0 评论 -
MFC系统托盘的实现【转载】
通常电脑里边的软件,当你打开后会在电脑最右下角的任务栏上生成一个系统托盘,当你点击最小化或者点击关闭按钮后,若想恢复窗口,可以左键双击或者单机这个系统图标,同时鼠标右键点击,又会有其他的菜单弹出,比如退出。我看着感觉还是挺酷炫的,所以打算也在我的程序里边添加一个这样的功能。下边我把我自己探索的过程记录一下: 首先,我们需要用到NOTIFYICONDATA类,它是我们实现系统托盘转载 2018-05-04 15:41:39 · 182 阅读 · 0 评论 -
MFC中对话框上控件随着界面变化而变化的实现
首先说明一下缩放实现步骤:先在OnInitDialog()中获取当前客户区的大小,然后调用WM_SIZE事件处理函数OnSize(),然后就是具体的实现过程,见下图代码实现。1、先在头文件中添加以下代码:protected: CRect m_rect; void ReSize(void); POINT old;2、然后再OnInitDialog()中添加如下代码:// TODO: 在此添加额...原创 2018-04-26 16:22:32 · 1304 阅读 · 3 评论 -
MFC单文档设置状态栏颜色
最近在处理关于MFC单文档的相关问题,在这里就一一的做一个总结,方便大家学习交流,也给自己留一个记录,方便后期回顾。下面进入正文: 首先要知道状态栏的定义:CStatusBar,我在网上查过,可以使用CMFCStatusBar,对状态栏进行颜色,文字,高度等的设置,关于该类的说明很多,这里我就不多说。下面直接贴出我的使用结果。结果显示:...原创 2018-07-05 11:21:33 · 1883 阅读 · 0 评论 -
深度解析VC中的消息传递机制
Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的。所以,要学好Windows编程,必须对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析。什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告原创 2013-06-04 09:01:25 · 2089 阅读 · 0 评论 -
C++/MFC 中计算系统运行时间差
1、计算时间差在C++中可以使用clock()函数进行时间差的计算,clock()的说明百度得到的结果是:clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock(void) ;简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock(...原创 2018-08-18 16:29:52 · 2952 阅读 · 0 评论 -
收缩和扩展对话框的大小
很多时候,对话框上,我们不需要某一块区域时,会考虑将其隐藏起来。这里就来实现该功能。首先创建基于MFC对话框的应用程序,一直往下一步就行。其次,在对话框上添加一个按钮,将其text设置为“收缩<<”,ID设置为IDC_BTN_CHANGE,添加变量m_btnChange。然后添加对应按钮的事件处理程序,在对应函数中添加以下代码。void CCutDiglogContr...原创 2018-08-29 11:35:10 · 239 阅读 · 0 评论 -
【转载】MFC傻瓜式教程
该教程转载自:https://blog.csdn.net/hubojing/article/details/70306414?locationNum=13&fps=1大部分功能很实用。转载 2018-08-29 12:02:04 · 325 阅读 · 0 评论 -
MFC重绘对话框的边框和绘制圆角
说明:以下方法也是在网上查的,自己已实现。第一步:重载DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)LRESULT CMyTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam){ // TODO: 在此添加专用代码和/或调用基类 LRES...原创 2018-09-19 13:55:39 · 4167 阅读 · 3 评论 -
关于MFC重绘标题栏和其他设定位置的解决方案
背景:对话框无边框,需要在固定的位置进行重绘。落实步骤:1、自定义重绘类;2、调用重绘类;3、获取并处理需要重绘的区域。重绘类的代码如下:http://code1.okbase.net/codefile/BackgroundUtil.cpp_2012121817049_1.htm声明CBackgroundUtil m_BKShow; 在...原创 2018-09-27 17:50:11 · 848 阅读 · 0 评论 -
MFC单文档上控件的使用【笔记】
此处仅仅作为记录,是学习和工作的笔记。以下是创建自定义的工具栏的方法:第一步:在资源中添加一个工具栏IDR_TOOLBAR1,并在框架类的头文件中定义CToolBar newToolBar;第二步:在框架类的OnCreate函数中添加如下代码。/* 创建一个自定义工具栏 */ if (!newToolBar.CreateEx(this, TBSTYLE_FLAT,原创 2018-05-04 12:00:04 · 1421 阅读 · 0 评论 -
MFC状态栏字体与颜色的设置
编译环境VS2010,基于单文档的VC工程,执行效果如下图所示:1. 修改状态栏的字体及高度状态栏的高度取决于使用字体的大小,所以这里只讲如果修改字体。在OnCreate函数中调用状态栏对象的 m_wndStatusBar.SetFont()函数即可, 代码如下int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){转载 2018-05-03 16:04:27 · 3857 阅读 · 2 评论 -
MFC常见问题汇总【累计4个】
提示:IDD_DIALOG1是未声明的标识符。解决办法是:在该对话框类的头文件中添加:#include "resource.h"原创 2018-05-08 11:01:44 · 764 阅读 · 0 评论 -
mfc开发问题_v1
1. 设置对话框按钮背景图片?首先,设置对话框按钮的属性为Bitmap,然后导入资源文件(一个你需要作为背景的小图片),最后在该对话框类的OnInitDialog函数中添加如下代码://设置对话框按钮背景图片 HBITMAP hBmp=::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2));原创 2013-08-01 15:39:20 · 670 阅读 · 0 评论 -
MFC之SetTimer的使用
首先在这里说一下,我使用的环境是VS2005。先说一下步骤,然后贴出代码。步骤1:建立基于Dialog的MFC工程;步骤2:在对话框上添加两个静态框,分别为“1秒中刷新一次”和“2秒刷新一次” 。两个编辑框,分别为“IDC_EDIT1”和"IDC_EDIT2",默认情况下就是这样的。然后在对应的对话框类中添加两个成员变量:m_nData1 和 m_nData2然后把编辑框的Read原创 2013-08-27 11:36:41 · 9835 阅读 · 2 评论 -
MFC之CTime类 和 CtimeSpan类的使用
此文就用一个程序表示,相信只要是学过C语言的都能看得懂的。// CTimeTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "atltime.h"#include using namespace std;int _tmain(int argc,原创 2013-08-27 10:52:08 · 12630 阅读 · 2 评论 -
在对话框上添加软键盘
经过很长一段时间的摸索,最后,得到了以下的方法,可以实现在对话框上添加软键盘,并且店家键盘的按钮可以实现文本在编辑框中的显示。现在把操作方法写下来。第一步:导入5个文件,CZStatic.h和.cpp,CZButton.h和.cpp,KeyBoard.h和cpp,define.h。第二步:在想要添加软键盘的对话框的头文件中添加,以上的四个头文件。第三步:定义一个CZButton类型的键原创 2013-07-01 08:46:40 · 1372 阅读 · 1 评论 -
mfc 圆角按钮
第一步:往项目中添加MyButton.h 和MyButton.cpp 两个文件。第二步:然后将自己需要的BitMap文件导入。第三步:在项目工程的CARMDlg::OnInitDialog()中添加如下代码: SetIcon(m_hIcon,TRUE); // Set big icon SetIcon(m_h原创 2013-05-24 12:45:15 · 7152 阅读 · 0 评论 -
改变对话框上的字体颜色的大小
首先在类向导里面,映射一个成员变量,然后在该类的初始化函数中写出以下代码(主要是创建一个字体),然后用映射的成员变量调用SetFont()就可以了。//设置对话框上的字体 CFont * f; f = new CFont; f->CreateFont(16, // nHeight 0, /原创 2013-05-15 16:46:36 · 866 阅读 · 0 评论 -
将一个对话框直接贴到另一个对话框上
假设要贴的对话框是CGroup,被贴的是B第一步:在B类的protected中添加CGroup m_lpGroup;第二步:在B类的OnInitDialog中添加以下代码://添加按钮组到对话框 m_lpGroup.Create(IDD_GROUP,this); m_lpGroup.SetWindowPos(NULL,310,UI_GROUP_HEIGHT,780,UI_GROUP原创 2013-05-15 15:25:38 · 1293 阅读 · 1 评论 -
在mfc对话框前添加起始对话框的问题
前提:首先添加UIcontrol.cpp和UIcontrol.h两个文件。#pragma onceenum { UI_INDEX_MAIN=0, //主窗口界面 //UI_INDEX_SECOND, //第二个界面//上面的界面对应自己的每一个界面};class CUIcontrol{public: CUIcontrol(void); ~CUIcontrol(voi原创 2013-05-30 14:43:54 · 756 阅读 · 0 评论 -
使用MFC 发送消息模拟按钮按下事件
有时我们需要这么做, 手动模拟按钮按下的事件, 让程序做出与按钮真的按下时一样的响应. 设按钮ID为ID_BTN_OK, 当前Dialog窗口. 实际上系统并不能区分按钮是真的按下了(如用鼠标点击), 还是一个我们自己用代码模拟出的一种"假象".它所需要知道的只是哪个窗口(按钮也是一种窗口)发生了哪一种事件, 然后在消息循环中处理它. 系统怎么才能知道这些呢转载 2013-05-29 16:06:17 · 1027 阅读 · 0 评论 -
对话框上的控件的大小和位置随着对话框的大小的改变而变化
很多人在用MFC编程的时候都会遇到这样的问题,本人经过自己的总结,得出了以下方法,在这里和大家共享。首先假设这个对话框类为CMyDialog。第一步:在CMyDialog中添加一个成员变量CRect m_rect;第二步:在CmyDialog的初始化函数OnInitDialog()中添加GetClientRect(&m_rect);第三步:自定义一个函数,根据控件ID进行处理原创 2013-05-15 15:23:38 · 1129 阅读 · 0 评论 -
MFC之CString对象的各种函数
一、MFC常用类之String 类1、CString的构造函数:CString(const CString& stringSrc);将一个已经存在的CString 对象 stringSrc 的内容拷贝到该 CString 对象。例如:CString str1(_T(“www.google.com”)) ; //将常量字符串拷贝到str1 CString str2(str1) ;原创 2013-08-27 10:03:48 · 1262 阅读 · 0 评论 -
关于_RecordsetPtr下GetRecordCount函数的使用注意
_RecordsetPtr对象的GetRecordCount()方法总是返回-1_RecordsetPtr对象的GetRecordCount()方法总是返回-1,而实际上是有数据的。在csdn上看到了一个帖子,解决办法是(经测试可行):注意记录集的类型和游标类型,将游标类型设置为adUseClient(客户端游标)。_RecordsetPtr pRs = NULL;p转载 2016-12-28 14:44:49 · 2460 阅读 · 0 评论 -
MFC中获取系统的日期和时间
框1,框2,框3:Static Text控件,修改ID m_strDate:关联框1,CString数据类型(Value类别) m_strTime:关联框2,CString数据类型(Value类别) m_strDateTime:关联框3,CString数据类型(Value类别) 获取按钮消息响应函数: void CTest17GetTimeDl转载 2018-04-18 17:36:37 · 13893 阅读 · 0 评论 -
MFC中的SetTimer的使用
这里对于SetTimer()函数原型的定义我就不啰嗦,直接上网查。我直接贴出代码和结果。1、首先在OnInitDialog()中添加如下代码:// TODO: 在此添加额外的初始化代码 CTime m_time; m_time = CTime::GetCurrentTime(); CString m_strDate; CString m_strTime; m_strDate原创 2018-04-18 18:00:44 · 4732 阅读 · 0 评论 -
关于VS2008下Microsoft Incremental Linker已停止工作的解决办法
这里直接写解决办法:项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)选择项目,属性->配置属性 ->C/C++,修改原创 2018-04-19 11:24:08 · 189 阅读 · 0 评论 -
点击对话框上的按钮,实现弹出页面,页面在本界面显示?
功能实现:点击一个对话框上的按钮,实现打开子对话框,关闭父对话框。说明:可以在点击按钮后发送一个消息,实现关闭。此处最好不要用DestroyWindow函数, 因为DestroyWindow是针对非模态对话框。CDataSet CDataSetDlg;this->SendMessage(WM_CLOSE,0,0);CDataSetDlg.DoModal();原创 2013-05-15 15:10:32 · 3017 阅读 · 0 评论