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

  • 相关阅读:
    在小程序开发的新风口 看华为云如何助立创科技抢占市场红利
    华为云软件开发云助力集时通软件敏捷开发
    一站式云端安卓软件开发工具的体验之路!
    一名优秀的全栈工程师必需的开发工具
    学哪种编程语言更有“钱”赚?
    深度剖析:最新云端开发工具如何实现敏捷+DevOps开发落地
    软件开发未来发展五大趋势,从业者们注意了!
    十个最有“钱景”的IT技能, 你掌握了哪个?
    “敏捷开发”之白话篇
    解决软件开发中的多个痛点——华为软件开发云
  • 原文地址:https://www.cnblogs.com/sepmaple/p/9394944.html
Copyright © 2020-2023  润新知