该用户从未签到
|
有些同学在编程中常问我关于程序在Explorer崩溃重建后,该如何把系统托盘上的小图标重建回去。. o z2 W& b% u# h
* x1 `- o5 x1 C% A" e
其实这个很简单,Explorer重建之后,会产生一个TaskbarCreated事件,我们在程序里向系统注册这个事件,
7 T" u3 j9 X* g2 A0 z- Zconst UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated"));; Q' T8 i- Y! O. g
然后在程序的WindowProc里处理注册的消息;
) `, ?7 {8 X% B2 |/ ^ NLRESULT XXXXXX::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
- a+ C2 E( ]. V4 Z8 I$ W2 N: v{
7 r$ ]9 W9 `* ~: L% B // TOD Add your specialized code here and/or call the base class% E7 k* k) b# h0 R, ?7 c
if (message == WM_TASKBARCREATED)
; A6 ~5 X) g5 v! s { @* O* `! k/ s) S* W
m_nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
- j) m6 Y8 z- |- e* l8 t0 n Shell_NotifyIcon(NIM_ADD, &m_nid); s, O1 J1 E* {- G- D+ Q3 J
}
: o* g' U& B' T! m y6 ~ return CFrameWnd::WindowProc(message, wParam, lParam);
* k0 r2 g+ ^6 r1 a5 y7 j- m2 S}3 q8 Q" M7 X3 T" |# k6 n
在接收到Explorer重建的消息后,我们用NIM_ADD参数重建自已的消息图标。 |
|