Wince 电池警告的bug

本文分析了WinCE系统中CTaskBar::TaskBarWndProc函数的一个Bug,该Bug会导致电池警告窗口出现资源泄漏和无法正常弹出的问题,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因近期定制wince Shell 频繁,已经是一个星期连续发现2个MS的bug了。。

位置是在 WINCE500/PUBLIC/SHELL/OAK/HPC/EXPLORER/TASKBAR/taskbar.cpp的

LRESULT CALLBACK CTaskBar::TaskBarWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)函数,

 

 m_pPowerUI->ShowPowerWarning(hwnd, lParam, (DLGPROC) s_TrayWndProc);

很明显的bug 把消息处理函数指导托盘的消息处理函数去了,服了MS,导致电池警告窗口弹出一次以后,关闭后,窗口句柄没有销毁,在资源泄漏的同时,也造成了再次弹出窗口时对窗口句柄的判断,使得无法弹出窗口。           

[c-sharp] view plain copy print ?
  1.         case WM_COMMAND:  
  2.   
  3.             switch (GET_WM_COMMAND_ID(wParam, lParam))  
  4.             {  
  5.                 case IDM_TASKBAR_WARNING:  
  6.                     if (m_pPowerUI)  
  7.                     {  
  8.                         // ignore return val until there is another warning handler   
  9.                         //m_pPowerUI->ShowPowerWarning(hwnd, lParam, (DLGPROC) s_TrayWndProc);    
  10. m_pPowerUI->ShowPowerWarning(hwnd, lParam, (DLGPROC) s_WarningDlgProc);  
  11.                     }     
  12.                     break;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值