Сворачивание диалога и добавление значка в трей (Отобразить)
CODE:
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define NIF_SHOWTIP 128
#define NIF_TIP 4
#define NIF_ICON 2
#define NIF_INFO 16
#define NIM_ADD 0
#define NIM_DELETE 2
#define NIF_MESSAGE 1
#define SC_MINIMIZE 61472
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define IMAGE_ICON 1
#define LR_LOADFROMFILE 16
#define IDI_INFORMATION 32516
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "Shell_NotifyIcon", "Shell_NotifyIconA", "Shell32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "LoadImage", "LoadImageA", "User32.dll");
external(INT, "ShowWindow", "ShowWindow", "User32.dll");
int static;
char NOTIFYICONDATA[488];
createdialog(0);
showdialog(0, "Dialog",300, 300, 300, 150, 1, 1);
loop()sleep(10);
function getmessage(0, WM_SYSCOMMAND)
{
if(message.wparam==SC_MINIMIZE) // если окно было свёрнуто
{
ShowWindow(gethwnd(0), SW_HIDE); // скрыть диалог
Shell_NotifyIcon(NIM_ADD, address(#NOTIFYICONDATA[0])); // добавить значок в трей
return;
}
}
function getmessage(0, WM_CREATE)
{
static=CreateWindow(0, "STATIC", "Это окно будет сворачиваться в трей", WS_CHILD | WS_VISIBLE, 20, 10, 250, 20, gethwnd(0), 0, 0, 0);
initialarray(#NOTIFYICONDATA[0], 0);
writeaddress(sizearray(NOTIFYICONDATA), address(#NOTIFYICONDATA[0]));
writeaddress(gethwnd(0), address(#NOTIFYICONDATA[4]));
writeaddress(1025, address(#NOTIFYICONDATA[8])); // идентификатор иконки
writeaddress(WM_MOUSEMOVE, address(#NOTIFYICONDATA[16]));
writeaddress(NIF_ICON | NIF_SHOWTIP | NIF_TIP | NIF_INFO | NIF_MESSAGE, address(#NOTIFYICONDATA[12]));
writeaddress(LoadIcon(0, IDI_INFORMATION), address(#NOTIFYICONDATA[20])); // одна из стандартных иконок
//writeaddress(LoadImage(0, "C:\111.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE), address(#NOTIFYICONDATA[20])); // своя иконка
strcpy(#NOTIFYICONDATA[24], "MyApp"); // подсказка при наведении на значок
}
function getmessage(0, WM_MOUSEMOVE)
{
if(message.wparam==1025) // если курсор наведён на значок с указанным идентификатором
{
if(message.lparam==WM_LBUTTONDOWN) // если был клик левой кнопкой мыши
{
ShowWindow(gethwnd(0), SW_SHOWNORMAL); // показать диалог
Shell_NotifyIcon(NIM_DELETE, address(#NOTIFYICONDATA[0])); // удалить значок из трея
return;
}
}
}
#define WS_CHILD 1073741824
#define NIF_SHOWTIP 128
#define NIF_TIP 4
#define NIF_ICON 2
#define NIF_INFO 16
#define NIM_ADD 0
#define NIM_DELETE 2
#define NIF_MESSAGE 1
#define SC_MINIMIZE 61472
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define IMAGE_ICON 1
#define LR_LOADFROMFILE 16
#define IDI_INFORMATION 32516
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "Shell_NotifyIcon", "Shell_NotifyIconA", "Shell32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "LoadImage", "LoadImageA", "User32.dll");
external(INT, "ShowWindow", "ShowWindow", "User32.dll");
int static;
char NOTIFYICONDATA[488];
createdialog(0);
showdialog(0, "Dialog",300, 300, 300, 150, 1, 1);
loop()sleep(10);
function getmessage(0, WM_SYSCOMMAND)
{
if(message.wparam==SC_MINIMIZE) // если окно было свёрнуто
{
ShowWindow(gethwnd(0), SW_HIDE); // скрыть диалог
Shell_NotifyIcon(NIM_ADD, address(#NOTIFYICONDATA[0])); // добавить значок в трей
return;
}
}
function getmessage(0, WM_CREATE)
{
static=CreateWindow(0, "STATIC", "Это окно будет сворачиваться в трей", WS_CHILD | WS_VISIBLE, 20, 10, 250, 20, gethwnd(0), 0, 0, 0);
initialarray(#NOTIFYICONDATA[0], 0);
writeaddress(sizearray(NOTIFYICONDATA), address(#NOTIFYICONDATA[0]));
writeaddress(gethwnd(0), address(#NOTIFYICONDATA[4]));
writeaddress(1025, address(#NOTIFYICONDATA[8])); // идентификатор иконки
writeaddress(WM_MOUSEMOVE, address(#NOTIFYICONDATA[16]));
writeaddress(NIF_ICON | NIF_SHOWTIP | NIF_TIP | NIF_INFO | NIF_MESSAGE, address(#NOTIFYICONDATA[12]));
writeaddress(LoadIcon(0, IDI_INFORMATION), address(#NOTIFYICONDATA[20])); // одна из стандартных иконок
//writeaddress(LoadImage(0, "C:\111.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE), address(#NOTIFYICONDATA[20])); // своя иконка
strcpy(#NOTIFYICONDATA[24], "MyApp"); // подсказка при наведении на значок
}
function getmessage(0, WM_MOUSEMOVE)
{
if(message.wparam==1025) // если курсор наведён на значок с указанным идентификатором
{
if(message.lparam==WM_LBUTTONDOWN) // если был клик левой кнопкой мыши
{
ShowWindow(gethwnd(0), SW_SHOWNORMAL); // показать диалог
Shell_NotifyIcon(NIM_DELETE, address(#NOTIFYICONDATA[0])); // удалить значок из трея
return;
}
}
}