
MFC开发
文章平均质量分 77
对MFC中各种控件进行介绍,以及对其中相应API进行梳理。
Jcrry
这个作者很懒,什么都没留下…
展开
-
MFC第三十天 通过CToolBar类开发文字工具栏和工具箱、GDI+边框填充以及基本图形的绘制方法、图形绘制过程的反色线模型和实色模型
a)文字工具栏开发:调用CToolBar::SetButtonText和CBoolBar::SetSizes方法;调用CToolBar::SetButtonStyle方法,为n个按钮一行做分行属性。b)工具箱创建时要指定:CBRS_SIZE_FIXED。CBRS_控制条属性。原创 2023-08-12 21:17:11 · 1312 阅读 · 0 评论 -
MFC29-30天 补充中间遇到的一些小问题
因为这边用24色位图 尺寸过大不符合所以返回了NULL。原创 2023-08-12 17:42:59 · 325 阅读 · 0 评论 -
MFC第二十九天 CView类的分支(以及其派生类的功能)、MFC六大关键技术
原创 2023-08-09 09:41:26 · 1703 阅读 · 0 评论 -
MFC第二十八天 WM_SIZE应用,CFrameWnd类LoadFrame的方法,PreCreateWindow窗口预处理,Frame-view窗口视图
a)CFrameWnd类偏爱WM_CREATE,因为所有的内部窗口都是代码创建的。而不像对话框是拖入的。b)CFrameWnd::rectDefault管理层叠c)LoadFrame内部包含CreateFrame,同时执行注册以及加载快捷键等(参见附录)原创 2023-08-06 11:05:16 · 977 阅读 · 0 评论 -
MFC第二十七天 通过动态链表实现游戏角色动态增加、WM_ERASEBKGND背景刷新的原理、RegisterClass注册窗口与框架程序开发
背景刷新的原理是在窗口绘制之前,系统首先向窗口发送WM_ERASEBKGND消息,窗口可以在处理此消息时进行背景擦除操作,即清除原有的背景后。系统会发送WM_PAINT消息,窗口可以在处理此消息时进行绘制操作,即绘制新的背景。通过以上流程,窗口可以在接收到WM_ERASEBKGND和WM_PAINT消息时分别进行背景擦除和绘制操作,实现背景的刷新。c)WM_ERASEBKGND消息对比WM_PAINT,是微软设计的前景和背景管理消息。b)WM_ERASEBKGND消息,是默认的背景输出管理消息。原创 2023-08-05 10:55:59 · 878 阅读 · 0 评论 -
MFC第二十六天 CRgn类简介与开发、封装CMemoryDC类并应用开发
CRgn类是MFC(Microsoft Foundation Classes)中的一个图形区域类。该类用于创建和操作图形区域,可以表示各种形状的区域,如矩形、椭圆、多边形等。public :// 封装的特点是没有使用Overload重载函数,结构体就是XXXIndirect CRgn();//创建矩形区域 BOOL CreateRectRgn(int x1 , int y1 , int x2 , int y2);原创 2023-08-03 17:03:06 · 2002 阅读 · 0 评论 -
MFC第二十五天 位图加载与显示的方法,StretchBit位图拉伸、开发三态按钮类CBitmapButton的方法(WM_MOUSELEAVE鼠标悬停与离开判断)
/CPen,CBrush,CFont,CBitmap,CRgn,CPallette的共同基类。public :// 用来存储:HPEN HBRUSH HFONT HBITMAP ... operator HGDIOBJ() const;//内部就是API DeleteObject UINT GetObjectType() const;//内部是:m_hObject=GetStockObject;//生成外壳类 // Constructors CBitmap();原创 2023-07-29 20:44:07 · 666 阅读 · 0 评论 -
MFC第二十四天 使用GDI对象画笔和画刷来开发控件(分页控件选择态的算法分析、使用CToolTipCtrl开发动静态提示)
对于使用GDI绘图来实现按钮控件同时使用了CToolTipCtrl来实现动静态的提示文本原创 2023-07-28 15:17:47 · 1443 阅读 · 0 评论 -
MFC第二十三天 HBrush对闭合图形的填充、CPen、CFont类常用功能与LOGFONT和LOGPEN结构体
HBrush对闭合图形的填充、CPen、CFont类常用功能与LOGFONT和LOGPEN结构体原创 2023-07-28 14:04:08 · 1012 阅读 · 0 评论 -
MFC第二十二天 三种绘图句柄与三大坐标系(三大CDC派生类)简介以及应用、Invalidate刷新函数的功能和用法简介
a)标准绘图消息WM_PAINT:,必须使用BeginPaint和EndPaint来绘图。BeginPaint和EndPaint只能在WM_PAINT中使用。b)在其他任何消息中使用的绘图句柄叫做临时绘图句柄。(GetDC和ReleaseDC)c)标准非客户户区绘图:(不推荐使用)GetWindowDC和ReleaseDC非客户区如同一个桌子的桌面,桌面上有桌布,露出了四角就是。这里要说明的问题是:非客户区不是只有四角。利用析构函数,无论任何条件返回,析构函数都系统帮你防止泄露。原创 2023-07-24 21:26:51 · 810 阅读 · 0 评论 -
MFC第二十一天 CS架构多页面开发与数据交互、CImageList图像列表介绍 、CListCtrl-SetItem设置列表项的方法
图像列表类支持内部有动态数组的控件 CComboBox CHeaderCtrl CListCtrl CTreeCtrl把图标做成一个列表创建空列表,指定每个元素的高宽。//指定带透明色的位图 BOOL Create(LPCTSTR lpszBitmapID , int cx , int nGrow , COLORREF crMask);原创 2023-07-24 11:49:03 · 1104 阅读 · 0 评论 -
MFC第二十天 数值型关联变量 和单选按钮与复选框的开发应用
1、 数值型关联变量:a)控件型关联变量:针对于所有MFC工具箱中的控件都有效。b)数值型关联变量:有部分的控件支持数值型关联变量,大部分不支持。c)ListCtrl添加关联变量时,控件型的下拉是灰色的。d)只有可录入的控件才支持数值型关联变量。编辑框、下拉、日期,单选钮和多选框,另外ListBox可以关联。2、数值型关联变量的用法:a)CWnd::UpdateData :更新数据,可以认为集体输入输出函数。b)代入TRUE代表从界面输入到内存(类似于cin >>)原创 2023-07-24 10:17:14 · 806 阅读 · 0 评论 -
MFC第十九天 记事本项目功能完善和开发、CTabCtrl类与分页模式开发
CTabCtrl 用于创建和管理标签控件(Tab Control),也称为选项卡控件。//获取图像列表。//设置图像列表 // Retrieves the number of tabs in the tab control. int GetItemCount() const;获取当前选中 // Selects the specified tab in the tab control. int SetCurSel(_In_ int nItem);原创 2023-07-20 20:23:46 · 525 阅读 · 0 评论 -
MFC第十八天 非模式对话框、对话框颜色管理、记事本项目(查找替换、文字和背景色、Goto(转到)功能的开发)
程序控制:在模态对话框中,对话框被关闭后会返回到调用它的代码处,可以根据对话框的返回值或状态进行相应的处理。而在非模态对话框中,对话框关闭后不会立即返回到调用它的代码处,需要通过消息处理机制来处理对话框的事件和状态。多任务处理:由于模态对话框阻塞了用户与应用程序的其他部分的交互,因此在处理耗时任务时可以使用模态对话框来防止用户对其他部分的操作。总的来说,模态对话框适合用于需要用户必须完成某个操作才能继续的情况,而非模态对话框适合用于需要用户可以同时进行其他操作的情况。原创 2023-07-18 11:05:18 · 1298 阅读 · 0 评论 -
MFC第十七天 CFont类与LOGFONT结构体(字体选择与注册表保存)、记事本文件打开和保存及是否保存的逻辑流程分析、PreTranslateMessage虚函数与快捷键
通过重写这个函数,我们可以实现对消息的拦截、修改和处理,从而实现一些高级的交互功能,比如处理键盘快捷键。a)我们经常看到消息被控件拐走了,所以好多消息包括:WM_MOUSEMOVE和WM_KEYDOWN等在消息都在主窗口不能用;c)如果你有字体信息结构体对象,调用CFont::CreateFontIndirect来在CFont对象中产生句柄。b)当然如果你做控件的派生类再进行子类化,是可以到控件类中去截获这些消息。CFontDialog是一个对话框类,用于显示字体选择对话框,并允许用户选择字体的样式。原创 2023-07-16 13:46:45 · 850 阅读 · 0 评论 -
MFC第十六天 CFileDialog、CEdit简介、(线程)进程的启动,以及Notepad的开发(托盘技术-->菜单功能)
GetPathName()是CFileDialog类的一个成员函数,用于获取用户选择的文件的完整路径名。当用户在打开或保存对话框中选择了一个文件后,可以通过调用GetPathName()函数来获取该文件的完整路径名。该函数的返回值是一个CString对象,包含了用户选择的文件的完整路径名。CEdit是MFC中的一个类,用于创建和操作单行或多行的文本框控件。CEdit类继承自CWnd类,并提供了一系列函数和属性来管理文本框的内容、样式和行为。提供用于打开或保存文件的标准对话框。提供用于选择颜色的标准对话框。原创 2023-07-14 09:52:37 · 2542 阅读 · 0 评论 -
MFC补充第十四天 句柄嫁接与子类化
a)Attach和Detach就是单纯的嫁接b)子类化Subclass内部包含Attach,增强了消息转移机制。c)SubClassDlgItem简化了子类化功能,不需要反子类化UnsubclassWindowd)类向导中建立关联变量的方法(内部就是子类化)DDX_Control函数内的核心内容是,引用类成员变量m_xxx, {原创 2023-07-12 09:15:03 · 670 阅读 · 0 评论 -
MFC第十五天 HWND与CWnd对象之间的转换、CWnd类简介(补充)、员工管理系统登录界面眼睛捕获(补充)
HWND 与CWND 对象之间的转换,以及CWnd类的简介,对Setcapture捕捉函数以及相关函数进行介绍原创 2023-07-12 09:04:09 · 1584 阅读 · 0 评论 -
MFC第十四天 BS_按钮属性与CButton类功能简介 、静态文本的穿透属性与显示密码开发、CS架构客户端的账号管理功能添加功能开发
/需要配合的尺寸 HICON GetIcon() const;位图句柄无效成员//对于单选和复选控件是有效的 void SetCheck(int nCheck);无效函数 // Overridables (for owner draw only) virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);原创 2023-07-11 10:09:23 · 930 阅读 · 0 评论 -
MFC第十三天 CWND类 开发登录界面密码眼睛的设置
我们可以选择传递不同的参数来控制重绘的行为,例如指定一个矩形区域进行更新,或使用区域句柄来进行更新。如果密码字符为空,则将密码字符设置为_T(‘●’),即显示为圆点或其他字符。它可以用来强制窗口重绘,以更新窗口的外观和内容。SWP_NOSIZE :cx,cy无效,你随便带入任何数据保持高宽不动,否则高宽根据带入的数据变化。SWP_NOMOVE:x,y无效,你随便带入任何数据保持左上角不动,否则左上角根据带入的数据变化。它可以将一个指针类型转换为与之无关的另一种指针类型,或将指针转换为整数类型,反之亦然。原创 2023-07-09 09:41:07 · 822 阅读 · 0 评论 -
MFC第十二天 常用的Afx全局函数汇总、CWinApp类方法简介(注册表的读写与窗口位置记录和布局功能)
/历史上ID是字符串 HICON CWinApp :: LoadIcon(UINT nIDResource) const {} CWinApp :: LoadIcon内部封装API:LoadIcon(第一个参数代入theApp . m_hInstance,才可以加载资源试图中的图标资源)CWinApp :: LoadStandardIcon内部封装API:LoadIcon} 如果带入 NULL ,系统内的一些图标可以加载。原创 2023-06-29 11:04:06 · 1225 阅读 · 0 评论 -
MFC第十一天 CDialog类的三大虚函数简介 CS模式下员工管理系统项目插入列表数据的功能开发
如果需要自定义“确定”按钮的行为,可以在派生类中重写OnOK()函数,并在函数中添加自定义的处理逻辑。d)消息被控件拐走之后,主窗口没有收到消息,此时要继续截获控件消息就不得不建立控件派生类并子类化(SubClass).c)原本很多消息,包括WM_MOUSEMOVE和WM_DROPFILES等消息一旦进入控件区域,都会被控件拐走。e)MFC为了更方便地从主窗口管理控件内部的消息,把控件内的基础消息合成高级消息反射给主窗口。b)类向导第一页都是一些控件的ID,选择不同的ID就会列出对应控件的反射型消息。原创 2023-06-28 09:37:00 · 492 阅读 · 0 评论 -
MFC第十天 封装CTime时间类、CDialogEx类、CDialog类简介
动态创建对话框或者子对话框(分页) virtual BOOL Create(UINT nIDTemplate , CWnd * pParentWnd = NULL);public :弹出对话框 // support for passing on tab control - use 'PostMessage' if needed void NextDlgCtrl() const;向后 跳转焦点 void PrevDlgCtrl() const;原创 2023-06-26 22:41:26 · 999 阅读 · 0 评论 -
MFC第九天 CRect类的封装和窗口坐标系转换及获取窗口ID 以及对CTime类与COleDateTime类简介
CRect类的封装、窗口坐标系转换及获取窗口ID 、CTime类与COleDateTime类简介原创 2023-06-26 09:41:19 · 777 阅读 · 0 评论 -
MFC第八天 基本数据类型介绍
在图形绘制中,可以使用CPoint对象来表示图形的顶点坐标,通过操作CPoint对象的坐标属性可以方便地绘制各种图形。在窗口管理中,可以使用CPoint对象来表示窗口的位置,通过操作CPoint对象的坐标属性可以实现窗口的移动和调整。此外,CRect类还常用于窗口管理,可以通过CRect对象来设置窗口的位置和大小。它通常用于指定图形对象的尺寸、窗口的大小、位图的尺寸等。此外,CSize类还常用于窗口管理,可以通过CSize对象来设置窗口的大小或获取窗口的大小。它提供了方便的方法来操作矩形的位置和大小。原创 2023-06-25 10:35:39 · 595 阅读 · 0 评论 -
MFC第七天 单机版数据库增删改的方法和用户登录(密码修改)、权限管理功能的员工管理系统的应用 以及 CCombox类的属性和方法
a)窄字符串:typedef const char* LPCSTR;b)宽字符串:typedef const wchar_t* LPCWSTR;c)自适应字符串:typedef TCHAR* LPCTSTR;# endif全面对项目实施TCHAR类型:a)从常量上看:elseb)API:#else#endif //!UNICODEc)C语言库函数#else#endif。原创 2023-06-24 11:12:40 · 841 阅读 · 0 评论 -
MFC第六天 使用列表控件CListCtrl类开发一个基础版本的员工管理系统
CListCtrl是MFC中的一个控件类,用于显示列表数据。它继承自CWnd类,并提供了许多功能,如列标题、排序、多选等。下面是CListCtrl常用的函数方法和属性样式。CFile类是MFC中的一个文件操作类,提供了对文件的读写、查找、定位等操作.原创 2023-06-22 22:47:43 · 544 阅读 · 0 评论 -
MFC第五天 Unicode软件开发 MFC框架构成与封装类原理
如果字符的Unicode码值范围是U+10000至U+10FFFF(即65536~1114111),则使用四个字节表示,最高位为11110,第二高位为10,第三高位为10,第四高位为10。如果字符的Unicode码值范围是U+0800至U+FFFF(即2048~65535),则使用三个字节表示,最高位为1110,第二高位为10,第三高位为10。如果字符的Unicode码值范围是U+0080至U+07FF(即128~2047),则使用两个字节表示,最高位为110,第二高位为10。原创 2023-06-21 21:10:26 · 1636 阅读 · 0 评论 -
MFC开发第四天 关于Unicode与ANSI编码转换技术和文本文件的识别、无BOM头的Utf8的编码识别算法
1、MultiByte和WideChara)ANSI 和 UTF8 都是MultiByte(俗称窄字节)b)UTF16大端和小端都是WideChar(俗称宽字节)Win32 API提供了一些函数来转换文本编码。下面是一些常用的转换函数:MultiByteToWideChar:将ANSI编码的文本转换为Unicode编码的文本WideCharToMultiByte:将Unicode编码的文本转换为ANSI或Utf-8编码的文本。原创 2023-06-21 14:37:11 · 1282 阅读 · 0 评论 -
MFC开发第三天计时器的应用,记事本拖入文件显示文本文件,Unicode与ANSI编码历史与转换 各种属性样式
MultiByteToWideChar和WideCharToMultiByte的组合:将ANSI编码的文本转换为UTF-8编码的文本。b)WideChar叫做宽字符:第一个版本的Unicode,把包括英文在内所有国家都进行了统一编码,并且都是双字节。WideCharToMultiByte:将Unicode编码的文本转换为ANSI或Utf-8编码的文本。MultiByteToWideChar:将ANSI编码的文本转换为Unicode编码的文本。e)Utf-8才是真正的多字节编码,为什么呢?原创 2023-06-20 22:45:31 · 465 阅读 · 0 评论 -
MFC开发第二天 Windows计算器的开发,常用消息解析与处理
【代码】MFC开发第二天 Windows计算器的开发,常用消息解析与处理。原创 2023-06-20 09:43:16 · 473 阅读 · 0 评论 -
初识MFC第一天
刚开始进入Win32开发时,会发现一些变量类型似乎在C语言中未曾见过。其实这些变量类型或是与C/C++已有的数据类型相近的,是通过C语言的原始类型重新定义而成的。引入这些数据类型的主要目的是为了便于程序员开发Windows应用程序,增强程序的可读性;另一个目的是为了便于代码移植,从16位操作系统升级到32位操作系统的过程中,这些重新定义的数据类型就起了相当重要的作用。这些重新定义的变量类型就叫做Windows数据类型,主要定义在Windef.h的系统头文件中。原创 2023-06-19 17:58:38 · 1264 阅读 · 0 评论