![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC
文章平均质量分 69
Lqsaber
励志成为一个优秀C++参天巨猿
展开
-
MFC对话框整合
一、创建对话框模板和修改对话框属性创建对话框主要分两大步,第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;第二,生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等。创建基于对话框的应用程序框架创建步骤同单文档应用程序大同小异,简单步骤如下: 1.选择菜单项File->New->Project,弹出“Ne转载 2015-08-31 18:37:09 · 3276 阅读 · 0 评论 -
MFC菜单
CMenu menu;menu.LoadMenuW(IDR_MENU1);SetMenu(&menu);//为菜单栏添加菜单void C**Dlg::OnLButtonDown(UINT nFlags, CPoint point)//左键弹出菜单{ CMenu menu; menu.LoadMenuW(IDR_MENU1); CMenu *pMe原创 2015-10-30 11:27:53 · 458 阅读 · 0 评论 -
MFC消息种类
键盘消息: WM_CHAR:该消息的处理函数OnChar(),在用户输入有效的ASCII码时才会发生 WM_KEYDOWN :键盘按下事件 WM_KEYUP:键盘释放事件键盘消息处理方式如下:BOOL C**Dlg::PreTranslateMessage(MSG* pMsg){ //判原创 2015-10-29 17:42:11 · 366 阅读 · 0 评论 -
MFC之日积月累
#include std::shared_ptr m_StartBtn; std::shared_ptr m_RestartBtn;CtestDlg::CtestDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CtestDlg::IDD, pParent){ m_hIcon = AfxGetApp(原创 2015-09-02 16:47:31 · 296 阅读 · 0 评论 -
MFC中的句柄
1.引出句柄CDC问题:1.CDC dc;dc.LineTo(point);无法运行2.CDC *dc=GetDC();dc->LineTo(point);就可以运行了MFC中有大量的句柄包装类。顾名思义,所谓句柄包装类,指的是这些类是封装了系统对象的句柄(HWND,HDC,HBITMAP等等),并提供了一组成员函数作为访问系统对象的接口。(这是一种资源封装的理念的体现)。从这些句转载 2015-09-24 10:29:16 · 513 阅读 · 0 评论 -
HINSTANCE/HWND/CWnd/HANDLE 的区别
HINSTANCE是应用程序实例句柄,HWND是窗口对象句柄,HANDLE是任意对象的句柄,CWnd是MFC中的窗口类。 MSDN里面对于HINSTANCE的解释是"handle to an instance" 就是说是一个instance的句柄。而对instance的解释是"An object for which memory is a转载 2015-10-27 13:11:52 · 793 阅读 · 0 评论 -
MFC之列表视图控件List Control
列表视图控件的创建 MFC同样为列表视图控件的操作提供了CListCtrl类。 如果我们不想在对话框模板中直接拖入List Control来使用列表视图控件,而是希望动态创建它,则要用到CListCtrl类的成员函数Create函数,原型如下:virtual BOOL Create( DWORD dwStyle, const RECT& rect转载 2015-09-01 15:02:38 · 1218 阅读 · 0 评论 -
MFC自定义消息
ON_MESSAGE(WM_USER+1,ceshi)::PostMessage(GetSafeHwnd(),WM_USER+1,0,0);LRESULT CMFCApplication29Dlg::ceshi(WPARAM wParam, LPARAM lParam){ AfxMessageBox(_T("ok")); return 0;}原创 2015-11-10 16:42:40 · 346 阅读 · 0 评论 -
动态链接库
创建DLL:extern "C" _declspec(dllexport) int sum(int a,int b);//头文件extern "C" _declspec(dllexport)int sum(int a,int b)//cpp文件{ return a+b;}调用DLL:typedef int(*lpAddFun)(int ,int);//宏定义函原创 2015-11-09 17:57:53 · 259 阅读 · 0 评论 -
MFC之图形
1.设备描述表(DC)也称设备上下文或设备环境。它是一种包含各种绘图属性(字体,颜色),和方法(各种绘图函数)的数据结构。设备描述表定义了设备、画图工具和画图信息。它不仅可以绘制各种图形,而且还可以确定在应用窗口绘制图形的方式和图形的样式。(Windows所有的绘制操作及图形输出都必须通过设备描述表这一虚拟用户工作区来进行。用户在绘图之前,必须获取绘图窗口区域的一个设备环境DC,接着才能进行GDI原创 2015-10-30 18:15:01 · 353 阅读 · 0 评论 -
MFC 之双缓冲
void CListCtrlEx::DrawProgress(CDC *pDC, CString &strText, CRect &rcCell, BOOL bSelected, const CellData &cellData){ CRect rcFill(rcProg); rcFill.DeflateRect(1,1,1,1); float fPersent原创 2015-12-09 16:34:11 · 366 阅读 · 0 评论 -
MFC中的数据库访问
ADO访问技术:(1)Connection对象:管理应用程序和数据库的通信。(2)Command对象:用来处理重复执行的操作,或处理需要检查在存储过程调用中的输出或返回参数的值的查询。(3)Recordset对象:用来获取数据。存放查询的结果,由数据的行(记录)和列(字段)组成。#import "C:\Program Files\Common Files\System\ado\ms原创 2016-02-16 17:12:29 · 712 阅读 · 0 评论 -
MFC之ActiveX的使用
在ActiveX中提供了调度映射和事件映射。调度映射是为了外部应用程序可以方便地访问控件的属性和方法。而事件映射让控件可以向包含它的容器发送事件通知。 COleControl类(**Ctrl文件)是从CWnd类派生的。对控件窗口进行的操作都在**Ctrl类中完成 COlePropertyPage类派生于CDialog类,它以一种类似于对话框的图形界面显示一个自定义控件的属性。也原创 2016-02-15 11:56:24 · 7176 阅读 · 0 评论 -
进程间通信
(1)剪贴板void CMFCApplication39Dlg::OnBnClickedBtnSend(){ // TODO: 在此添加控件通知处理程序代码 if(OpenClipboard())//打开剪贴板 { CString str;//保存发送编辑框控件上的数据 HANDLE hClip;//保存调用GlobalAl原创 2016-01-26 15:49:07 · 390 阅读 · 0 评论 -
带界面的UDP聊天程序
BEGIN_MESSAGE_MAP(CMFCApplication38Dlg, CDialogEx) ON_MESSAGE(WM_USER+1,OnRecvData) ON_BN_CLICKED(IDC_BTN_SEND, &CMFCApplication38Dlg::OnBnClickedBtnSend)END_MESSAGE_MAP()// CMFCApplication38Dlg转载 2016-01-26 11:50:03 · 1287 阅读 · 0 评论 -
MFC使用控制台界面
在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息;另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行。其实有一种方法可以更为方便的输出调试信息,就是输出到控制台(Console)中,即不影响程序运行,又便于查看调试信息。方法如下:1、#include 2、在需要开启控制台窗口的地方调用AllocCons转载 2016-01-19 16:20:42 · 313 阅读 · 0 评论 -
各种消息下wParam及lParam值的含义
01、WM_PAINT消息LOWORD(lParam)是客户区的宽,HIWORD(lParam)是客户区的高 02、滚动条WM_VSCROLL或WM_HSCROLL消息LOWORD(wParam)指出了鼠标对滚动条的操作。比如上、下、左、右、翻页、移动等。 03、击键消息,有WM_SYSKEYDOWN、WM_SYSKEYUP、WM_KEYUP、WM_KEYDOWNwPa转载 2015-12-30 12:00:39 · 4654 阅读 · 1 评论 -
MFC文件操作
文件操作是指对文件的读写操作,而在读写文件前,通常需要先打开文件,完成读写操作后,需要关闭文件。1、文件的打开:方式按照实现的不同,分为三种:ifstream:支持从本流类(对象)所对应的磁盘文件中读入数据。使用如下:ifstream ;.open("文件名");ofstream:支持从本流类(对象)所对应的磁盘文件中写入数据。使用如下:ofstream ;.open("文件名原创 2015-11-03 13:58:01 · 489 阅读 · 0 评论 -
MFC文本和字体
创建字体对象,在使用之前必须用函数CreateFont(创建具有指定属性的字体)、CreateFontIndirect(创建具有LOGFONT结构所指定的属性的字体)、CreatePointFont(提供一种创建指定字体名和尺寸的字体的简单方法,自动将高度转化为pDC所指的设备描述表中所用的逻辑单位,如果pDC为NULL,则转化为屏幕设备描述表中所用的逻辑单位)或CreatePointFontIn原创 2015-11-02 17:41:53 · 612 阅读 · 0 评论 -
MFC picture control控件不失真自适应图片显示
void CPrintScreen::OnPaint(){ CPaintDC dc(this); CImage image; CRect rect; //根据路径载入图片 image.Load(m_filepath); CWnd *pWnd = NULL; pWnd = GetDlgItem(I转载 2015-10-19 17:49:40 · 729 阅读 · 0 评论 -
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)的用法
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINTnCtlColor);参数nCtlColor用于指定控件的类型,可以是:.CTLCOLOR_BTN 按钮控件.CTLCO转载 2015-10-19 17:52:23 · 2669 阅读 · 0 评论 -
MFC之按钮
按钮控件的创建 MFC提供了CButton类封装按钮控件的所有操作。 之前的教程中,我们是在对话框模板上直接添加的按钮控件资源,但某些特殊情况下需要我们动态创建按钮控件,即通过CButton类的成员函数Create来创建按钮。下面是Create函数的原型:virtual BOOL Create( LPCTSTR lpszCaption, DW转载 2015-09-01 14:54:50 · 494 阅读 · 0 评论 -
MFC显示位图
CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1);//IDB_BITMAP1为位图的ID CWnd *pwnd=GetDlgItem(IDC_STATIC);//IDC_STATIC为图片控件 CDC* dc =pwnd->GetDC(); CDC MemDC; MemDC.CreateCompatibl转载 2015-09-02 09:31:55 · 492 阅读 · 0 评论 -
MFC之静态文本框的使用
如果我们想在程序中动态创建静态文本框,而不是像前面那样直接从Toolbox中拖到对话框模板上,那么就需要使用CStatic类的成员函数Create。Create函数的原型如下:virtual BOOL Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,转载 2015-09-01 14:16:07 · 2200 阅读 · 0 评论 -
MFC之Menu的使用
CMenu类从CObject类派生而来。为什么要使用CMenu类呢?AppWzard不是把菜单做好了吗?在资源编辑器上修改菜单不是很方便吗?我是个vc++初学者,自从当斑竹以来,天天看贴子,也学到了不少东西。感觉学vc++稍微深入一点好,至少要能搞清楚AppWizard在背后都干了些什么东西。事实上mfc就是用CMenu类来生成菜单的。让我们就从CMenu开始吧。CMenu生成的菜单有两种转载 2015-09-01 15:59:37 · 6820 阅读 · 0 评论 -
MFC之图片控件Picture Control
图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。 图片控件静态和动态加载图片 鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片。 1. 图片控件静态加载图片 1)创建一个基于对话框的MFC工程,转载 2015-09-01 14:58:51 · 665 阅读 · 0 评论 -
MFC应用程序框架分析
一.SDK应用程序与MFC应用程序运行过程的对比 程序运行都要有入口函数,在之前的C++教程中都是main函数,而Windows应用程序的入口函数是WinMain函数,MFC程序也是从WinMain函数开始的。下面鸡啄米就给出用Windows SDK写的“HelloWorld”程序,与应用程序框架进行对比,这样能更好的了解框架是怎样运行的。Windows SDK开发程序就是不使用M转载 2015-08-31 16:45:21 · 447 阅读 · 0 评论 -
MFC动态创建控件
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 1.建立控件ID号: ID号是控件的标识,创建控件前必须先为它设置一个ID号。 打开资源中的“String Table”,在空白行上双击鼠标,这时会弹出一个ID属性对话框,在其中的ID编辑框中输入ID,如:IDC_MYBUTTON,在Caption中输入原创 2015-09-01 09:58:48 · 2268 阅读 · 1 评论 -
MFC消息映射机制
Windows应用程序是消息驱动的。在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。 什么是消息 窗口消息一般由三个部分组成:1.一个无符号整数,是消息值;(2)消息附带的WPARAM类型的参数;(3)消息附带的LPARAM转载 2015-08-31 16:46:20 · 394 阅读 · 0 评论 -
MFC之树形控件Tree Control
树形控件的创建 MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。 树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control控件创建,另一种就是通过CTreeCtrl类的Create成员函数创建。下面主要讲后者。 CTreeCtrl类的Create成员函数的原型如下: virtual转载 2015-09-01 15:05:40 · 1494 阅读 · 0 评论 -
MFC之编辑框Edit Control
下面简单介绍编辑框的部分通知消息。 EN_CHANGE:编辑框的内容被用户改变了,与EN_UPDATE 不同,该消息是在编辑框显示的正文被刷新后才发出的 EN_ERRSPACE: 编辑框控件无法申请足够的动态内存来满足需要 EN_HSCROLL: 用户在水平滚动条上单击鼠标 EN_KILLFOCUS: 编辑框失去输入焦点转载 2015-09-01 14:53:03 · 781 阅读 · 0 评论 -
MFC 句柄Hwnd 与 窗口Wnd的联系
CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。由HWnd得到CWnd*:CWnd wnd;HWnd hWnd;wnd.Attach(hWnd);通常一个窗口资源已经和一个CWnd类的对象关联起来的,由于一般来说这个类是自己创建的,所以自然知道怎么得到指向这转载 2015-09-14 09:22:21 · 3673 阅读 · 0 评论 -
MFC 多线程的使用
在头文件中定义 :类内部:CWinThread * pThread;类外部:struct threadInfo { UINT nMilliSecond; CProgressCtrl* pctrlProgress; }; UINT ThreadFunc(LPVOID lpParam); //线原创 2015-09-11 12:06:35 · 395 阅读 · 0 评论 -
MFC学习之路(序)
勿在浮沙筑高台原创 2015-09-09 16:50:30 · 280 阅读 · 0 评论 -
MFC设置启动画面
首先,在菜单的“项目”中选择“类向导”,生成一个启动画面的Splash类。 然后,实现代码主要是在CwzdSplash类的头文件和cpp文件中实现。在CwzdSplash类的头文件中我们添加下面的代码: [cpp] view plaincopy#pragma once // CWzdSplash class CWzdSplash : publ转载 2015-09-09 09:55:15 · 1550 阅读 · 0 评论 -
MFC之滚动条控件Scroll Bar
滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条。前面讲的列表框和组合框设置了相应属性后,如果列表项显示不下也会出现滚动条。滚动条分为水平滚动条(Horizontal Scroll Bar)和垂直滚动条(Vertical Scroll Bar)两种。滚动条中有一个滚动块,用于标识滚动条当前滚动的位置。我们可以拖动滚动块,也可以用鼠标点击滚动条某一位置使滚动块转载 2015-09-01 14:57:25 · 766 阅读 · 0 评论 -
MFC之标签控件Tab Control
标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类。 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Control,也可以使用CTabCtrl类的Create成员函数创建。Create函数的原型如下:virtual BOOL Create( DWORD dwStyle, const RECT& rect, CW转载 2015-09-01 15:17:12 · 1446 阅读 · 0 评论 -
MFC之组合框控件Combo Box
组合框控件简介 组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。 简易组合框中的列表框是一直显示的,效果如下图: 下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框,列表框弹出后如下图:转载 2015-09-01 14:56:36 · 1210 阅读 · 0 评论 -
MFC之列表框控件ListBox
列表框控件简介 列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选中的项会高亮显示。列表框可分为单选列表框和多选列表框,顾名思义,单选列表框中一次只能选择一个列表项,而多选列表框可以同时选择多个列表项。 列表框也会向父窗口发送通知消息。这些通知消息及含义如下: LBN_DBLCLK :用户用鼠标双击了一列表项,只有具有LBS_NOTIFY转载 2015-09-01 14:55:42 · 2324 阅读 · 0 评论 -
Windows实现基于TCP的网络应用程序
客户端:#include #include #pragma comment(lib, "WS2_32.lib") int main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err原创 2016-01-20 13:57:56 · 628 阅读 · 0 评论