MFC(弃坑)
记录使用 C++ MFC 控件 的经验和 代码
CXYYL
这个作者很懒,什么都没留下…
展开
-
MFC 坐标系统
参考:qingshuiyangfan DC::GetDeviceCaps(int Type) // 物理长度与屏幕像素间的转换 // 读取DC的一些打印区域信息,主要是像素和英寸方面的数据. // 使用例子: // 1. 获得显示器的总像素数 int pagecx = dc.GetDeviceCaps(HORZRES); int pagecy = dc.GetDeviceCaps(VERTRES); // 2. 计算每 100 个逻辑点对应的像素个数(这里的 100 指的是,用 dc原创 2020-12-29 20:11:02 · 275 阅读 · 0 评论 -
MFC 添加工具栏(全)
第1步:资源视图新建工具条(或者在原有工具条上增加)更改 ID增加悬停工具栏解释说明 tag, 具体为:选中工具栏某一格 》右侧属性 》 Prompt 》 写tag 内容,格式为 \n + 内容第2步:资源视图增加消息响应: 一种是手动添加 WM_COMMAND,手动 switch 消息;另一种是类向导直接添加...原创 2020-12-28 16:34:06 · 1357 阅读 · 0 评论 -
MFC 重绘(全)
WM_PAINT; 橡皮筋绘图 OnDraw(); Invalidate(); InvalidateRect(); UpdateWindow();原创 2020-12-28 16:42:47 · 291 阅读 · 0 评论 -
MFC 文档视图学习 1
MFC - 菜单 / 孙鑫教程Q1:APP、CFrame、CDoc、CView 消息捕获的顺序测试:在资源中添加测试菜单右键菜单中的 Test 添加消息响应:依次为APP、CFrame、CDoc、CView都添加一个 OnTest(), 在消息响应函数中弹出一个 MessageBox() ,可以看到,消息最先被CView 拦截,如果注释掉CView的OnTest(), 然后被响应的是 CDoc,然后是 CFrame,最后是 APP。注意!APP 和 CDoc 不是从 CWnd 继承,没有原创 2020-12-07 20:14:08 · 166 阅读 · 0 评论 -
MFC 文档视图学习 2
枚举图元类型 和 颜色类型在类声明中初始化枚举类型原创 2020-12-28 10:16:39 · 114 阅读 · 0 评论 -
MFC 常用的几种绘图 DC
// 第 1 种: 需要手动释放 DC 资源 CDC * pDC = CWnd::GetDC(); CWnd::ReleaseDC(pDC); // 第 2 种: 自动管理 DC 资源 CClientDC::CDC // 派生关系 CClientDC dc(CWnd *); // 获得 客户区 DC // 第 3 种: 自动管理 DC 资源 CWindowDC::CDC // 派生关系 CWindowDCdc(CWnd *); // 能够获得完整窗口的 DC ,包括客户区和非客.原创 2020-12-24 10:34:02 · 283 阅读 · 0 评论 -
MFC 鼠标光标资源 及 更换
光标样式IDC_APPSTARTING // 标准的箭头和小沙漏IDC_ARROW // 标准的箭头IDC_CROSS // 十字光标IDC_HAND // Windows 98/Me, Windows 2000/XP: HandIDC_HELP // 标准的箭头和问号IDC_IBEAM // 工字光标IDC_ICON // Obsolete for applications marked version 4.0 or later.IDC_原创 2020-12-21 15:50:53 · 883 阅读 · 0 评论 -
MFC 修改窗体风格
在窗体创建之前修改BOOL CFrameWorkView::PreCreateWindow(CREATESTRUCT& cs){ // TODO: 在此添加专用代码和/或调用基类 BOOL bPreCreated = CView::PreCreateWindow(cs); cs.style &= ~(WS_HSCROLL); cs.style &= ~(WS_VSCROLL); return bPreCreated;}...原创 2020-12-18 09:41:11 · 270 阅读 · 0 评论 -
MFC 鼠标移入、移出窗口
转自:vigoss331首先,WM_MOUSELEAVE是鼠标离开窗口时发出的消息,但是这个消息与普通消息不同,要收到WM_MOUSELEAVE消息必须先调用 TrackMouseEvent 函数,并且每调用一次TrackMouseEvent窗口只能收到一次WM_MOUSELEAVE,也就是说如果要获得WM_MOUSELEAVE消息的话,当鼠标重新进入窗口时必须调用一次TrackMouseEvent。函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEven原创 2020-12-17 16:59:57 · 1658 阅读 · 0 评论 -
MFC 窗口分割(Dlg 为例)
1. 创建对话框工程2. 对话框类添加成员变量 CFrameWnd * m_pMyFrame; // 一个框架类对象(指针,也可以静态创建,注意命名!) // 在构造函数中 赋值 NULL // 在OnDestroy()中 delete 资源(动态创建) CSplitterWnd m_SplitterWnd; // 分割条对象3. 类视图添加两个 派生自 CFormView 的类此时资源视图会为这两个类自动添加对话框资源,可以手动在这两个对话框中添加原创 2020-12-08 14:18:42 · 1277 阅读 · 0 评论 -
从 COLORREF 提取 R,G,B 值
COLORREF color =RGB(120,250,110); int r = GetRValue(color); int g = GetGValue(color); int b = GetBValue(color);原创 2020-12-02 14:11:05 · 378 阅读 · 0 评论 -
扉页制作
扉页制作创建一个MFC类CSplashWnd,基类是CWnd。然后自己找一张Bmp放在工程的res文件夹下,并在VS->资源视图->点击右键,添加资源,选择bitmap,令其ID号为IDB_SPLASH.然后CSplashWnd类的头文件和cpp文件如下:#pragma once// CSplashWnd.h class CSplashWnd : public CWnd{ DECLARE_DYNAMIC(CSplashWnd)public: CSplashWnd();原创 2020-11-30 21:05:15 · 533 阅读 · 0 评论 -
MFC 对话框 小结
模态与非模态对话的创建 /* 1. 创建对话框对象 该步骤仅创建了一个对话框窗口的框架,dlg的成员中 并不包含窗口句柄,即还没有创建 */ CDialog dlg; // 2. 模态对话框 dlg.DoModel(); // 3. 非模态对话框 BOOL bRet = dlg.Create(IDD_DIALOG1, this); if (bRet) { dlg.ShowWindow(SW_SHOW); } 模态与非模态对话的销毁...原创 2020-09-25 21:01:40 · 218 阅读 · 0 评论 -
MFC CListCtrl 基本操作(二)
CListCtrl 自绘相关自适应列宽// 继承 CListCtrl 创建子类,定义下述函数void CMyListCtrl::AutoColWidth(){ // 设置列宽的过程中,不要自动重绘表格 SetRedraw(FALSE); int nColumnCount = GetColumnCount(); for(int i = 0; i < nColumnCount; i++) { // LVSCW_AUTOSIZE 自适应列表 文本 宽度 SetColumnWi原创 2020-09-18 13:16:53 · 378 阅读 · 0 评论 -
MFC CListCtrl 基本操作(一)
双击单元格,获得行列索引void classname::OnNMDblclkListIn(NMHDR *pNMHDR, LRESULT *pResult){ LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 *pResult = 0; // 获得行、列索引 int nItem = pNMItemActivate->原创 2020-09-17 11:20:07 · 357 阅读 · 0 评论 -
MFC CListCtrl 控件使用(链接)
CListCtrl控件搬运:参见以下文章CListCtrl控件(1)基本操作.CListCtrl控件(2)可编辑单元格的CListCtrl控件.CListCtrl控件(3)可排序的CListCtrl控件.CListCtrl控件(4)重绘CListCtrl控件的Header.原创 2020-08-28 10:54:31 · 210 阅读 · 0 评论