"VC++编程技巧75例涵盖了多种与Microsoft Visual C++开发相关的技术细节,包括窗口操作、用户界面定制、控件交互以及图形设备接口(GDI)的运用等。以下是对这些技巧的详细解释: 1. 获取应用程序实例句柄:在Windows程序设计中,每个运行的应用程序都有一个唯一的实例句柄,可以使用`GetModuleHandle(NULL)`函数来获取。 2. 获取应用程序主窗口指针:使用`FindWindow(NULL, NULL)`函数,传入NULL参数即可获取到主窗口的句柄,然后通过`GetWindowLong`或`GetWindowLongPtr`转换为指针。 3. 获取其他程序图标:使用`SHGetFileInfo`函数,指定程序的路径,可以获取其图标信息。 4. 编程结束应用程序和控制Windows重新引导:使用`ExitProcess`函数可结束当前应用程序,而控制Windows重启则涉及到更复杂的系统调用,可能需要修改注册表或使用`ExitWindowsEx`函数。 5. 加载其他应用程序:利用`ShellExecute`函数,可以启动并加载另一个应用程序。 6. 确定应用程序路径:通过`GetModuleFileName(NULL)`函数,可以获取当前运行程序的完整路径。 7. 获得各种目录信息:如当前用户目录、系统目录等,可以使用`GetEnvironmentVariable`函数或者`SHGetKnownFolderPath`来获取。 8. 自定义消息:通过`RegisterWindowMessage`注册新的消息类型,然后在消息处理函数中进行处理。 9. 改变窗口图标:使用`SetClassLong`或`SetClassLongPtr`函数,设置`GCL_HICON`或`GCL_HICONSM`来更换窗口的图标。 10. 改变窗口默认风格:通过`SetWindowLong`或`SetWindowLongPtr`,修改`WS_EX_`系列风格。 11. 窗口居中显示:计算窗口和屏幕的大小,然后调整位置使其居中。 12. 程序启动即最大化/最小化:在窗口类结构中设置`WS_MINIMIZEBOX`或`WS_MAXIMIZEBOX`标志,并在`WM_CREATE`消息中进行最大化或最小化操作。 13. 保持程序极小状态:设置窗口风格`WS_MINIMIZE`,并在消息处理中响应`WM_SIZE`消息。 14. 限制窗口大小:在`WM_GETMINMAXINFO`消息中调整窗口的最小和最大尺寸。 15. 隐藏窗口:使用`ShowWindow`函数,传入`SW_HIDE`参数。 16. 使窗口始终在最前端:设置窗口风格`WS_EX_TOPMOST`。 17. 创建字回绕的`CEditView`:修改`CEditView`的类定义,处理`EN_WRAP`消息。 18. 通用控件的显示:使用`CreateWindowEx`创建带有通用控件类名的窗口。 19. 移动窗口:调用`MoveWindow`函数。 20. 重置窗口大小:使用`SetWindowPos`函数。 21. 窗口标题栏外点击移动:处理`WM_NCHITTEST`消息,返回`HTCAPTION`。 22. 改变窗口标题:使用`SetWindowText`函数。 23. 防止主框显示文档名:在消息处理中阻止`WM_SETTEXT`消息传递。 24. 获取消息信息:使用`GetMessage`或`PeekMessage`函数,结合`TranslateMessage`和`DispatchMessage`。 25. 不规则形状窗口:使用`CreateRoundRectRgn`创建自定义区域,然后设置`SetWindowRgn`。 26. 获取工具条和状态条指针:通过类名查找控件,然后转换为指针。 27. 启用/禁用工具提示:设置控件的`TBBUTTON`结构的`fsState`成员。 28. 设置工具条标题:调用`SetWindowText`函数。 29. 无模式对话框:使用`CreateDialogParam`或`DialogBoxParam`创建。 30. 位图显示在对话框:使用`CreateWindow`创建`STATIC`控件,并设置`SS_BITMAP`样式。 31. 对话框背景颜色:在对话框创建后,使用`SetBkColor`和`ExtTextOut`。 32. 控件指针获取:通过控件ID,使用`GetDlgItem`函数。 33. 控制控件使能/禁用:使用`EnableWindow`函数。 34. 改变控件字体:使用`SendMessage`发送`WM_SETFONT`消息。 35. OLE_COLOR数据类型:在控件属性中使用`COleControlSite::SetColor`方法。 36. 显示文件列表:不使用通用对话框,直接读取文件系统。 37. 旋转按钮控件问题:可能涉及控件样式设置不正确或消息处理不当。 38. 下拉按钮位图显示:使用`SetBitmap`函数设置位图。 39. 三态下拉按钮:创建自定义控件,处理不同状态的消息。 40. 动态创建控件:使用`CreateWindowEx`函数。 41. 编辑框字符限制:处理`EN_UPDATE`消息,检查输入字符。 42. 控件颜色更改:使用`SetBkColor`和`SetTextColor`。 43. 防止列表框闪烁:在批量添加项时,先禁用画图,完成后启用。 44. 文本添加到编辑控件:使用`SetWindowText`或`EM_REPLACESEL`消息。 45. GDI对象访问:使用`GetStockObject`或`CreateXXXObject`创建。 46. GDI对象属性:使用`GetObject`函数。 47. 橡皮区矩形:实现`BeginPaint`,`CreateRoundRectRgn`,`SelectClipRgn`和`EndPaint`。 48. 翻转背景颜色的文本:使用`BitBlt`和`InvertRect`。 49. 特定点大小的字体:使用`CreateFont`函数。 50. 串大小计算:使用`lstrlen`函数。 51. 旋转文本:使用`SetMapMode`,`SetWorldTransform`和`DrawText`。 52. 标签字符显示:处理`WM_PAINT`,正确渲染特殊字符。 53. 串末尾省略号:截取字符串,添加省略号。 以上是VC++编程中的75个技巧,涵盖了从基本的窗口操作到复杂的用户界面定制和GDI编程,为开发者提供了丰富的实践指导。"
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 0
- 资源: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决Eclipse配置与导入Java工程常见问题
- 真空发生器:工作原理与抽吸性能分析
- 爱立信RBS6201开站流程详解
- 电脑开机声音解析:故障诊断指南
- JAVA实现贪吃蛇游戏
- 模糊神经网络实现与自学习能力探索
- PID型模糊神经网络控制器设计与学习算法
- 模糊神经网络在自适应PID控制器中的应用
- C++实现的学生成绩管理系统设计
- 802.1D STP 实现与优化:二层交换机中的生成树协议
- 解决Windows无法完成SD卡格式化的九种方法
- 软件测试方法:Beta与Alpha测试详解
- 软件测试周期详解:从需求分析到维护测试
- CMMI模型详解:软件企业能力提升的关键
- 移动Web开发框架选择:jQueryMobile、jQTouch、SenchaTouch对比
- Java程序设计试题与复习指南
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)