《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(消息名);该方式是将消息发送消息列表后返回,消息响应函数之后执行。

原文地址:https://www.cnblogs.com/sepmaple/p/9394944.html