《VC++深入详解》学习笔记 第九章 定制应用程序外观
(年年月月岁岁朝朝,日复一日)
<>窗口外观修改: 窗口生成前修改:通过框架类(CMainFrame)PreCreateWindow()进行修改,修改对象包括CREATESTRUCT结构体中全部内容 cs.cx=300;等
窗口创建后修改:在框架类中在OnCtrate()函数中通过SetWindowLong()函数修改 GetWindowLong()获取窗口信息
<>窗口光标图标背景: 窗口生成前:窗口生成前可以在框架类中PreCreateWindow()函数里编写自定义窗口类进行注册,但是框架类智能改变窗口图标,而背景和光标要在视类中实现
背景图标等需要在视类窗口中创建(单文档SDI中视类和框架类一致),所以在视类中将框架类自定义窗口类再次注册,框架类中已声明。
快速设置:AfxRegisterWndClass(类型,光标,背景,图标);返回值为类名可以被直接调用
窗口创建后:SetClassLong(窗口句柄,属性索引,属性值);
<>模拟动画图标: 获取自定义图标LoadIcon(获取当前实例句柄,图标名或资源符字符串MAKEINTRESOURCE(ID)ID转换资源符字符串)
获取当前实例句柄 AfxGetInstanceHandle()或者theApp.m_hInstance(需要外部定义)(应用程序类的基类CWinApp的数据成员标识当前实例)或者
AfxGetApp()->hInstance获取当前程序对象指针用以访问m_hInstance
配置自定义图标 SetClassLong(m_hWnd,GCL_HICON,(LONG)m_hIcons[0]);属性值为自定义图标LoadIcon()返回值
<>定时器: 设置定时器SetTimer(),定时器消息WM_TIMER,响应函数Ontimer()
<>工具栏内容添加: 工具栏上添加按钮设置ID和相同ID按钮执行相同响应函数
<>工具栏创建: PlanA:创建工具栏资源>构建CToolBar对象>Create或CreateEx创建Windows工具栏并和CToolBar关联>LoadToolBar加载工具栏
PlanB:构建CToolBar对象>Create或CreateEx创建Windows工具栏并和CToolBar关联>LoadToolBar加载工具栏>SetButtons函数将工具栏按钮和位图关联
Create(父窗口指针,工具栏样式,工具栏ID); CToolBar::CreateEx(父窗口指针,Ctrl风格,工具栏样式,工具栏边框宽度,工具栏ID)
创建完成后通过CToolBar对象.EnableDocking()配置工具栏停靠位置,再EnableDocking()配置主框架可以被停靠位置,最后通过DockContrBar()进行停靠
注:上述过程在框架类中OnCreate()执行
<>进度栏: 创建CProgressCtrl对象,然后通过Create()进行创建窗体,通过SetPos()设置进度,StepIt增长一次(增长量由下一个决定),SetStep设置单位增长量,SetRange设置范围
<>自定义消息: 添加消息定:头文件中宏定义 #define UM_XXXXX WM_USER+X(自定义消息UM开头,消息值在WM_USER基础上加)
消息响应函数声明:头文件中系统消息声明外加afx_msg void OnProgresss();
消息映射表中添加自定义消息信息:源文件中通过ON_MESSAGE宏实现 ON_MESSAGE(消息名,消息响应函数名)
添加消息响应函数:源文件中添加对应消息响应函数
发送消息:SendMessage(消息名);该方式是消息直接发送到目标消息,执行消息响应函数后才返回(类似子函数跳转)
PostMessage(消息名);该方式是将消息发送消息列表后返回,消息响应函数之后执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具