怎样在Windows的标准的窗口标题栏上绘图,比如在最小化按钮旁?

admin 2025-11-10 阅读:4 评论:0
自从Windows操作系统出现以后,在应用程序中进行人机交互的思想和手段便发生了根本性的改变,计算机的界面变得友好精彩。一个程序的好坏很大程度上决定于人机交互的方便程度。当前,大多数程序的标题栏都千篇一律,如何让自己的程序与众不同是每个程序...

自从Windows操作系统出现以后,在应用程序中进行人机交互的思想和手段便发生了根本性的改变,计算机的界面变得友好精彩。一个程序的好坏很大程度上决定于人机交互的方便程度。当前,大多数程序的标题栏都千篇一律,如何让自己的程序与众不同是每个程序员的梦想,但改变标题栏的内容的确有相当的难度。该篇文章向你介绍如何在标题栏上添加图标按钮,而且当鼠标经过和点击该图标时,鼠标将有不同的反应。请按照下面的步骤实现。

第一步:打开VC编程环境,生成一个新的基于单文档的工程temp,所有的选项都取默认值,下面,我们就在此工程的标题栏上生成三个按钮图标。

第二步:下载资源文件,共有三个文件:CaptionButton.cpp、CaptionButton.h和Thunk.h。将这三个文件添加到工程中(添加方法不必细说了吧)。

第三步:在Mainfrm.h中定义变量CCaptionButton cbExtra;,当然要包含头文件#include "CaptionButton.h"。

第四步:为工程加载位图资源,ID号分别为IDB_BITMAP1、IDB_BITMAP2、IDB_BITMAP3、IDB_BITMAP6、IDB_BITMAP7。这些位图将显示在标题栏上,至于用什么样的位图就看你的喜好了。

第五步:在Mainfrm.cpp的OnCreate函数中添加如下的代码:

//初识化,m_hWnd是我们要处理的窗口句柄

cbExtra.Init(m_hWnd);

// // 设置标题栏上的原来的按钮(最大化、最小化和关闭)保留的数目

cbExtra.SetNumOfDefaultCaptions(3);

// 设置位图的透明颜色

COLORREF crTransparent = RGB(255,0,255);

cbExtra.SetTransparentColor(crTransparent);

// 鼠标选中一个位图后该位图的样子

cbExtra.SetSelectionBitmap((HBITMAP)LoadImage(AfxGetInstanceHandle(),

MAKEINTRESOURCE(IDB_BITMAP7),

IMAGE_BITMAP,

0,

0,

LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR));

// 鼠标移动到一个位图后,该位图的变化

HBITMAP hMouseOverBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),

MAKEINTRESOURCE(IDB_BITMAP2),

IMAGE_BITMAP,

0,

0,

LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

// 设置位图1

HBITMAP hCaptionAMBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),

MAKEINTRESOURCE(IDB_BITMAP3),

IMAGE_BITMAP,

0,

0,

LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

HBITMAP hCaptionAMBitmapHilite =

CCaptionButton::CombineBitmaps(hCaptionAMBitmap,

hMouseOverBitmap, crTransparent);

// 设置位图2

HBITMAP hCaption2Bitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),

MAKEINTRESOURCE(IDB_BITMAP6),

IMAGE_BITMAP,

0,

0,

LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

HBITMAP hCaption2BitmapHilite =

CCaptionButton::CombineBitmaps(hCaption2Bitmap,

hMouseOverBitmap,crTransparent);

// 设置位图三

HBITMAP hCaption3Bitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),

MAKEINTRESOURCE(IDB_BITMAP1),

IMAGE_BITMAP,

0,

0,

LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

HBITMAP hCaption3BitmapHilite =

CCaptionButton::CombineBitmaps(hCaption3Bitmap,

hMouseOverBitmap,crTransparent);

// 利用上面的定义创建标题栏上的位图,宝库位图的ID号,鼠标经过时的

file://变换位图,鼠标选择时的变换位图和提示文字。

cbExtra.New(1,hCaptionAMBitmapHilite,hCaptionAMBitmap,"guan");

cbExtra.New(2,hCaption2BitmapHilite,hCaption2Bitmap,"xi");

cbExtra.New(3,hCaption3BitmapHilite,hCaption3Bitmap,"ming");

第六步:现在我们可以先停下来看看我们的成果如何。编译我们的工程,运行,我们可以发现,我们的标题栏上增加了三个按钮,鼠标在上面移动或点击的时候,位图会发生变化。只是我们还没有添加在位图上点击是的处理函数,不要急,接下来我们就添加相应的处理函数。

