如何自画最小化窗口的图标?

webber84 2002-09-07 08:55:01
窗口最小化到任务栏以后通常会显示一个图标,现在我想动态地改变这个图标。本来想用WM_PAINTICON消息来实现,但查了新的MSDN,说这个消息只有在win95和NT4.0以前的版本才使用,并给了一个解决办法:
case WM_PAINT:
{
PAINTSTRUCT ps;

if (IsIconic(hWnd))
{
BeginPaint(hWnd, (LPPAINTSTRUCT)&ps);
DefWindowProc(hWnd, WM_ICONERASEBKGND, (WORD)ps.hdc, 0L);
DrawIcon(ps.hdc, 0, 0, hIcon);
EndPaint(hWnd, (LPPAINTSTRUCT)&ps);
}
else
// Paint the window as usual
}
但是我试了试,没用。不知道哪位有可行的办法?
...全文
86 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
webber84 2002-09-12
  • 打赏
  • 举报
回复
结了。
lanfengjiyue 2002-09-08
  • 打赏
  • 举报
回复
learning!
llm308 2002-09-08
  • 打赏
  • 举报
回复
gz
webber84 2002-09-08
  • 打赏
  • 举报
回复
是不是有点异想天开了?我只是觉得既然有个WM_ICONERASEBKGND消息,应该可以实现的。
bcb_fans 2002-09-07
  • 打赏
  • 举报
回复
“如何改变最小化时任务栏上按钮的背景色”,有意思,不过不知道...:)
llwwwww 2002-09-07
  • 打赏
  • 举报
回复
好象有个SetSmallIcon(),你查查先
webber84 2002-09-07
  • 打赏
  • 举报
回复
为什么在这个问题上MSDN不灵了?
webber84 2002-09-07
  • 打赏
  • 举报
回复
多亏楼上两位的提醒,现在改变ICON实现。
只是不知道MSDN推荐的办法为什么行不通。还有如何改变最小化时任务栏上按钮的背景色?MSDN说最小化时候系统向程序发WM_ERASEBKGND来绘制背景,但好像也没用。
bcb_fans 2002-09-07
  • 打赏
  • 举报
回复
再次提供建议(不会嫌我烦吧^_^):

1、任务栏上的那个图标应该就是主窗口的图标。

2、检测消息WM_SIZE ,SIZE_MINIMIZED,如果是最小化,则启动定时器

3、在定时器中调用函数SetClassLong(hWnd,GCL_HICON)循环更新主窗口的图标。(或者发送消息WM_SETICON)

4、检测消息WM_SIZE,SIZE_RESTORED,关闭定时器。
rivershan 2002-09-07
  • 打赏
  • 举报
回复
也是换图标~我想~不过没见过~
webber84 2002-09-07
  • 打赏
  • 举报
回复
to rivershan(笨猫)(C++/VC初学者):
我知道它是用的IDR_MAINFRAME,我是想在程序最小化的时候让任务栏上的图标闪烁起来(不是shell_tray的图标,是任务栏中间那一排最小化窗口中的图标).
上海老李 2002-09-07
  • 打赏
  • 举报
回复
我也认为是Shell控制,如果是自画,你认为用这种办法可行不?检测是否为最小化状态?如果是,保存原先的ICON,再加新的ICON给FRAME,它也可以试试吧?
bcb_fans 2002-09-07
  • 打赏
  • 举报
回复
用C++Builder倒是挺方便的,在定时器中

Timer(....)
{
Applicatoin->Icon = ......//循环更新
}

不知道VC中哪个变量对应BCB中的Application?反正就是主窗口的Owner所对应的那个窗口

HWND hAppWnd = GetWindow(GW_OWNER,hMainWnd);
c_vector 2002-09-07
  • 打赏
  • 举报
回复
gz
rivershan 2002-09-07
  • 打赏
  • 举报
回复
它那个图标应该是和MainFrame的图标一样的~
你改买nframe图标?
我改过shell_tray的图标~
code_cold 2002-09-07
  • 打赏
  • 举报
回复
方法我也不太清楚

不过
这应是SHELL 的范畴
找一下SHELL的资料吧
webber84 2002-09-07
  • 打赏
  • 举报
回复
to duwenyong(啸海):
我要的不是画标题栏的代码。是窗口最小化以后,怎么画任务栏上那个按钮的图标。
duwenyong 2002-09-07
  • 打赏
  • 举报
回复
http://www.vckbase.com/code/downcode.asp?id=1497

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