CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何知道winXP正在更换桌面主题

楼主hxh76ahei(ah hei)2006-05-04 15:07:22 在 VC/MFC / 基础类 提问

各位大侠好:  
  我的一个程序一运行起来后,通过和另一个程序之间消息互发来传递信息。可是在WinXP下一更换桌面主题,就使程序中的Timer在规定计时中收不到应答消息,从而状态重置,我想在更换桌面主题的情况下,延长计时,可我如何才能知道Windows正在更换桌面呢。请给一点指示。 问题点数:80、回复次数:4Top

1 楼hxh76ahei(ah hei)回复于 2006-05-04 16:43:56 得分 0

另外,我这个程序一起来后,就在NcPaint()中把对话框隐藏了,进入了托盘,所以好象接不到ON_WM_DRAWITEM的消息。还可以接那个消息判定在更换桌面吗?Top

2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-05-04 17:12:54 得分 80

U   can   handle   WM_THEMECHANGED   Notification.  
  Minimum   operating   systems:   Windows   XPTop

3 楼hxh76ahei(ah hei)回复于 2006-05-04 18:48:54 得分 0

多谢大侠指点。救我等菜鸟于水深火热之中,看来我要在WindowProc中用条件编绎处理WM_THEMECHANGED 了。还没实战过条件编绎呢。看来凶多吉少啊。多谢指点。Top

4 楼hxh76ahei(ah hei)回复于 2006-05-04 22:53:58 得分 0

的确还是有很多问题。我用的是VC6.0,两个程序,一个是我做的,另一个是别人做的,只是双方定义的消息。我的程序一运行就变成托盘和对方发消息交流。可在winxp上时,在运行状态一更换桌面主题就会导致在规定时间中收不消息而状态得重置,上面的大佬提示可以处理WM_THEMECHANGED, 我如下处理:  
  #ifndef   _WIN32_WINNT  
  #define   _WIN32_WINNT   0x0501  
  #endif  
  #ifndef   WM_THEMECHANGED    
  #define   WM_THEMECHANGED   (WM_USER   +   8000)  
  #endif  
   
  在LRESULT   CSCDlg::WindowProc(UINT   message,   WPARAM   wParam,   LPARAM   lParam)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  switch(message)  
  {  
   
  #if   _WIN32_WINNT   >=   0x0501  
  case   WM_THEMECHANGED:  
  span   =   50000;  
  ::MessageBox(NULL,   "received   the   change","",   MB_OK);  
  changetable   =   TRUE;  
  break;  
  #endif  
  然而程序编绎后在WINXP中运行时,没有对话框弹出,我想处理WM_NOTIFY,但是也没有动静,该如何是好呢?请各位老大再给点指点。Top

相关问题

关键词

得分解答快速导航

  • 帖主:hxh76ahei
  • DentistryDoctor

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo