Uporałem się z ostatnim błędem . ale teraz mam nowy,
Zrobiłem sobie procedure ladującą okienko i tray + ballontip.
ale nie wiem dlaczego mogę wyświetlić ballon oraz tray tylko w ciele procedury. Zrobiłem zmienną globalną do przechowywania uchwytu, ale nic to nie daje, balloon sie nie wyświetla. Czy ktoś może mi powiedzieć co źle zrobiłem ?
#define WM_USER_SHELLICON WM_USER + 1
HWND hWindow;
LRESULT CALLBACK WndProcLog(HWND hwndDlg,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
// Minimize(hWindow);
SetBaloonTip(hWindow,"Monika","Co Ty tu robisz?"); // tutaj się nie pokazuje i nie wiem dlaczego
break;
}
return DefWindowProc(hwndDlg, msg, wParam, lParam);
}
void Test2()
{
}
int WINAPI MyWindow()
{
WNDCLASS wcl;
wcl.hInstance = NULL;
wcl.lpszClassName = "iHAckKal";
wcl.lpfnWndProc = WndProcLog;
wcl.lpszMenuName = NULL;
wcl.hInstance = InstanceHandle;
wcl.style = 0;////
wcl.hIcon = LoadIcon(InstanceHandle, MAKEINTRESOURCE(IDI_ICON1));
wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
wcl.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
wcl.cbClsExtra = 0;
wcl.cbWndExtra = 0;
//PARAMETRY OKNA - KONIEC
if(!RegisterClass(&wcl))
{
MessageBox(NULL , "Failed to register window class" ,
"Error" , MB_ICONEXCLAMATION | MB_OK );
return 0;
}
hWindow = CreateWindow (
"iHAckKal", //nazwa klasy okna
"iHAckKal ", //tytuł okna
WS_CAPTION, //styl
540, 400, //współrzędne
300, 300, //wymiary okienka
NULL, //brak okna nadrzędnego
NULL, //brak menu
InstanceHandle, //uchwyt instancji
NULL //brak dodatkowych danych
);
if(hWindow == NULL)
{
MessageBox(NULL , "Failed to create window"
, "Error"
, MB_ICONEXCLAMATION | MB_OK );
return 0;
}
Minimize(hWindow); // tutaj wszystkie funkcje działają
SetBaloonTip(hWindow,"Siemka","Siemka"); //tutaj wszystkie funkcje działają
SetBaloonTip(hWindow,"iHackKal","Siemka"); //tutaj wszystkie funkcje działają
MSG message;
while(GetMessage(&message, NULL, 0, 0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
void Minimize(HWND hwndDlg)
{
/* NOTIFYICONDATA NotifyIconData;
//ShowWindow(hwndDlg, SW_HIDE);
LPSTR sTip = "iHack Kal";
NotifyIconData.cbSize = sizeof(NotifyIconData);
NotifyIconData.uID = 123;
NotifyIconData.hWnd = hwndDlg;
NotifyIconData.hIcon = LoadIcon(InstanceHandle, MAKEINTRESOURCE(IDI_ICON1));
NotifyIconData.uFlags = NIF_ICON | NIF_MESSAGE;
NotifyIconData.uCallbackMessage = WM_USER_SHELLICON;
lstrcpy(NotifyIconData.szTip, sTip);
NotifyIconData.uVersion = NOTIFYICON_VERSION;
Shell_NotifyIcon(NIM_SETVERSION, &NotifyIconData);
if(!Shell_NotifyIcon(NIM_ADD, &NotifyIconData))
MessageBox(NULL, "No niestety, z ikonki nici...", "iHAckKal", MB_ICONEXCLAMATION);
*/
LPSTR sTip = "iHack Kal";
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hwndDlg;
nid.uID = ID_TRAY1;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = WM_USER_SHELLICON;
nid.hIcon = LoadIcon(InstanceHandle, MAKEINTRESOURCE(IDI_ICON1));
lstrcpy(nid.szTip, sTip);
nid.uVersion = NOTIFYICON_VERSION;
Shell_NotifyIcon(NIM_SETVERSION, &nid);
if(!Shell_NotifyIcon(NIM_ADD, &nid))
MessageBox(NULL, "No niestety, z ikonki nici...", "iHAckKal", MB_ICONEXCLAMATION);
}
void UnMinimize(HWND hwndDlg)
{
LPSTR sTip = "iHack Kal";
NOTIFYICONDATA NotifyIconData;
ShowWindow(hwndDlg, SW_SHOW);
memset(&NotifyIconData, 0, sizeof(NotifyIconData));
NotifyIconData.cbSize = sizeof(NotifyIconData);
NotifyIconData.uID = 123;
NotifyIconData.hWnd = hwndDlg;
NotifyIconData.hIcon = LoadIcon(InstanceHandle, MAKEINTRESOURCE(IDI_ICON1));
NotifyIconData.uFlags = NIF_ICON | NIF_MESSAGE;
NotifyIconData.uCallbackMessage = WM_USER_SHELLICON;
lstrcpy(NotifyIconData.szTip, sTip);
Shell_NotifyIcon(NIM_DELETE, &NotifyIconData);
}
void SetBaloonTip(HWND hwndDlg,char* Title,char* Info)
{
LPSTR sTip = "iHack Kal";
NOTIFYICONDATA NotifyIconData;
memset(&NotifyIconData, 0, sizeof(NOTIFYICONDATA));
NotifyIconData.cbSize = sizeof(NOTIFYICONDATA);
NotifyIconData.uID = ID_TRAY1;
NotifyIconData.hWnd = hwndDlg;
NotifyIconData.hIcon = LoadIcon(InstanceHandle, MAKEINTRESOURCE(IDI_ICON1));
NotifyIconData.uFlags = 0x10;
NotifyIconData.uTimeout = 15000;
NotifyIconData.dwInfoFlags = NIIF_INFO;
NotifyIconData.uCallbackMessage = WM_USER_SHELLICON;
strcpy(NotifyIconData.szInfoTitle, Title);
strcpy(NotifyIconData.szInfo, Info);
lstrcpy(NotifyIconData.szTip, sTip);
NotifyIconData.uVersion = NOTIFYICON_VERSION;
Shell_NotifyIcon(NIM_SETVERSION, &NotifyIconData);
Shell_NotifyIcon(NIM_MODIFY, (NOTIFYICONDATA *)&NotifyIconData);
Nie wiem dlaczego tak się dzieje. Potrzebuje używać tych funkcji w innych częściach kodu, ale one działają tylko w ciele procedury MyWindow(); i nie wiem dlaczego.
proszę o pomoc.
Pozdrawiam