![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC
HisinWang
CAD二次开发从业者。
QQ: 280338447
展开
-
CBitmapButton实现图形按钮
在编程中,经常要用到按钮控件,大部分情况下,文字按钮就OK了,但有时为了更好的效果,需要用到图形按钮。在MFC中,应用CBitmapButton就可以实现图形按钮。CBitmapButton类继承自CButton类。你可以为图形按钮指定四张图片,分别对应按钮的四种不同状态:正常显示(Up),鼠标按下(Down),获得焦点(Focused),不可用(Disabled)。正常显示(Up原创 2011-10-30 16:32:49 · 1374 阅读 · 0 评论 -
MFC动态创建右键菜单
一、定义右键菜单功能项对应的自定义消息示例:#define WM_RMENU_CMD_TEST_1 WM_USER + 0x010#define WM_RMENU_CMD_TEST_2 WM_USER + 0x011#define WM_RMENU_CMD_TEST_3 WM_USER + 0x012二、添加对话框的WM_RBUTTONDOWN消息响应afx_msg void OnRBut原创 2015-05-15 23:49:32 · 3620 阅读 · 0 评论 -
DC知识总结
一、 ::GetDC 与 ::ReleaseDC函数原型: HDC GetDC(HWND hWnd); int ReleaseDC(HWND hWnd, HDC hDC);GetDC获取窗口客户区域的设备环境。每次获取一个设备环境时都会用默认属性对它进行初始化。 GetDC与ReleaseDC一定要配对使用,否则GetDC没有ReleaseDC会有资源泄露。 GetDC获取的设备环境变原创 2015-05-15 23:47:03 · 6249 阅读 · 0 评论 -
MFC对话框Enter键、Esc键、关闭按钮的消息处理
在MFC对话框中,经常会碰到按Enter或Esc键,对话框会被关闭的现象。Enter键的处理流程如下:如果对话框有按钮拥有焦点 响应该按钮的单击事件 如果按钮ID为IDOK,并且没有事件响应函数,则执行函数OnOK()否则执行函数OnOK()Esc键的处理流程:执行OnCancel()关闭按钮的处理流程:找到消息(WM_CLOSE)的响应函数则执行否则执行OnCancel()我们原创 2015-05-15 22:52:58 · 9472 阅读 · 1 评论 -
CImageList使用总结
CImageList为MFC中的图像集合类,开始序号为0.创建CImageListImage大小: 32 x 32 CImageList初始大小6,递增速率为1CImageList m_imgList;m_imgList.Create(32, 32, ILC_COLOR32 | ILC_MASK, 6, 1);加载ICON1.图标资源m_imgList.Add(AfxGetApp()->Load原创 2015-05-15 23:17:06 · 2110 阅读 · 0 评论 -
MFC对话框风格和工程字符集的关系
在VS中创建一个基于对话框的工程,在代码不变的情况下,仅仅是改变工程使用的字符集,对话框的风格就会改变,如下图所示。1、使用Unicode字符集(Use Unicode Character Set):2、使用多字节字符集(Use Multi-Byte Character Set):很显然,使用多字节字符集时,对话框风格变成了VC6下的样式,不美观。 在实际项目中,很多工程都使用的是多字节字符集,在原创 2015-05-15 23:27:20 · 708 阅读 · 0 评论 -
CWnd常用函数讲解
一、 GetClientRect & GetWindowRectGetClientRect获取窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小。GetWindowRect获取窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。通过调用GetClientRect获取的RECT的left与top均为0。二、原创 2015-05-15 23:30:32 · 1420 阅读 · 0 评论 -
MFC FTP操作
本文讲解怎样利用MFC对FTP进行读写操作。////*********************************************************//Ftp basic operation//*********************************************************//////1. connect to ftp//BOOL原创 2015-05-15 23:05:54 · 3170 阅读 · 0 评论 -
Formatted MessageBox/AfxMessageBox
原文章网址: http://www.codeproject.com/Tips/120013/Formatted-MessageBox-AfxMessageBoxvoid AfxMessageBoxFormatted(LPCTSTR pFormatString, ...){ va_list vl; va_start(vl, pFormatString); CString st原创 2015-05-15 23:09:00 · 448 阅读 · 0 评论 -
Visual C++运行库
Visual C++ 运行库我们用Visual C++ XXXX (XXXX代表2005,2008,2010等)编译器编写的应用程序,要使其能在没有安装Visual C++ XXXX编译器的目标电脑上运行,必须在目标电脑上安装对应的Microsoft Visual C++ XXXX运行库。安装后,将提供对C、标准C++、ATL、MFC、OpenMP以及MSDIA等类库的运行时支持。例如:要运行Vis原创 2015-05-15 23:12:15 · 2113 阅读 · 0 评论 -
Windows消息:WM_USER与WM_APP的区别
Windows消息范围及意义#define WM_USER 0x0400 #define WM_APP 0x80000到WM_USER-1 Messages reserved for use by the system 系统预留使用的消息WM_USER到0x7FFF Integer messages for use by private window classes 被私有窗口类使用的消原创 2015-05-16 21:53:49 · 5157 阅读 · 0 评论 -
模拟按钮控件BN_CLICKED消息事件
一、 现有一对话框如下单击按钮会弹出Hello消息框,如下图所示:现要在点击按钮时模拟的单击响应事件,实现代码如下:void CTestDlg::OnBnClickedBtnTest(){ // TODO: Add your control notification handler code here WPARAM wParam; wParam = BN_CLICKED;原创 2015-05-16 22:13:17 · 10990 阅读 · 0 评论 -
Windows消息:如何自定义窗口消息与线程消息
自定义消息一、自定义窗口消息#define WM_MY_MSG WM_USER + 0x100afx_msg LRESULT OnMyMsg(WPARAM, LPARAM);LRESULT CTestDlg::OnMyMsg(WPARAM wParam, LPARAM lParam) {...}BEGIN_MESSAGE_MAP(CTestDlg, CDialog) ...原创 2015-05-16 21:59:35 · 2803 阅读 · 0 评论 -
PostThreadMessage的用法
同一进程不同线程之间1. 编写线程函数UINT AFX_CDECL ThrdTest(LPVOID lpParam){ MSG msg; while (::GetMessage(&msg, NULL, 0, 0)) { switch(msg.message) { case WM_XXX: {...}原创 2015-05-16 22:06:15 · 6064 阅读 · 0 评论 -
Windows消息:怎样使用RegisterWindowMessage注册消息
注册窗口消息1.UINT nMsgRegistered = ::RegisterWindowMessage(TEXT(“RegisterMsgName”)); 2.afx_msg LRESULT OnMyRegisteredMsg(WPARAM, LPARAM); 3. LRESULT CTestDlg::OnMyRegisteredMsg(WPARAM wParam, LPARAM lPara原创 2015-05-16 22:03:30 · 5052 阅读 · 0 评论 -
MFC下WM_NOTIFY消息处理流程
参考文章:MFC的消息反射机制 在前一篇文章:MFC消息处理流程概述中描述了MFC消息处理的大体流程。由CWnd::OnWndMsg函数可知,当消息为WM_NOTIFY消息时,调用的是virtual CWnd::OnNotify处理。if (message == WM_NOTIFY){ NMHDR* pNMHDR = (NMHDR*)lParam; if (pNM原创 2012-10-07 16:14:24 · 5923 阅读 · 0 评论 -
MFC消息处理流程概述
Win32下的消息流程清晰明了,但在MFC下,由于封装的缘故,隐藏的有点深,对一般的开发人员而言,就不甚明了喽。本文试图粗略展示出MFC下消息处理的基本流程。一、先看一下Win32下的消息处理流程 每一个线程都对应有一个消息队列,利用API函数GetMessage从消息队列中获取消息,然后利用TranslateMessage翻译消息(主要是一些键盘消息),再利用Dispatc原创 2012-10-07 13:59:54 · 10816 阅读 · 4 评论 -
MFC非模态对话框
一、非模态对话框的创建CYourDlg *pDlg = new CYourDlg(); pDlg->Create(IDD_DLG_YOUR, this); pDlg->ShowWindow(SW_SHOW);二、非模态对话框的销毁1.在非模态对话框中重载OnOK和OnCancel,调用DestroyWindow。protected: virtual void OnOK();原创 2015-05-15 23:14:13 · 934 阅读 · 0 评论 -
LoadImage用法
函数原型HANDLE LoadImage( HINSTANCE hinst, // 若加载程序外部资源传NULL,否则一般传AfxGetInstanceHandle() LPCTSTR lpszName, // 图片名称或全路径 UINT uType, // 图片类型:IMAGE_BITMAP或IMAGE_ICON或IMAGE_CURSOR原创 2015-05-15 23:21:24 · 40491 阅读 · 3 评论 -
VC最小化到托盘程式
参考文章:http://www.cnblogs.com/zhangpengshou/archive/2009/07/11/1520819.html基本上是按照这篇文章所写的方法来做的,只有稍许改动。在VC6.0下实现的步骤如下:一、创建基于对话框的MFC程式二、导入一图标ICON,ID设为IDI_TRAY三、为新建的对话框类添加成员变量 NOTIFYICONDATA m_原创 2011-09-25 23:55:39 · 850 阅读 · 0 评论 -
关于VC弹出选择文件夹对话框
VC编程中经常需要弹出选择文件夹对话框供用户选择目标文件夹基本实现的源码如下void CTestDlg::OnBtnTest() { // TODO: Add your control notification handler code here TCHAR pszPath[MAX_PATH]; BROWSEINFO bi; bi.hwndOwner = this原创 2011-08-01 21:42:03 · 23359 阅读 · 4 评论 -
GetIconInfo函数获取ICON的大小
以下函数获取ICON的大小存入cx,cyvoid GetIconSize(HICON hIcon, int* cx, int* cy){ ICONINFO ici; ::GetIconInfo(hIcon, &ici); BITMAP bm; ::GetObject(ici.hbmColor, sizeof(BITMAP), &bm); *cx = bm.bmWidth; *原创 2012-09-09 22:36:51 · 5122 阅读 · 0 评论 -
可编辑子项ListCtrl控件的完整实现
源码下载:http://download.csdn.net/detail/wangyao1052/4604942 MFC提供的ListCtrl控件本身是不具备编辑子项功能的,我们现在建立一个可编辑子项的ListCtrl控件用于记录人员的名字、年龄、性别。其中,双击年龄项会出现EditBox让用户编辑修改年龄,双击性别项会出现ComboBox让用户选择性别。原创 2012-09-28 08:47:49 · 4264 阅读 · 2 评论 -
提取QQ游戏图标并显示
SHGetFileInfo可用于提取应用程序的图标。以下的按钮响应函数用于提取QQ游戏的应用程序图标并在MFC对话框的客户区显示:void CExtractAppIconDlg::OnBnClickedButton1(){ // TODO: Add your control notification handler code here SHFILEINFO shfi; mems原创 2012-09-09 21:38:42 · 2264 阅读 · 0 评论 -
CButtonST使用教程
CButtonST是一个简单易用、功能强大的CButton派生类。 以下是CButtonST v3.9在codeproject上原文的地址CButtonST v3.9 (MFC Flat buttons).读者可以下载demo project来参考其具体的使用细则。 也有好心的国内程序员翻译总结了CButtonST的使用方法: CButtonST使用技巧: CButtonS原创 2012-11-04 23:51:32 · 2920 阅读 · 0 评论 -
对话框Enter键与Esc键的处理问题
在MFC对话框中,经常会碰到按Enter或ESC键,对话框会被关闭的现象。一、原因分析MFC对话框Enter键消息机理:1.如果Dialog中某个Button拥有Foucs,则按Enter键会响应该按钮。在Dialog按下某按钮该按钮就会获得焦点。2.如果Dialog中,没有任何Button拥有focus,但是Dialog有default button,则按Enter键时会响应Def原创 2012-11-09 01:00:31 · 1930 阅读 · 0 评论 -
CString&CStringA&CStringW之间的相互转换
在做MFC编程的时候,时常会碰到CString、CStringA、CStringW之间相互转换的问题,也即chat字符串与wchar_t字符串相互转换的问题。现本人写了一个它们之间相互转换的函数,代码如下:头文件CStringToolEx.h#ifndef _CSTRING_TOOL_EX_#define _CSTRING_TOOL_EX_#include //// CSt原创 2012-11-24 23:21:32 · 3473 阅读 · 0 评论 -
Visual C++运行库
我们用Visual C++ XXXX (XXXX代表2005,2008,2010等)编译器编写的应用程序,要使其能在没有安装Visual C++ XXXX编译器的目标电脑上运行,必须在目标电脑上安装对应的Microsoft Visual C++ XXXX运行库。安装后,将提供对C、标准C++、ATL、MFC、OpenMP以及MSDIA等类库的运行时支持。例如:要运行Visual C++ 2008编原创 2012-11-24 21:35:18 · 1235 阅读 · 0 评论 -
关于CInfoZip压缩与解压缩文件
最近在研究怎样利用VC压缩与解压缩文件上网Google和Baidu发现这类相关的文章不是很多,于是整理一下搜罗了一晚上的成果:利用InfoZip压缩与解压缩文件具体怎么用请参考文章http://www.vckbase.com/document/viewdoc/?id=315我在这里只列出我编写一个测试实例的内容一、下载dll与cpp文件具体下载的地址为:http:/原创 2011-09-15 22:51:43 · 1405 阅读 · 0 评论 -
MFC经典好博文
1. MFC的消息反射机制http://blog.csdn.net/cay22/article/details/61716162. CButtonST v3.9http://www.codeproject.com/Articles/57/CButtonST-v3-9-MFC-Flat-buttons3. 白乔原创:VC之美化界面篇http://blog.csdn.net原创 2012-10-07 00:01:28 · 3987 阅读 · 0 评论 -
MFC消息分类总结
Message BasicMessage Demo模拟按钮控件BN_CLICKED消息事件原创 2012-11-24 23:31:13 · 870 阅读 · 0 评论 -
非模态对话框的创建与销毁
一、非模态对话框的创建 非模态对话框的创建代码一般如下:CYourDlg *pDlg=new CYourDlg;pDlg->Create(IDD_DLG_YOUR, this);pDlg->ShowWindow(SW_SHOW);01行---创建CYourDlg的对话框对象02行---创建对话框窗口,并和01行创建的对话框对象关联。this指定该对话框窗口的父窗口03行---显原创 2012-11-08 23:42:32 · 946 阅读 · 0 评论 -
WM_NOTIFY消息流程实例分析
我们以CListCtrl控件为例来分析WM_NOTIFY消息。 CListCtrl控件在Report样式下会包含CHeaderCtrl标头控件,即CHeaderCtrl标头控件为CListCtrl控件的子控件,所以不难理解,拖动CHeaderCtrl标头控件的列分隔栏会投递HDN_BEGINTRACK消息(WM_NOTIFY消息,通知码为HDN_BEGINTRACK)给其父窗口CList原创 2012-10-10 20:52:11 · 5317 阅读 · 0 评论