第七步:当我们在标题栏上点击图标时,将有一个消息WM_CBLBUTTONCLICKED产生,参数WPARAM是指点击图标的ID号。

在mainfrm.h中定义消息映射函数afx_msg LRESULT Hit(WPARAM wParam, LPARAM lParam);

在mainfrm.cpp中定义函数实现:

ON_MESSAGE(WM_CBLBUTTONCLICKED, Hit)

LRESULT CMainFrame::Hit(WPARAM wParam, LPARAM lParam)

switch(wParam)

{// begin wParam

case 1:

AfxMessageBox("第一个CAPtion");

break;

case 2:

AfxMessageBox("第二个Caption");

break;

case 3:

AfxMessageBox("第三个Caption");

break;

return 1;

这样,当我们单击图标时将弹出不同的提示对话框,这只是一个例子,至于实现什么样的功能随你的便了。

第八步:标题栏的动态改变。在程序的执行过程中如果你要改变标题栏的样子你同样可以实现whatsapp登录whatsapp网页版登录,下面分别给出如何删除一个图标和更改一个图标的样子。

void CMainFrame::OnDelete()

cbExtra.Delete(1);

void CMainFrame::OnChange()

cbExtra.Replace(1,

1,

hCaption4BitmapHilite,

hCaption4Bitmap,

"pNewToolTipText");

好了whatsapp官网,功能实现了,还算满意吧,希望对你有用。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

热门文章
  • 详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略

    详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略
    一、下载与安装WhatsApp WhatsApp是一款全球使用范围极广的即时通讯软件,不仅可以实现文本聊天,还能进行语音、视频通话WhatsApp中文版,发送文件等功能。由于众所周知的原因,国内用户想要下载和安装WhatsApp可能会遇到一些困难。不过,只要按照以下步骤操作,就能顺利完成WhatsApp的下载和安装。 首先,我们需要解决的是下载问题。由于WhatsApp在国内的应用商店无法直接下载,所以我们需要寻找其他的下载途径。Android用户可以选择到各大安卓市场搜索下...
  • 苹果IOS5.1.1机完美越狱

    苹果IOS5.1.1机完美越狱
    越狱工具下载:(需手动复制: http://bbs./read-htm-tid-4804612.html ) 详细的越狱教程: Absinthe 2.0.4的越狱方法与Absinthe 1.0的越狱方法完全一样,非常简单的“傻瓜一键式”。不过这里绿毒有说明,最好重新刷固件。支持越狱设备IOS5.1.1的固件下载地址请点击本站的IOS固件下载,看下图: 下载完固件之后,把设备连接iTunes,开始刷固件。你也可以选择不刷,但是在越狱的过程之中,新的系统在越狱时会比较的顺利,...
  • 电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹

    电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹
    1. 怎么找到微信聊天图片在哪个文件夹里 图片保存路径:/storage/emulated/tencent/MicroMsg/WeiXin/文件夹,这个是完整路径。而在文件夹中只需要找到/tencent/MicroMsg/WeiXinWhatsApp中文版,就可以了,前面两个文件夹是系统根目录。以下是保存及查找图片的方法步骤介绍。 第一步、找到桌面的微信APP,直接点击打开这个微信的APP。 2. 电脑微信图片保存在哪个文件夹 个人微信文件夹。 电脑版微信聊天的图片,都保存到...
  • Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式

    Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式
    Meta(最近更名为 Meta AI)悄然宣布,WhatsApp 将在 Windows 11 上放弃 UWP(WinUI)WhatsApp中文版,退回采用基于 Chromium 的容器。这意味着 WhatsApp 又回到了几年前的样子。由于 web.whatsapp.com 一直领先于 Windows 应用开发,它确实拥有一些新功能,但速度更慢,占用更多内存。 如果独立开发者因为无力维护所有平台的代码库而选择 Web 应用程序,那是一回事,但当像 Meta 这样价值万亿美元...
  • 小米下載WhatsApp的完整指南:安装与使用注意事项

    小米下載WhatsApp的完整指南:安装与使用注意事项
    综上所述,确保您的小米手机具备以上条件,将有助于您顺利下载和安装WhatsApp,享受便捷的通讯服务。在满足这些条件后,您就可以按照后续步骤进行WhatsApp的下载和安装。 2. 下载和安装WhatsApp的具体步骤 在小米手机上下载和安装WhatsApp的具体步骤相对简单,但需注意一些特殊情况。首先,确保你的手机系统已更新到最新版本,以保证最佳的兼容性。由于安卓手机商店内无法直接找到WhatsApp,你可以通过APKPure等第三方应用商店进行下载。打开APKPure应用...