VC编程技巧大全:实用指南
"这篇文档是关于Visual C++ (VC) 的常用编程技巧的集合,涵盖了多个方面的知识,包括C语言的特性理解、消息处理、界面定制、窗口操作、控件应用以及图形设备接口(GDI)的使用等。" 1. **C语言中的sizeof**:`sizeof` 是C/C++语言中的一个运算符,用于返回类型或者变量所占内存的字节数。例如,`sizeof(int)` 返回整型变量在当前系统中占用的字节数。 2. **处理自定义消息**:在VC中,可以通过`WM_USER` 开始的数值来定义自定义消息,然后在消息映射函数中处理这些消息,实现特定功能。 3. **属性页中添加字体对话框**:可以通过创建一个新的属性页类,添加一个控件触发字体选择对话框,并处理对话框的结果来实现。 4. **平面工具栏的实现**:平面工具栏是指没有边框和阴影的工具栏,可以使用`CreateToolbarEx`函数并调整样式来实现。 5. **获取应用程序实例句柄**:使用`GetModuleHandle(NULL)` 或 `AfxGetApp()->m_hInstance` 可以得到当前应用程序的实例句柄。 6. **获取应用程序主窗口指针**:通过`AfxGetMainWnd()` 函数可以获取到应用程序的主窗口指针。 7. **获取其他程序图标**:利用Windows API的`ExtractIcon` 或 `FindResource` 函数可以从其他程序的可执行文件中提取图标。 8. **编程结束应用程序与控制Windows重启**:使用`ExitProcess` 结束进程,而控制Windows重启则涉及更多系统级别的操作,可能需要调用`InitiateSystemShutdown` API。 9. **加载其他应用程序**:`ShellExecute` 函数可以用来启动其他应用程序。 10. **确定应用程序路径**:使用`GetModuleFileName(NULL)` 可以获取到当前运行的程序的完整路径。 11. **获取目录信息**:如程序目录、用户目录等,可以使用`SHGetSpecialFolderPath` 或 `GetWindowsDirectory` 等API函数。 12. **自定义消息的发送与接收**:通过`RegisterWindowMessage` 注册自定义消息,然后在消息循环中处理。 13. **改变窗口图标**:使用`LoadIcon` 加载新的图标,然后调用`SetClassLong` 或 `SetWindowLong` 修改窗口类或窗口的图标。 14. **修改窗口默认风格**:使用`GetWindowLong` 获取当前风格,`SetWindowLong` 设置新的风格,如WS_OVERLAPPEDWINDOW等。 15. **窗口居中显示**:获取屏幕尺寸,计算窗口位置,然后使用`MoveWindow` 进行移动。 16. **窗口最大化和最小化**:在窗口创建时设置初始状态,或者在程序运行时调用`ShowWindow` 函数。 17. **保持极小状态**:在消息处理中拦截`WM_SIZE` 消息,阻止窗口恢复原大小。 18. **限制窗口大小**:通过`SetWindowPos` 或 `WM_GETMINMAXINFO` 消息处理函数来设定窗口的最大和最小尺寸。 19. **使窗口不可见**:调用`ShowWindow(SW_HIDE)` 隐藏窗口。 20. **窗口始终在最前方**:设置窗口风格`WS_EX_TOPMOST`,或在消息处理中处理`WM_NCHITTEST`消息。 21. **创建字回绕的CEditView**:需要自定义CEditView,处理滚动和换行逻辑。 22. **通用控件的显示和操作**:如使用`CreateWindowEx` 创建通用控件,`SendDlgItemMessage` 与控件通信。 23. **改变视窗背景颜色**:`SetBkColor` 和 `SetBkMode` 函数可用于改变绘图背景。 24. **获取工具条和状态条指针**:通常通过`GetDlgItem` 或 `AfxGetApp()->m_pMainWnd->GetToolBar()` 等方式获取。 25. **工具条提示、标题设置**:使用`EnableMenuItem` 控制提示,`SetWindowText` 改变标题。 26. **无模式对话框**:通过`CreateDialogIndirect` 或 `DoModal` 创建和使用。 27. **位图显示在对话框**:使用`CreateWindow` 创建静态控件,然后用`SetBitmap` 设置位图。 28. **改变对话框背景色**:通过覆盖`OnCtlColor` 事件处理函数实现。 29. **三态下拉按钮**:创建自定义控件,处理不同状态的点击事件。 30. **动态创建控件**:`CreateWindowEx` 或 `CreateWindow` 动态创建控件,并添加到父窗口。 31. **编辑框字符限制**:使用`EM_SETLIMITTEXT` 消息限制输入字符数。 32. **改变控件颜色**:通过`SetTextColor` 和 `SetBkColor` 设置控件的前景和背景颜色。 33. **防止列表框闪烁**:在添加多条数据时,可以一次性添加所有数据,而不是一条条添加。 34. **编辑控件插入文本**:使用`EM_INSERTTEXT` 或 `SetWindowText` 插入文本。 35. **访问GDI对象**:使用`GetStockObject` 获取预定义的GDI对象,`CreateFont` 创建自定义字体。 36. **获取GDI对象属性**:通过`GetObject` 函数获取对象属性,如字体大小、颜色等。 37. **绘制不规则形状窗口**:自定义窗口类,重写`OnEraseBkgnd` 和 `OnPaint`,使用`BeginPath`、`EndPath` 和 `FillPath` 创建复杂形状。 38. **翻转背景颜色的文本**:使用`ExtTextOut` 或 `TextOut` 绘制文本,并配合`SetBkMode` 实现反色效果。 39. **创建特定点大小的字体**:在创建字体时指定`LOGFONT` 结构的`lfHeight` 字段为负值,根据设备DPI计算点大小。 40. **字符串处理**:`lstrlen` 计算字符串长度,`Wordwrap` 或自定义算法实现字符串截断和省略号添加。 41. **旋转文本**:使用`SetWorldTransform` 和 `DrawTextEx` 结合`DT_VCENTER` 和 `DT_RTLREADING` 标志实现。 42. **系统环境颜色获取**:`GetSysColor` 获取系统颜色,`GetSysColorBrush` 获取系统刷子。 43. **查询和设置系统参数**:`SystemParametersInfo` 函数可以查询和修改系统参数,如鼠标速度、字体大小等。 44. **添加系统菜单项**:使用`AppendMenu` 添加自定义菜单项到系统菜单。 45. **顶层菜单行数**:`GetSystemMetrics(SM_CYMENU)` 返回菜单的高度,结合窗口宽度可以计算行数。 以上就是关于VC编程的一些常见技巧,涵盖了从基本操作到高级定制的多个方面,对于提升VC编程效率和代码质量有很好的指导作用。
剩余63页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景