
MFC
文章平均质量分 72
天桥雨
这个作者很懒,什么都没留下…
展开
-
MFC中listctrl的补充介绍
一.实现单击或双击CListCtrl控件的某一行或某一列对应的事件被触发、相应的函数被调用。头文件:public:afx_msg void OnNMClickReasonList(NMHDR *pNMHDR, LRESULT *pResult);//单击afx_msg void OnNMDblClickReasonList(NMHDR *pNMHDR, LRESULT *p原创 2016-08-16 14:14:55 · 1190 阅读 · 0 评论 -
MFC中theApp的用法
MFC应用程序中,无论是基于单文档还是对话框的应用程序,在应用程序类中,都有theApp这个变量,eg:CADOApp theApp;theApp代表应用程序实例~~如果我们在应用程序类再定义了一个变量,例如 _ConnectionPtr m_pConnection; 当我们在其他类,比如Dlg类中,想用到m_pConnection这个变量时,可以借助theApp来调用,例转载 2016-12-09 13:43:32 · 4839 阅读 · 0 评论 -
LeaveCriticalSection问题的解决方案
1、问题描述在VS2010执行过程之中,程序崩溃,出现了以下问题,导致程序中断。如图1所示程序报错如下所示:[cpp] view plain copy *******************************************************************************/ void __cdecl _转载 2016-11-25 19:25:45 · 2108 阅读 · 0 评论 -
VS2012 CString转char*时,每个字符后面都会多出一个\0的解决办法
CString转字符数组时,数组中每个字符后面都会多出一个\0 的原因: 是Unicode字符集的问题。选择项目->项目属 性(或直接按alt+F7)->配置属性,在右边找到“字符集”,将“使用Unicode字符集”改为“使用多字节字符集”。保存之后需要重新生成 解决方案,然后通过网上介绍的多种方法从CString转字符数组每个字符后面再也不会多出\0字符了。 实际应用转载 2016-10-28 18:17:20 · 2389 阅读 · 0 评论 -
在调试MFC程序中查看变量的方法(包含控制台)
在调试MFC程序时,我们经常需要查看特定位置变量的输出值。或者在某特定条件执行时,给出一个输出标识。一般来说,有3种方法:1)调用TRACE(LPCTSTR lpszFormat, ...)函数 在MFC中使用TRACE函数来打印输出结果却是非常方便,和在控制台程序中使用printf函数的使用方法和效果类似。不过有几点 需要注意:一,TRACE函数的输出转载 2016-11-07 19:49:08 · 8097 阅读 · 0 评论 -
调试技巧之调用堆栈 - Call stack
简单介绍 调试是程序开发者必备技巧。如果不会调试,自己写的程序一旦出问题,往往无从下手。本人总结10年使用VC经验,对调试技巧做一个粗浅的介绍。希望对大家有所帮助。 今天简单的介绍介绍调用堆栈。调用堆栈在我的专栏的文章VC调试入门提了一下,但是没有详细介绍。 首先介绍一下什么叫调用堆栈:假设我们有几个函数,分别是function1,function2,functi转载 2016-11-07 19:53:08 · 1521 阅读 · 0 评论 -
MFC向导页面的补充介绍
一.删除向导页面上指定的按钮。1.删除帮助按钮。this->m_psh.dwFlags &= ~PSH_HASHELP;//给属性表添加xxxPage->m_psp.dwFlags &= ~PSP_HASHELP;//给属性页添加xxxPage->m_psp.dwFlags &= ~PSP_HASHELP;//给属性页添加xxxPage->m_psp.dwFlags &= ~P原创 2016-08-17 11:07:12 · 1170 阅读 · 0 评论 -
在MFC中实现打开文件的功能
做了个MFC小程序,是将html文件转成源代码txt文件的,具体代码是ifstream fin("a.html"); ofstream fout("a.txt"); char c; int flag; while(fin>>c){ if(c=='<') flag=0; if(flag) fout<<c; if(c=='>') flag=1;以上代码只能提取名字固定为a.h转载 2016-08-16 10:10:41 · 567 阅读 · 0 评论 -
MFC向导页面(wizard page)
在使用各种软件产品时我们学会碰到点next的那种页面,像安装程序啊,或者注册之类的场景中最常见.我们一般把这样的页面叫向导页面.下面我们来瞧瞧是咋实现的.创建向导页面最关键的就是两个类的使用CPropertySheet与CPropertyPage.你可以这样简单的来理解,CPropertySheet像一个文件夹子,里面装着一页页的文件(CPropertyPage). 下面来创建只有两个转载 2016-08-17 10:29:58 · 690 阅读 · 0 评论 -
一些编程基础的注意(持续更新)
形参如果是字符或整型数组的数组名,用for循环赋值或strcpy赋值函数结束后可以保留这些值,而形参如果是指针的话,不能用strcpy赋值,而是直接等于,函数结束后不可以保留赋的值。 >>的时候如果超过最低位了,则超过的部分自动消失,无需先&再>>。如11110101,如果需要取高四位放在低四位上,不需要(11110101 & 11110000)>>4,直接11110101>>4即可,原创 2016-12-05 19:05:15 · 307 阅读 · 0 评论 -
MFC中改变按钮颜色的方法
1.使用CMFCButton类MFC自带的MFC Button Control控件等按钮可以修改颜色,还能添加图片,设置字体颜色等。这些控件就在工具箱的下面,前面带MFC开头的那些。在需要改颜色的地方调用m_btn.SetFaceColor(RGB(0, 255, 0));即可。CMFCButton中的SetFaceColor()可能会显示不出颜色,需要设置m_button原创 2017-01-06 20:58:38 · 35361 阅读 · 2 评论 -
MFC自绘按钮的实现(不断更新)
一.自绘按钮的实现过程申明自绘属性进行VM_MESUREITEM事件响应,说明按钮的尺寸进行VM_DRAWITEM消息的重新响应,说明如何绘制按钮首先在vc6中新建工程,选择MFC并且新建dialog工程输入工程名,然后将生成的按钮等删除,重新添加两个按钮。为按钮设置属性选择自绘,就是自己向上贴图在dlg类的对象上添加WM_DRAWITEM属性在生成转载 2017-01-09 19:59:36 · 6054 阅读 · 0 评论 -
MFC常见面试问题(持续更新)
1)说说mfc中的类继承图的基本框架,2)说说CView类的子类都有什么。视图类(CView)的三个子类 CScrollView类提供视图的滚动显示;CEditView类支持在视图中的文本编辑操作;CHtmlView类支持在视图中显示和操作html文件。3)DLL的三种调用形式。DLL的概念可以向程序提供一些函数、变量或 类 。静态链接库转载 2017-01-16 18:46:05 · 17556 阅读 · 0 评论 -
MFC六大核心机制
我们选择了C++,主要是因为它够艺术、够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为必然。 首先,列出要讲的MFC六大核心机制: 1、MFC程序的初始化。 2、运行时类型识别(RTTI)。 3、动态创建。 4、永久保存。转载 2017-01-17 18:53:56 · 1189 阅读 · 0 评论 -
MFC中窗口重绘
在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和 WM_NCPAINT(通知非客户区有变化)WM_NVPAINT系统会自己搞定WM_PAINT消息对应转载 2017-01-17 18:29:55 · 1040 阅读 · 0 评论 -
C++中Cbitmap,HBitmap,Bitmap的区别及联系
加载一位图,可以使用LoadImage:HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad);LoadImage可以用来加载位图,图标和光标加载时可以规定加载图的映射到内存的大小: cxDesired:指定图标或光标的宽度,以像转载 2017-01-10 15:53:01 · 6933 阅读 · 0 评论 -
MFC定时器的用法
Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 Settimer是设置,Ontimer是响应Settimer消息的。SetTimer函数的用法1 )用WM_TIMER来设置定时器先请看SetTimer这个API函数的原型UINT_PTR SetTimer(转载 2017-01-10 13:59:16 · 557 阅读 · 0 评论 -
MFC跑马灯的效果(持续更新)
dlg头文件中变量定义:CString m_string;RECT m_rect;RECT rect_static;SIZE size;对话框初始化:// TODO: Add extra initialization herem_string = "ABCDEFGHIJK MFC 中 在一个对话框中 实现跑马灯";SetTimer(1, 200, NULL);转载 2017-01-09 20:27:30 · 2257 阅读 · 0 评论 -
MFC非客户区自绘标题栏的实现(不断更新)
某些情况下需要在对话框标题栏上添加按钮,在此mark下:环境:win7 + vs2008 + sp1 项目:MFC对话框步骤: 1. 重写方法:DefWindowProc 1.1 .h文件添加代码如下: a. virtual void DoDataExchange(CDataExchange* pDX);转载 2017-01-09 20:05:08 · 6468 阅读 · 3 评论 -
在MFC中获取控件相对位置和使按钮变灰
一.获取控件相对位置。 CRect frameRect; GetDlgItem(frameId)->GetWindowRect(&frameRect);//获取控件相对于屏幕的位置。 ScreenToClient(frameRect);//转化为对话框上的相对位置。 const int height = frameRect.bottom - frameRec原创 2016-08-17 14:08:53 · 1045 阅读 · 0 评论 -
在MFC中改变控件大小和位置
用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。void MoveWindow(int x,int y,int nWidth,intnHeight);void MoveWindow(LPCRECT lpRect);第一种用法需给出控件新的坐标和宽度、高度;第二种用法给出存放位置的CRect对象;例:CWnd *pWnd;转载 2016-08-17 14:02:58 · 624 阅读 · 0 评论 -
显示和关闭对话框
一、显示对话框1.显示模式对话框:CDialogDemo dlg;dlg.DoModal();2.显示非模式对话框:CDialogDemo *dlg=new CDialogDemo(this);dlg->Create(IDD_GENERAL_CONTROL);dlg->ShowWindow(SW_SHOW);二、关闭对话框:1.CDialog::转载 2016-08-16 18:23:04 · 4651 阅读 · 0 评论 -
MFC对话框程序EDIT类控件的自动换行,垂直滚动条自动下移
1.新建一个Edit Control,将其Multiline属性设置为True,AutoHScroll属性设置False,这样就可以实现每一行填满后自动换行了。2.再将Vetrical Scroll属性设置为True,当输入或显示超过编辑框的大小后就会出现垂直滚动条。3.如果是输入,滚动条会自动移动跟随到当前输入行,但是如果是设置将很多内容一次性让编辑框显示,滚动条就会一直处于最上转载 2016-08-16 13:12:29 · 612 阅读 · 0 评论 -
获取EditCtrl中数字的方法
方法一:使用CEdit::GetWindowText()函数先获取字符串,然后使用atoi函数转换为整型,下面以计算俩个编辑框数字之和并显示到结果编辑框上的函数内容为例:int num1,num2,result;char ch1[10],ch2[10],ch3[10];GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);GetDlgIt原创 2016-08-16 11:49:51 · 5131 阅读 · 1 评论 -
UpdateData函数的学习
在类向导中为控件添加相应的变量时,classwizard会为控件和变量建立一个相应的关联,下面以EditBox为例来说明:选中Edit Control控件,鼠标右击,选择添加变量,选择变量类型为value,输入变量名称,权限为private,点击确定按钮。上述操作的过程也可由开发者手动打入代码中,在代码中反映如下:类的头文件:private: CString原创 2016-08-16 11:00:25 · 1009 阅读 · 0 评论 -
在MFC中使EditBox处于只读模式,无法被编辑
在类向导中的虚函数一栏,找到PreTranslateMessage,点击对其进行如下重写:BOOL XxxDlg::PreTranslateMessage(MSG* pMsg){ // TODO: Add your specialized code here and/or call the base class if(pMsg->message == WM_KEY原创 2016-08-16 10:56:28 · 7454 阅读 · 0 评论 -
MFC Edit control的用法
MFC里面的EDIT Control控件的用法是怎么样的,1.怎么样才能赋值给EDIT Control控件并在EDIT Control控件显示出来;2.怎么取得EDIT Control控件的值并传递给一个变量?希望各位大侠帮帮忙!//获得EDITCEdit* pBoxOne;pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1);//付值pBoxO转载 2016-08-16 10:40:37 · 933 阅读 · 0 评论 -
MFC VS2010 改变button上的字体大小
CFont * f; f = new CFont; f->CreateFont(36, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD, // nWeight TRUE, // bItalic FALSE, //转载 2016-08-16 10:35:43 · 7434 阅读 · 0 评论 -
MFC 点击按钮,弹出另一个对话框
方法一:模态对话框资源视图--Dialog--右键--添加资源--新建--对话框-,然后在已经生成的对话框中(解决资源视图中的dialog下的新生成的那个)右键--添加类。例如:添加CMyNewDlg类,在所要调的代码中(按钮点击方法所在的文件代码),先加头文件#include "CMyNewDlg.h ",之后在按钮点击方法中:void COnclickDlg::OnBnClicke转载 2016-08-16 10:32:04 · 791 阅读 · 0 评论 -
在MFC中使用Tab控件
首先我们新建一个MFC程序, 就简简单单搞个Dialog吧~ 然后在”资源”找到Tab Control控件, 将他拖进来~ 虽然面板显示了这个控件, 但它完全不会起作用, 因为在代码层次来讲它完全未实现, 只是在资源文件中有所体现 之后选择主Dialog, 右键选择添加变量, MFC会根据控件在实现类里边添加关于Tab Control的变量,转载 2016-08-16 10:20:38 · 986 阅读 · 0 评论 -
在MFC中的对话框上画一条线
方法一(推荐):使用工具箱中的picture控件,类型设为Etched Horz或Etched Vert,分别对应横线和竖线。方法二:在代码中使用MoveTo+LineTo函数,用法如下:CPaintDC dc(m_hWnd);POINT p1, p2;... // 设置p1,p2的值dc.MoveTo(&p1);dc.LineTo(&p2);原创 2016-08-16 13:24:46 · 3612 阅读 · 0 评论 -
MFC中Listbox控件的简单使用
MFC中listbox控件是为了显示一系列的文本,每个文本占一行。Listbox控件可以设置属性为:LBS_CHILD :(默认)子窗口LBS_Visible :(默认)可视LBS_Multiplesel :可选择多行LBS_Extendedsel :可以使用shift或ctrl选择多行LBS_SORT:所有行按字母顺序进行排序转载 2016-08-16 13:46:49 · 748 阅读 · 0 评论 -
列表框控件ListBox
本文转自http://www.jizhuomi.com/software/186.html前面两节讲了比较常用的按钮控件,并通过按钮控件实例说明了具体用法。本文要讲的是列表框控件(ListBox)及其使用实例。 列表框控件简介 列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选中的项会高亮显示。列表框可分为单选列表框和多选列表框,顾名思义,单选列转载 2016-08-16 13:51:31 · 955 阅读 · 0 评论 -
MFC中实现对话框最小化到托盘功能
头文件:#define WM_SHOWTASK WM_USER+1class XxxDlg : public CDialogEx{// Constructionpublic: XxxDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data enum { IDD = IDD_原创 2016-08-16 18:11:02 · 1298 阅读 · 0 评论 -
如何使程序最小化到系统托盘
最近自己利用activemovie制作了一个简单的音乐播放器,希望像qq,千千静听,暴风影音那样程序最小化时在系统托盘中显示而不是在任务栏中。如下:1.在基于对话框的程序的头文件中添加成员变量 NOTIFYICODATA m_nid2.自定义消息函数OnShowTask 1)首先在头文件中定义 #define WM_SHOWTASK WM_USER+1 2)在头文件映射中在添加 a转载 2016-08-16 17:30:40 · 2716 阅读 · 0 评论 -
使对话框的最大化、最小化和关闭按钮变灰以及对其重载的方法
一.使对话框的最大化、最小化和关闭按钮变灰。1.在OnInitDialog()函数中添加以下代码使关闭按钮变灰:CMenu* menu = this->GetSystemMenu(FALSE);menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);如果还想屏蔽掉Esc和Art + F4快捷键的话,重载On_Cancel()函数原创 2016-08-16 17:23:15 · 4412 阅读 · 0 评论 -
在MFC中让对话框最小化到托盘
1、在资源中的Icon中导入一个自己喜欢的图标,ID命名为IDR_MAINFRAME,将先前的IDR_MAINFRAME的图标删除掉;2、在自己的Dialog头文件中定义一个变量 NOTIFYICONDATA m_nid,关于该结构体的具体信息可以查阅MSDN;3、添加消息响应函数OnInitDialog(),并在该函数中添加以下代码,这样程序一启动,就在托盘中显示出了自己应用程序的图标转载 2016-08-16 17:27:01 · 1976 阅读 · 0 评论 -
MFC中图片控件Picture Control的使用
上一节中鸡啄米讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control。我们可以在界面某个位置放入图片控件,显示图片以美化界面。 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。 图片控件静态和动态加载图转载 2016-08-16 15:54:18 · 5769 阅读 · 0 评论 -
Combo Box用法
一、如何添加/删除Combo Box内容1. 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。2. 在程序初始化时动态添加 如: //控件内容初始化 CString strTemp;((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetCont转载 2016-08-16 15:48:39 · 405 阅读 · 0 评论 -
MFC中Combo_Box(下拉框)的用法
Combo Box(组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。 1.改变下拉框大小 1)直接在控件上操作,先点向下的箭头,就可以调整下拉框大小; 2)为了让列表框变的更宽,可以用setdroppedwidth(int width)函数来调整列转载 2016-08-16 15:47:11 · 1410 阅读 · 0 评论