VC编程技巧大全:从SIZEOF到自定义消息处理

需积分: 3 1 下载量 154 浏览量 更新于2024-07-31 收藏 457KB PDF 举报
"vc常用技巧整理集" 这份文档是关于Visual C++(简称VC)编程的一系列实用技巧的集合,涵盖了C语言中的sizeof操作符、自定义消息处理、属性页的扩展、平面工具栏的实现、获取应用程序实例句柄等多种主题。以下是对这些技巧的详细说明: 1. **解析C语言中的sizeof**:sizeof是C/C++语言中的一个运算符,用于返回变量或类型所占内存的字节数。这对于理解和优化内存使用非常重要,特别是在处理数组和结构体时。 2. **处理自定义消息**:在VC中,可以定义并处理自定义消息,以扩展Windows消息机制,实现特定的功能需求。这通常涉及到注册消息、发送消息以及在消息映射中处理这些消息。 3. **在属性页中添加字体对话框**:在属性页中集成字体选择功能可以让用户自定义界面显示的字体。这涉及到创建对话框、添加控件,以及处理对话框的返回值来更新属性页的显示。 4. **实现平面工具栏**:平面工具栏是一种没有边框和分隔线的工具栏,使得界面更加简洁。两种实现方法可能包括自定义控件绘制和使用MFC提供的类库支持。 5. **获取应用程序的实例句柄**:每个运行的Windows应用程序都有一个唯一的实例句柄,可以通过GetModuleHandle函数获取,这对于实现单实例应用或者跨进程通信很有用。 6. **获取应用程序主窗口的指针**:使用FindWindow或FindWindowEx函数可以找到应用程序的主窗口,这对于操作窗口或获取窗口信息非常关键。 7. **获取其他程序的图标**:通过使用Windows API的函数,如LoadIcon和ExtractIcon,可以从其他应用程序的可执行文件中提取图标资源。 8. **编程结束应用程序**和**控制Windows重新引导**:可以使用ExitProcess或PostQuitMessage来结束应用程序,而控制Windows重启则涉及更复杂的系统调用和权限管理。 9. **加载其他应用程序**:使用ShellExecute或CreateProcess函数可以启动其他应用程序,实现程序间的交互。 10. **获取应用程序路径**:GetModuleFileName函数可以用来获取当前运行应用程序的完整路径。 11. **获得各种目录信息**:如用户配置文件、临时文件夹等,可以通过GetEnvironmentVariable、SHGetSpecialFolderLocation等API获取。 12. **自定义消息**:通过RegisterWindowMessage注册自定义消息,然后在消息映射中处理这些消息,以扩展应用程序的功能。 13. **改变窗口的图标、缺省风格、窗口位置和大小**:SetClassLong、SetWindowLong、MoveWindow等函数可以用来更改窗口的各种属性。 14. **窗口始终在最前方**:使用SetWindowPos函数,设置WS_EX_TOPMOST标志可以使窗口始终位于其他窗口之上。 15. **创建字回绕的CEditView**:通过重载CEditView的相关函数,可以实现文本的自动换行。 16. **通用控件的显示和操作**:例如,移动和调整窗口大小,可以使用SetWindowPos和MoveWindow函数。 17. **工具条和状态条的指针获取**:通过成员函数或FindWindowEx获取MFC控件的指针,以便进行进一步的操作。 18. **启用/禁用工具条的工具提示**:修改控件的属性或消息映射,控制工具提示的显示。 19. **设置工具条标题**:通过修改控件的文本属性或使用UpdateData实现。 20. **创建和使用无模式对话框**:无模式对话框允许用户在对话框打开时继续与应用程序的其他部分交互。 21. **对话框中显示位图**:通过在对话框资源中添加位图控件,或者动态创建和添加位图控件。 22. **限制编辑框输入字符**:通过重载CEdit的PreTranslateMessage函数,过滤不合法的输入。 23. **改变控件颜色**:可以修改控件的背景色或前景色,通常需要重绘控件。 24. **列表框防闪烁技术**:在批量添加项时,可以一次性添加,减少重绘次数以避免闪烁。 25. **编辑控件添加文本**:使用SetWindowText或EM_SETSEL等函数可以在编辑框中插入或替换文本。 26. **访问预定义的GDI对象**:GDI(Graphics Device Interface)对象如画刷、笔、字体等,可以通过GetStockObject获取。 27. **获取GDI对象属性**:使用GetObject函数可以获取GDI对象的详细信息。 28. **实现橡皮擦效果**:通过CreateRoundRectRgn创建一个矩形区域,然后用SelectClipRgn选择为剪贴区域,配合FillRect实现橡皮擦效果。 29. **更新翻转背景颜色的文本**:使用SetBkMode改变背景绘制模式,结合TextOut或DrawText函数来实现。 30. **创建特定点大小的字体**:CreateFont函数可以创建具有指定点数大小的字体。 31. **计算字符串大小**:使用GetTextExtentPoint32函数可以获取字符串在特定字体下的宽度和高度。 32. **显示旋转文本**:利用TextOutEx或DrawTextEx函数的DT_NOCLIP和DT_EXTERNALLEADING参数,结合SetWorldTransform进行旋转。 33. **处理特殊字符串显示**:对于包含标签字符的字符串,可以使用DrawText函数的DT_RTLREADING或DT_WORDBREAK标志来正确显示。 34. **显示省略号**:当字符串过长时,可以使用Ellipsize函数或自定义算法截断并添加省略号。 以上就是文档中提及的VC编程技巧的详细解释,这些技巧可以帮助开发者提升代码效率,优化用户体验,并解决特定的编程问题。