
C++/MFC
郁闷阳光
作为码农,建此博客的目的是记录工作历程中的点点滴滴,分享工作中的感悟、思考。
展开
-
对话框控件的提示功能
按照下面的步骤去做: 1、在头文件中添加消息响应函数的申明 afx_msg BOOL OnToolTip(UINT id,NMHDR * pNMHDR,LRESULT * pResult);2、在CPP文件中加入消息映射 ON_NOTIFY_EX(TTN_NEEDTE转载 2011-09-06 21:46:13 · 501 阅读 · 0 评论 -
VC中多语菜单的实现
随着Internet的发展,软件的国际化不可避免。一种软件可能被很多国家的人使用,如给您的软件加上多种语言的菜单,不但给使用者带来很多方便,也为您的软件的推广带来很多便利。比如给您开发的中文软件,加上一个英语或日语菜单,对母语为英语和日语的朋友将会带来很多便利。VC中实现多语菜单转载 2011-09-07 16:28:10 · 481 阅读 · 0 评论 -
如何设置对话框的动画效果
我们这里主要用到User32.dll中的AnimateWindow函数来实现对话框的动画效果,在对话框的初始化代码中加上如下代码:BOOL CLOGIN::OnInitDialog() { CDialog::OnInitDialog(); m_TypeList.S翻译 2011-09-26 15:04:39 · 1282 阅读 · 0 评论 -
List Control控件技巧总汇(2)
21.在CListCtrl显示文件,并根据文件类型来显示图标网上找到的代码,share BOOL CTest6Dlg::OnInitDialog() { CDialog::OnInitDialog();转载 2011-09-27 10:35:44 · 446 阅读 · 0 评论 -
MFC 制作向导对话框
软件环境:visual studio 2008先看效果图:下面是具体做法:1、建立以各基于对话框的MFC应用程序,例如Wizard,在向导的最后一步“生成的类”将对话框的类名改为CStep1Dlg,头文件、cpp文件相应的改过来(不改也可以,只是容易区分而已转载 2011-09-27 14:46:17 · 764 阅读 · 0 评论 -
修改应用程序的外观,工具栏、状态栏
第一部分 改变应用程序的外观一、问题:要修改一个应用程序的外观,应该在应用程序创建之前还是在创建之后修改呢?修改一幢楼房应在建成之前,应在窗口创建之前修改。要改变一个框架窗口的外观,应在CMainFrame::PreCreateWindow()中去改变,CRE转载 2011-09-27 14:38:08 · 825 阅读 · 0 评论 -
MFC控件小记-Progress Control
MFC封装了进度条的操作,主要通过CProgressCtrl来对其进行操作,常用的成员函数如下:lm_progress->GetPos(); //获取进度条的当前位置 m_progress->GetRange(int min,int max); //获取进度条控件原创 2011-09-27 14:40:40 · 4263 阅读 · 1 评论 -
如何实现文件夹的选择
提示用户进行路径的输入输出,除了我们常用的CFileDlg外,我们也可以用WINDOW API来实现,主要用到2个函数,SHBrowseForFolder(),SHGetPathFromIDList,实例代码如下: TCHAR szPath[_MAX_PATH]; BRO翻译 2011-09-27 10:13:38 · 685 阅读 · 0 评论 -
VC中树形控件(CTreeCtrl)的使用
树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW TVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当转载 2011-09-27 10:22:12 · 748 阅读 · 0 评论 -
ListCtrl 详细用法
列表控件有3种类型,先来介绍REPORT类型的CListCtrl:首先使用下面的语句设置CListCtrl的style:DWORD SetExtendedStyle( DWORD dwNewStyle );其中LVS_EX_CHECKBOXES 表示添加CheckBo原创 2011-09-27 14:44:29 · 1233 阅读 · 0 评论 -
定时对话框的实现
在我们常用的软件中,有一种对话框它非常特别,能在某一时刻显示,然后显示一段时间后自动关闭,MSDN中有一些关于具体实现的说明,整理了下。实现原理很简单,首先定义一个自己的窗口类,继承自CWnd类,对其中几个比较重要的函数进行说明,void CQQMsgWnd::CreateM原创 2011-09-27 15:03:24 · 448 阅读 · 0 评论 -
对话框的渐变显示以及退出
在实现定时对话框的操作过程中,我们可以在对话框的显示以及退出过程中,加入渐变过程,void CMsgWnd::CreateMsgWindow(){// RECT rect;// SystemParametersInfo(SPI_GETWORKAREA,0,&rec原创 2011-09-27 16:10:38 · 568 阅读 · 0 评论 -
List Control控件技巧总汇(1)
以下未经说明,listctrl默认view风格为report -------------------------------------------------------------------------------1. CListCtrl 风格翻译 2011-09-27 10:34:45 · 434 阅读 · 0 评论 -
如何创建非模态对话框
无模式对话框与有模式对话框不同的是在创建后其他窗口都可以继续接收用户输入,因此无模式对话框有些类似一个弹出窗口。创建无模式对话框需要调用 BOOL CDialog::Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );之后还转载 2011-09-29 11:49:57 · 564 阅读 · 0 评论 -
MFC中用正则表达式进行有效性验证
正则表达式最实用的一个地方是验证用户输入。它可以轻松验证邮编、电话号码、信用卡号码——以及现实世界中各种类型的信息。一个正则表达式可以替换成打甚至上百行过程代码。Unix和Web编程语言如Perl从一开始就有正则表达式,但在Windows世界或MFC,从来都是使用第三方库,一直到转载 2011-09-29 14:47:01 · 521 阅读 · 0 评论 -
在VC中透明浮动按键的实现
有一种按键,看起来是一幅完整的图片,当鼠标移到按键区域时,图片的一部分凸现,形成一个按键,当鼠标移走时又恢复原来状态。 最近,看了一些关于浮动按键的代码,其原理大致上跟CBitmaPButton差不多,用数幅位图代表按键的各个状态,响应鼠标的各种消息来设置按键的状转载 2011-09-29 11:51:12 · 905 阅读 · 0 评论 -
常见Visual C++开发使用问答
·我应该怎样防止 MFC 在窗口标题栏上添加文档名? 在 PreCreateWindow 函数中删除 FWS_ADDTOTITLE 标志的窗口样式: cs.style &= ~FWS_ADDTOTITLE; ·我应该怎样防止 MFC 在窗翻译 2011-09-29 14:18:27 · 339 阅读 · 0 评论 -
MFC如何封装WINDOWS应用程序的流程
MFC封装了WIN API.大家都知道.但是MFC应用程序的真正流程又有多少人知道呢? 下面就是我对MFC启动代码的一些剖析. 大家都知道,标准WIdonws程序的入口函数是WInMain(),但是我们在MFC生成的应用程序中,完全找不到其踪迹,查原创 2011-09-29 14:38:13 · 789 阅读 · 0 评论 -
MFC中常用类、宏、函数的简单介绍
闲来无事,整理了一下MFC中常用的类、宏、函数。 常用类 CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right。分别表是左上角和右下角的坐标。可以通过以下的方法构造: CRect( int l, int t, int r,原创 2011-09-29 14:44:52 · 387 阅读 · 0 评论 -
用ATL和MFC来创建ActiveX控件的比较
本文假定你熟悉MFC, ATL, and COM 摘要目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发。MFC代表了创建独立的Windows应用的一种简单、一致的方法;ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码。这两种框转载 2011-09-29 14:26:13 · 760 阅读 · 0 评论 -
使用CPU时间戳进行高精度计时
正文 对关注性能的程序开发人员而言,一个好的计时部件既是益友,也是良师。计时器既可以作为程序组件帮助程序员精确的控制程序进程,又是一件有力的调试武器,在有经验的程序员手里可以尽快的确定程序的性能瓶颈,或者对不同的算法作出有说服力的性能比较。在Windows平台下,常用转载 2011-09-29 11:33:49 · 500 阅读 · 0 评论 -
VC调试技巧
首先设置断点在类观察器中设置函数断点,先选择一个函数,然后从相关菜单中选择设置断点,或按F9键. 你也可以使用工具栏中查找组合框来输入函数名,然后按F9设置断点.PID向导如果你想附加一个过程,却没有过程的ID,那么使用过程观察器(PVIEW). (PID). 要记住原创 2011-10-13 11:43:52 · 299 阅读 · 0 评论 -
Visual+C+++中的+ODBC+编程
摘要:ODBC(Open Database Connectivity,开放式数据库连接),是一种用来在相关或不相关的数据库管理系统(DBMS)中存取数据的标准应用程序接口(API)。本文给出Windows95环境下用VisualC++进行ODBC编程的具体方法及 技巧。关键字翻译 2011-10-13 11:49:58 · 594 阅读 · 0 评论 -
如何检索原先的Task Manager应用程序使用的任务列表
原先的Task Manager应用程序显示顶层窗口的列表。为了显示该列表,窗口必须可见、包含一个标题以及不能被其他窗口拥有。调用CWnd:: GetWindow可以检索顶层窗口的列表,调用IsWindowVisible、GetWindowTextLength以及GetOwner可原创 2011-10-13 11:55:41 · 389 阅读 · 0 评论 -
CRuntimeClass的应用
CRuntimeClass在MFC中的作用很重要,因为MFC利用它来进行类的动态确定,即是通过类变量来判定该变量是否为某一类的实例。由于指针的类型是可以转换的,所以时常会出现从A到B的转换导致错误。而在MFC的各种书籍中对CRuntimeClass的介绍是比较少的,在这里总结它的原创 2011-10-13 11:40:23 · 505 阅读 · 0 评论 -
怎样加载其他的应用程序?
三个SDK函数 winexec, shellexecute,createprocess可以使用。WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,就是Neterm,c原创 2011-10-13 11:53:52 · 376 阅读 · 0 评论 -
获取进程的当前目录
系统记录中进程的当前驱动器和目录,但是并非为所有的驱动器记录当前目录。不过,操作系统通过环境变量对其有一些支持。 =c:=c:\ultil\bin =d:=d:\program如果我们调用Win32函数的时候,传递给它一个指定驱动器,并且该驱动器不是当前驱动器,系统就原创 2011-10-13 17:05:05 · 481 阅读 · 0 评论 -
进程的实例句柄
WinMain函数中的句柄值实际上是个基本内存地址,它指出系统在何处把EXE文件装载入进程的地址空间。例如,如果系统打开了可执行文件,在地址0X400000处装载了它的内容,那么进程实例句柄的值就是0X400000。这个基本地址是连接器决定的,当然,我们也可以自己设定,不同版本的原创 2011-10-13 10:41:04 · 1004 阅读 · 0 评论 -
VC++5.0定制窗口的方法
VC++5.0是Microsoft新近推出的可视化C++集成开发环境。它在继承以前VC++的基础上增加了许多新的功能,用于支持Win32平台应用程序、服务程序和控件的开发。VC++5.0提供了强大、快捷的编程工具,其中最基本的是三个导航: AppWizard用于程序框架的生成,A原创 2011-10-13 11:38:51 · 459 阅读 · 0 评论 -
在MFC加入"这是什么?"的帮助提示
MFC在CPropertySheet中封装了属性,但不支持标题的"这是什么?"帮助提示.函数CPropertySheet::OnNcCreate()屏蔽了扩展风格WS_EX_CONTEXTHELP, 因此,即使你在构造函数中加入了扩展风格,它也不能出现在窗口中.解决方法很简单原创 2011-10-13 11:44:37 · 542 阅读 · 0 评论 -
如何访问预定义的GDI对象
可以通过调用CDC:: SlectStockObject使用Windows的几个预定义的对象,诸如刷子、笔以及字体。下例使用了Windows预定义的笔和刷子GDI对象在视窗中画一个椭圆。//Draw ellipse using stock black pen and gray原创 2011-10-13 11:57:44 · 698 阅读 · 0 评论 -
进程的创建以及退出
我们可以在程序中调用CreateProcess(),创建一个进程,该函数会创建一个进程内核对象以及一个线程内核对象,并且将 其计数设为1,在该函数成功返回前,会将子进程的进程内核对象以及线程内核对象句柄拷贝到结构体中,因此,该函数成功返回后,进程内核对象与线程内核对象的计数都变为原创 2011-10-13 22:43:26 · 678 阅读 · 0 评论 -
Windows中如何计算时间间隔(2)COleDateTime 和COleDateTimeSpan类
COleDateTime 和COleDateTimeSpan 也是常用的2个时间类,其用法类似于前面的CTime和CTimeSpan.先分别进行说明,下面的内容引用自MSDN。 COleDateTime没有基类。 COleDateTime类封装了OLE自动化中原创 2011-10-17 11:31:08 · 3282 阅读 · 0 评论 -
Windows中如何计算时间间隔(2)使用SYSTEMTIME和FILETIME
SYSTEMTIME和FILETIME是两个结构体,定义如下:typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD原创 2011-10-17 11:58:56 · 2447 阅读 · 0 评论 -
遍历文件夹并建成目录树
前些日子,我在做程序中遇到这样一个问题,要用树型控件快速浏览指定文件夹中的文件,经过一番周折,终于做出来了,想到有些仁兄可能遇到和我相同的困难,所以将我的做法写出来,希望对大家有些帮助!基本原理是用了函数的递归调用,再加入参数跟踪。我在调试程序的时候,跟踪发现:程序只有在原创 2011-10-17 14:22:10 · 558 阅读 · 0 评论 -
Windows中如何计算时间间隔(1)使用CTime 和CTimeSpan
时间函数在我们的程序中是使用频率较高的函数,现将其归纳总结一下,这一章主要讲下CTime 和CTimeSpan,前者表示一个时间点,而后表示一个时间段。CTime代表的是绝对时间,CTime andCTimeSpan 没有虚函数,大部分函数为内联函数,类对象的大小都为8.CT原创 2011-10-17 10:56:22 · 3653 阅读 · 0 评论 -
遍历文件夹并建成目录树(2)
这个是在上个版本上面修改而来,没有目录级数的限制。BOOL CFileTreeDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Set the icon for this dialog. The framewo原创 2011-10-17 15:45:55 · 741 阅读 · 0 评论 -
如何使应用程序只运行一个实例
相信大家都用过金山词霸一类的工具软件吧,无论你打开几次,都只运行一个实例,那么这个是如何实现的呢?要使应用程序只运行一个实例,一个简单的方法是在应用程序类中使用命名的互斥量,。实例1: 新建一基于对话框的工程CTest,采用默认设置2 在应用程序类CEx1App::I原创 2011-10-18 11:32:10 · 337 阅读 · 0 评论 -
在MFC程序中添加全屏显示功能
这是工作室为实现全屏显示所发集的一个演示程序。你可以通过选择全屏显示菜单选项时看到相应的效果。这段代码包括两个内容:全屏显示,浮动工具条(用于恢复操作)。下图便是全屏状态和用于切换的浮动工具条 具体实现步骤:以下的代码被添加到CmainFrame类中。转载 2011-10-18 13:58:01 · 612 阅读 · 0 评论 -
如何限定对话框大小范围?
主要通过相应WM_SIZE消息实现,在 WM_SIZING的响应函数OnSize中加入下面代码:void CYourDialog::OnSize(UINT fwSide, LPRECT pRect) { if(pRect->right - pRect->l原创 2011-10-18 14:00:24 · 437 阅读 · 0 评论