MFC编程技巧:窗口样式修改与交互处理

3星 · 超过75%的资源 需积分: 9 5 下载量 166 浏览量 更新于2024-09-27 收藏 24KB TXT 举报
"mfc的常用方法 [转]" 在Windows应用程序开发中,Microsoft Foundation Class (MFC) 库提供了一套面向对象的类,用于简化Win32 API的使用。以下是一些MFC中的常用方法,这些方法在开发中经常被调用以实现特定功能。 1. 修改窗口样式:`ModifyStyleEx()` 和 `SetWindowLong()` 方法常用于动态改变窗口的外观和行为。例如,`ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW)` 可以将窗口的扩展样式从WS_EX_APPWINDOW更改为WS_EX_TOOLWINDOW,使得窗口不显示在任务栏上。而`SetWindowLong()` 结合`GWL_STYLE` 可以添加或移除窗口的基本样式,如`WS_MINIMIZEBOX` 和 `WS_MAXIMIZEBOX`,控制最小化和最大化按钮的显示。 2. 设置窗口位置:`SetWindowPos()` 方法可以用来调整窗口的位置和大小。在示例中,`SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);` 将窗口设置为最上层窗口,但不改变其位置和大小。 3. 禁用系统菜单项:在对话框初始化(`OnInitDialog()`)时,可以通过`GetSystemMenu()` 获取系统菜单,然后使用`ModifyMenu()` 或 `EnableMenuItem()` 来禁用或灰色显示特定的菜单项,例如关闭(Close)按钮。 4. 更新系统消息处理:`SendMessage(DM_REPOSITION)` 是用来更新对话框的大小和位置,通常在对话框控件发生变化时调用。 5. 自定义鼠标指针:`OnSetCursor()` 是一个消息响应函数,当鼠标移到窗口上时,可以使用`SetCursor()` 来设置自定义的鼠标指针。例如,显示标准的帮助指针。 6. 设置对话框背景颜色:`CTest6AppInitInstanceSetDialogBkColor()` 方法可以设置对话框的背景颜色。通过传入RGB值,可以改变对话框的前景和背景色。 7. 修改窗口标题:`caption` 的修改一般涉及改变窗口的标题文本。这通常在程序运行时根据需求动态更改,如登录成功后设置新的窗口标题。 8. 替换 IDR_MAINFRAME 资源:IDR_MAINFRAME 通常关联于应用程序的主菜单资源。如果需要替换它,可以在适当的地方修改资源ID,确保新的资源ID正确加载。 9. 显示登录对话框:在 `InitInstance()` 函数中,可以调用自定义的登录对话框类 `CLoginDlg` 的 `DoModal()` 方法来显示登录界面。根据用户在登录对话框中的操作结果(IDOK 或 IDCANCEL),决定应用程序的进一步流程。 以上方法都是MFC开发中常见的实践,它们可以帮助开发者高效地实现界面交互、窗口管理、菜单定制等任务。理解并熟练运用这些方法,可以极大地提高开发效率和程序的用户体验。
2018-09-20 上传
很经典的MFC教程。 目 录 译者序 前言 第一部分 基础知识 第1章 窗口 2 1.1 窗口和API环境 2 1.1.1 三种类型窗口 2 1.1.2 客户区和非客户区 3 1.2 窗口和MFC环境 4 1.3 怎样应用MFC创建一个窗口 5 1.4 怎样使用MFC销毁一个窗口 9 1.4.1 捆绑到一个已有的窗口 9 1.4.2 窗口类 10 1.4.3 窗口进程 10 1.5 怎样使用MFC创建一个窗口类 11 1.5.1 使用AfxRegisterWndClass () 函数注册一个窗口类 11 1.5.2 使用AfxRegisterClass ()函数 创建一个窗口类 12 1.6 怎样销毁一个MFC窗口类 14 1.7 厂商安装的窗口类 14 1.8 其他类型窗口 15 1.9 桌面窗口 16 1.10 小结 16 第2章 类 18 2.1 基类 18 2.1.1 CObject 18 2.1.2 CCmdTarget 19 2.1.3 CWnd 19 2.2 应用程序、框架、文档和视图类 19 2.2.1 CWinApp(O/C/W) 20 2.2.2 CView (O/C/W) 21 2.3 其他用户界面类 22 2.3.1 通用控件类 23 2.3.2 菜单类 23 2.3.3 对话框类 24 2.3.4 控制条类 24 2.3.5 属性类 25 2.4 绘图类 25 2.4.1 设备环境类 25 2.4.2 图形对象类 25 2.5 文件类 26 2.6 数据库类 26 2.6.1 ODBC类 26 2.6.2 DAO类 27 2.7 数据集类 27 2.8 其他数据类 27 2.9 通信类 28 2.10 其他类 29 2.11 小结 31 第3章 消息处理 32 3.1 发送或寄送一个消息 32 3.1.1 发送一个消息 32 3.1.2 寄送一个消息 32 3.1.3 发送一个消息与寄送一个消息 的比较 32 3.2 怎样使用MFC发送一个消息 33 3.3 怎样用MFC寄送一个消息 33 3.4 三种类型的消息 34 3.4.1 窗口消息 34 3.4.2 命令消息 34 3.4.3 控件通知 34 3.5 MFC怎样接收一个寄送的消息 36 3.6 MFC怎样处理一个接收到的消息 36 3.7 处理用户界面的对象 44 3.8 创建自定义窗口消息 45 3.8.1 静态分配的窗口消息 45 3.8.2 动态分配的窗口消息 46 3.9 重定向消息 47 3.9.1 子分类和超分类 47 3.9.2 用MFC子分类窗口 48 3.9.3 重载OnCmdMsg ( ) 49 3.9.4 使用SetWindowsHookEx ( ) 49 3.9.5 使用SetCapture ( ) 49 3.9.6 专有的消息泵 50 3.10 小结 50 第4章 绘图 51 4.1 设备环境 51 4.2 在MFC环境中创建一个设备环境 52 4.2.1 屏幕 52 4.2.2 打印机 53 4.2.3 内存 54 4.2.4 信息 54 4.3 绘图例程 55 4.3.1 画点 55 4.3.2 画线 55 4.3.3 画形状 55 4.3.4 形状填充和翻转 55 4.3.5 滚动 56 4.3.6 绘制文本 56 4.3.7 绘制位图和图标 56 4.4 绘图属性 56 4.4.1 设备环境属性 57 4.4.2 画线属性 58 4.4.3 形状填充属性 58 4.4.4 文本绘制属性 58 4.4.5 映像模式 59 4.4.6 调色板属性 62 4.4.7 混合属性 62 4.4.8 剪裁属性 63 4.4.9 位图绘制属性 64 4.5 元文件和路径 65 4.5.1 元文件 65 4.5.2 路径 66 4.6 颜色和调色板 66 4.6.1 抖动色 67 4.6.2 未经抖动色 67 4.6.3 系统调色板 67 4.6.4 使用系统调色板 68 4.6.5 动画色 71 4.7 控制什么时候在哪里绘图 71 4.7.1 处理WM_PAINT 71 4.7.2 只绘制被无效化的区域 72 4.7.3