SystemArea(Tray) уничт.icon (refresh),max top окно
От: alwil  
Дата: 14.08.02 08:35
Оценка:
здравствуйте дорогие товарищи

у меня вопрос про 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(&notif,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,&notif);


//******************************************

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, &notif);
DestroyIcon(hIcon);

как получить значения notif и поинтер на иконку hIcon ;







2 — как получить окно которое будет поверх ВСЕХ приложений. окно создано в ресурс построителе
Re: SystemArea(Tray) уничт.icon (refresh),max top окно
От: alwil  
Дата: 14.08.02 13:43
Оценка:
Здравствуйте 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(&notif,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,&notif);


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, &notif);

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, &notif);
DestroyIcon(hIcon);

и все


а вот по поводу мах-топ-левел виндовс пока не нашел?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.