здравствуйте дорогие товарищи
у меня вопрос про System Area( Tray)
в статье (
http://rsdn.ru/?article/?winshell/shell.xmlАвтор(ы): А. Климов
Дата: 30.05.2002
Объект Microsoft Windows Shell позволяет получить доступ к различным настройкам Windows при помощи технологий COM и Automation, что позволяет использовать Visual Basic и VBScript. Например, вы можете получить доступ к различным диалоговым окнам, к файловой системе, запускать программы и изменять системные настройки.
)указано как сделать но есть маленький вопрос по получению поинтера на иконку
допустим я создал в процедуре WinMain и инициализировал структуру
//******************************************
WinMain ()
.............
NOTIFYICONDATA notif;
ZeroMemory(¬if,sizeof(NOTIFYICONDATA));
notif.cbSize = sizeof(NOTIFYICONDATA);
notif.hWnd = hTTYWnd;
notif.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
notif.uCallbackMessage = WM_STYSTEMTRAY;
notif.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(TTYICON));
strcpy(notif.szTip,"BioGuard Access Control");
notif.uID = 789;
Shell_NotifyIcon(NIM_ADD,¬if);
//******************************************
BOOL NEAR InitApplication( HANDLE hInstance )
{
WNDCLASS wndclass ;
// register tty window class
wndclass.style = 0 ;
wndclass.lpfnWndProc = TTYWndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = TTYEXTRABYTES ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon( hInstance, MAKEINTRESOURCE(TTYICON) );
wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ) ;
wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1) ;
wndclass.lpszMenuName = MAKEINTRESOURCE( TTYMENU ) ;
wndclass.lpszClassName = gszTTYClass ;
return( RegisterClass( &wndclass ) ) ;
} // end of InitApplication()
//******************************************
существует процедура обработки туда мне надо передать значения notif и поинтер на иконку;
LRESULT FAR PASCAL TTYWndProc( HWND hWnd, UINT uMsg,
WPARAM wParam, LPARAM lParam )
.......
case WM_DESTROY:
Shell_NotifyIcon(NIM_DELETE, ¬if);
DestroyIcon(hIcon);
как получить значения notif и поинтер на иконку hIcon ;
2 — как получить окно которое будет поверх ВСЕХ приложений. окно создано в ресурс построителе
Здравствуйте alwil, Вы писали:
A>здравствуйте дорогие товарищи
A>у меня вопрос про System Area( Tray)
A>в статье ( http://rsdn.ru/?article/?winshell/shell.xmlАвтор(ы): А. Климов
Дата: 30.05.2002
Объект Microsoft Windows Shell позволяет получить доступ к различным настройкам Windows при помощи технологий COM и Automation, что позволяет использовать Visual Basic и VBScript. Например, вы можете получить доступ к различным диалоговым окнам, к файловой системе, запускать программы и изменять системные настройки.
)указано как сделать но есть маленький вопрос по получению поинтера на иконку
A>допустим я создал в процедуре WinMain и инициализировал структуру
A>//******************************************
A>WinMain ()
A>.............
A>NOTIFYICONDATA notif;
A>ZeroMemory(¬if,sizeof(NOTIFYICONDATA));
A> notif.cbSize = sizeof(NOTIFYICONDATA);
A> notif.hWnd = hTTYWnd;
A> notif.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
A> notif.uCallbackMessage = WM_STYSTEMTRAY;
A> notif.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(TTYICON));
A> strcpy(notif.szTip,"BioGuard Access Control");
A> notif.uID = 789;
A> Shell_NotifyIcon(NIM_ADD,¬if);
A>//******************************************
A>BOOL NEAR InitApplication( HANDLE hInstance )
A>{
A> WNDCLASS wndclass ;
A> // register tty window class
A> wndclass.style = 0 ;
A> wndclass.lpfnWndProc = TTYWndProc ;
A> wndclass.cbClsExtra = 0 ;
A> wndclass.cbWndExtra = TTYEXTRABYTES ;
A> wndclass.hInstance = hInstance ;
A> wndclass.hIcon = LoadIcon( hInstance, MAKEINTRESOURCE(TTYICON) );
A> wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ) ;
A> wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1) ;
A> wndclass.lpszMenuName = MAKEINTRESOURCE( TTYMENU ) ;
A> wndclass.lpszClassName = gszTTYClass ;
A> return( RegisterClass( &wndclass ) ) ;
A>} // end of InitApplication()
A>//******************************************
A>существует процедура обработки туда мне надо передать значения notif и поинтер на иконку;
A>LRESULT FAR PASCAL TTYWndProc( HWND hWnd, UINT uMsg,
A> WPARAM wParam, LPARAM lParam )
A>.......
A>case WM_DESTROY:
A>Shell_NotifyIcon(NIM_DELETE, ¬if);
A>DestroyIcon(hIcon);
A>как получить значения notif и поинтер на иконку hIcon ;
A>2 — как получить окно которое будет поверх ВСЕХ приложений. окно создано в ресурс построителе
//****************************************
добавить в процедуру
case WM_DESTROY:
notif.cbSize = sizeof(NOTIFYICONDATA);
notif.hWnd = hwnd;
notif.uID = 789;
Shell_NotifyIcon(NIM_DELETE, ¬if);
DestroyIcon(hIcon);
и все
а вот по поводу мах-топ-левел виндовс пока не нашел?