VC++ MFC开发笔记
liuyi1207164339
这个作者很懒,什么都没留下…
展开
-
MFC工程中播放背景音乐的实现
先包含头文件 #include 在项目属性->配置属性->Linker->Input->Additional Dependencies 写入 VFW32.lib下面是实现:HWND hMCI;HWND hMCI;CString choose = _T("E:\\MyDocument\\Music\\乔任梁 - 和你在一起.mp3"); //音乐文件的路径 hMCI = M原创 2015-06-29 10:49:50 · 4291 阅读 · 2 评论 -
MFC对ini文件的操作
之前讲了MFC对注册表的操作,虽然现在都提倡把信息写入注册表中,但是有时候需要把配置信息写到本地比如工程目录下面,这样便于查看。 API有两种配置文件的函数。 第一种,无路径的,默认读写的配置文件路径C:\Windows\win.ini (前提是没有调用SetRegistryKey函数,如果调用了此函数,就会把配置文件映射到注册表,相应的数据也会写入到注册表而不是配置文件中)原创 2015-07-03 19:47:05 · 813 阅读 · 0 评论 -
MFC对注册表的操作
1 、MFC对注册表操作 在新建的MFC应用程序的CXXXXXApp::InitInstance()函数中通常都会存在这样一条语句:SetRegistryKey(_T("XXXXXXX"))。 根据MSDN,SetRegistryKey函数的功能是设置MFC应用程序的注册表访问键,并把读写.ini文件的成员函数映射到读写注册表,只需要调用SetRegistryKey函数设置注册原创 2015-07-03 18:58:24 · 2389 阅读 · 0 评论 -
MFC应用程序开机自启动
void CGestureRecognitionDlg::AutoStart(BOOL IsAutoStart){ HKEY hKey; CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); //找到系统的启动项 if (IsAutoStart) { if (RegOpenKe原创 2015-07-10 22:00:00 · 1626 阅读 · 0 评论 -
GDI+ 使用指南(basic guiding of GDI plus )
其实这个也没有什么用,毕竟已经是过时的技术了。不过技术的更新跟实际的使用还是有差距了,免不了还是要用这种过时的技术,所以还是记录下来,方便以后查阅。 GDI+没记错的话是跟随XP诞生的,是XP系统上的图形绘制系统(以前的是GDI),GDI+相对于GDI提供了一些新的特性,比如渐变的画刷,支持多种图像格式等等。不过我觉得最大的变化,还是编程模型上的变化。GDI+使用了面向对象的思想,对接口进行转载 2015-08-22 16:59:02 · 853 阅读 · 0 评论 -
MFC将窗口最小化到托盘
1、在头文件中自定义消息:#define WM_SHOWTASK WM_USER+1以及声明消息响应函数: afx_msg LRESULT onShowTask(WPARAM wParam, LPARAM lParam);声明一个结构体变量:NOTIFYICONDATA nid;2、在cpp文件消息映射中添加: ON_MESSAGE(WM_SHOWTASK , onShowTask原创 2015-07-29 21:21:12 · 3130 阅读 · 0 评论 -
MFC消息映射及消息处理函数原型
MFC把消息主要分为三大类: 1. 标准Windows消息(WM_XXX) 2. 命令消息(WM_COMMAND):凡由UI对象产生的消息都是这种命令消息,可能来自菜单或加速键或工具栏按钮。 3. 控件Notification消息 下面是各种消息的消息映射及对应处理函数原型: WM_COMMAND消息与处理对转载 2015-07-29 21:44:02 · 697 阅读 · 0 评论 -
关闭_CRT_SECURE_NO_WARNINGS警告
操作vs2013中,在项目->属性->C/C++->预处理器->预处理器定中添加 _CRT_SECURE_NO_WARNINGS 这个预定义。原创 2015-07-17 18:27:12 · 2279 阅读 · 0 评论 -
error RC2108: expected numerical dialog constant
最近在用VS2013编写MFC应用程序的时候,当我们用Picture Control在对话框上添加图片时,经常会出现如下的错误:用VS2010就不会出现这个问题,应该是VS2013的一个BUG!解决办法如下:双击错误error RC2108: expected numerical dialog constant,打开如下文件:在上图中标示的位置添加"Static", S原创 2015-07-29 18:16:30 · 4162 阅读 · 0 评论 -
MFC动态链接库以及全局钩子函数操作
动态链接库有两种加载方式:隐式链接加载动态链接库和动态加载动态链接库。 1、隐式链接加载动态链接库 如果有XXX.h ,XXX.lib ,XXX.dll,这样就可以隐式链接加载了。 把这三个文件复制到工程目录下面,当发布应用程序的时候需要把XXX.dll文件放在Debug或者Release目录下面。 在所要引用的.cpp文件中加入#include"XXX.h"原创 2015-07-06 10:41:51 · 3032 阅读 · 0 评论 -
创建一个win32应用程序的步骤
1、编写WinMain函数,可以在MSDN中查找并复制2、设计窗口类(WNDCLASS)3、注册窗口类4、创建窗口5、显示并更新窗口6、编写消息循环7、编写窗口过程函数。窗口过程函数的语法,可以通过MSDN查看WNDCLASS的lpfnWndProc成员变量,在这个成员的解释中可以查到。 程序代码如下:#include #include //窗口过程函数声明原创 2015-07-02 18:33:48 · 1100 阅读 · 0 评论 -
VC++匈牙利命名法
匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述。其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。目前在Windows程序开发和MFC程序开发中常用的命名规则是匈牙利命名法。下面就是HN命名法的一般规则。1.属性部分 全局变量g_ const常量 c_ c++类成员变量m_ 静态变量转载 2015-07-26 15:21:24 · 656 阅读 · 0 评论 -
VS2013使用TeeChart---入门
最近项目中需要使用到MFC进行曲线绘图,如果使用MFC自带的API实现的话代码量比较大且界面不美观,于是考虑使用TeeChart来进行实现,于是把最近学到的东西记录下来,与大家分享。 我的开发环境:VS2013 Ultimate TeeChart版本:Pro V5 1、TeeChart安装以及注册TeeChart5.ocx 首先当然是下载TeeChart源代原创 2015-07-02 19:18:11 · 21980 阅读 · 2 评论 -
MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave
为对话框添加WM_MOUSEHOVER或WM_MOUSELEAVE消息并不会响应。MFC需要特殊处理,其中一法就是使用TRACKMOUSEEVENT。void CmfcDlgDlg::OnMouseMove(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 //GetDlgItem(IDC_BUTTON)->S原创 2015-06-29 13:49:01 · 1225 阅读 · 0 评论 -
MFC非模态对话框和模态对话框销毁的方法
原创 2015-06-29 14:30:42 · 4228 阅读 · 0 评论 -
MFC设置对话框弹出的位置
有的时候我们需要设置对话框弹出的位置,比如在按钮的下方弹出,那这个需要怎么做到呢?其实很简单:1、获取按钮的Window矩形区域,使用GetWindowRect(rect)函数2、根据矩形区域设置对话框的位置,使用SetWindowPos函数3、显示以及更新对话框下面上代码:// TODO: Add your control notification han原创 2015-06-29 14:16:34 · 8791 阅读 · 0 评论 -
MFC非模态对话框的补充说明
之前讲的只是弹出非模态对话框以及销毁的情况,假如我们现在要在一个类的多个成员函数中使用到这个对话框,对这个对话框进行操作,那么我们就需要把这个对话框指针定义为类的成员变量,然后在类的析构函数对摧毁这个对话框,这个对话框就不需要再重载PostNcDestroy函数了,代码如下所示:类的头文件:private: StatusBar *m_StatusBar;类的析构函数:原创 2015-06-29 14:33:51 · 630 阅读 · 0 评论 -
MFC在父对话框中嵌入子对话框
一、对话框中显示对话框的方法: 1、首先创建要在对话框里显示的那个对话框,命名为:IDD_Dialog_Status。 设置这个对话框的属性: 1)、“Style”选择“Child”;中文版“样式”选择“下层”。 2)、“Border”为“None”;中文版“边框”选择“无”。 2、为了显示时能够准确定位,我们可以在主对话框中要显示对话框的地方放入一个Pic原创 2015-07-02 18:26:33 · 4661 阅读 · 0 评论 -
MFC自定义按钮的实现
学习MFC的都知道,我们要想改变对话框和控件的背景以及文本颜色,可以响应OnCtlColor消息,在这个函数里面进行相应的设置,如下所示:HBRUSH StatusBar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);原创 2015-06-29 10:58:59 · 8349 阅读 · 5 评论 -
PostMessage和SendMessage的区别
PostMessage:不需要指定接收消息的窗口,但是消息只能发往本窗口 ::PostMessage:需要指定接收消息的窗口,但是消息可以发往任意窗口 SendMessage:将消息直接发送给窗口,并调用该窗口的窗口过程进行处理。在窗口过程对消息处理完毕之后,该函数才返回(SendMessage发送的消息不进入队列)。 PostMessage函数将消息放入创建原创 2015-07-02 18:18:56 · 2709 阅读 · 0 评论 -
基于VS2013的ActiveX控件实现
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。 ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动原创 2015-07-05 15:10:42 · 13982 阅读 · 2 评论 -
MFC创建多级目录
bool CreateMultipleDirectory(const CString& szPath){ CString strDir(szPath); //存放要创建的目录字符串 if (strDir.GetAt(strDir.GetLength() - 1) != _T('\\')) //确保以'\原创 2015-07-10 18:17:32 · 3710 阅读 · 0 评论 -
MFC任意位置实现窗口拖动
如果应用程序自己绘制的界面没有标题栏,那我们怎么来拖动界面呢? 当鼠标在窗口内移动,点击或者释放时都会产生WM_NCHITTEST消息,响应函数OnNcHitTest会返回一个枚举值,mfc会根据这个枚举值进行相应的处理。 当返回值为HTCAPTION时,MFC会认为此时鼠标位于标题栏上,因而当鼠标按下并移动时就会执行拖动操作。我们需要做的就是响应这个消息,然后根据自己的需要,返回H原创 2015-07-02 18:17:45 · 4789 阅读 · 0 评论 -
MFC图片控件Picture Control
在图片控件的属性页面,有一个type选项,可供选择的有:Frame:显示一个无填充的矩形框,边框颜色可以通过Color属性的下拉列表设定Etched Horz:显示一条横分割线Etched Vert:显示一条竖分割线Rectangle:显示一个填充的矩形框,矩形颜色可通过Color属性的下拉列表设定Icon:显示一个图标(Icon),图标通过Image 下拉原创 2015-07-02 18:25:41 · 1389 阅读 · 0 评论 -
fatal error LNK1281: 无法生成 SAFESEH 映像。
解决方法:1.打开该项目的“属性页”对话框。2.单击“链接器”文件夹。3.单击“命令行”属性页。4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。转载 2015-08-22 10:28:01 · 1048 阅读 · 0 评论