Gå til innhold

Ikon på oppgavelinjen


Anbefalte innlegg

Videoannonse
Annonse
kan jeg spørre hvordan??

gjerne en c++ kode også...

Du bruker Shell_NotifyIcon funksjonen.

 

Her er et lite eksempel jeg har hatt liggende:

 

// ShellNotifyIcon Example  by  Kjetil Haga <[email protected]>
//

#include <windows.h>
#include <tchar.h>


// Globals
HINSTANCE g_instance;

// Constants
const TCHAR* APPLICATION_NAME = _T("ShellNotifyIcon Example");
const TCHAR* MAIN_WINDOWCLASS = _T("SHELLNOTIFYICONEXAMPLE");

// User defined messages
#define	WM_SHELLNOTIFY	WM_USER + 101

// Prototypes
ATOM MyRegisterClass(HINSTANCE instance_);
BOOL InitInstance(HINSTANCE instance_, int cmdShow_);
LRESULT CALLBACK WndProc(HWND wnd_, UINT message_, WPARAM wParam_, LPARAM lParam_);



// Entry point
int APIENTRY _tWinMain(HINSTANCE instance_, HINSTANCE prevInstance_, LPTSTR cmdLine_, int cmdShow_)
{
MSG  msg;
HACCEL	accelTable;

// register window class
MyRegisterClass(instance_);

// init application
if(!InitInstance (instance_, cmdShow_)) 
{
 return FALSE;
}

// load accelerators
accelTable = LoadAccelerators(instance_, MAIN_WINDOWCLASS);

// main message loop
while (GetMessage(&msg, NULL, 0, 0)) 
{
 if (!TranslateAccelerator(msg.hwnd, accelTable, &msg)) 
 {
 	TranslateMessage(&msg);
 	DispatchMessage(&msg);
 }
}

return (int) msg.wParam;
}


//! Saves instance handle and creates main window
BOOL InitInstance(HINSTANCE instance_, int cmdShow_)
{
  HWND hWnd;

  g_instance = instance_;

  hWnd = CreateWindow(MAIN_WINDOWCLASS, APPLICATION_NAME, WS_OVERLAPPEDWINDOW,
     CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, instance_, NULL);

  if (!hWnd)
  {
     return FALSE;
  }

  ShowWindow(hWnd, cmdShow_);
  UpdateWindow(hWnd);

  return TRUE;
}


//!  Registers the window class.
ATOM MyRegisterClass(HINSTANCE instance_)
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX); 

wcex.style  	= CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc	= (WNDPROC)WndProc;
wcex.cbClsExtra  = 0;
wcex.cbWndExtra  = 0;
wcex.hInstance  = instance_;
wcex.hIcon  	= 0;
wcex.hCursor  = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName	= NULL;
wcex.lpszClassName	= MAIN_WINDOWCLASS;
wcex.hIconSm  = 0;

return RegisterClassEx(&wcex);
}


//! Processes messages for the main window.
LRESULT CALLBACK WndProc(HWND wnd_, UINT message_, WPARAM wParam_, LPARAM lParam_)
{
const static UINT	SHELLICON_ID = 1;
PAINTSTRUCT  	ps;
HDC    	hdc;

switch (message_) 
{
case WM_SYSCOMMAND:
 if(SC_MINIMIZE == wParam_)
 {
 	NOTIFYICONDATA	tnid;

 	memset(&tnid, 0, sizeof(tnid) );
 	tnid.cbSize = sizeof(tnid);
 	tnid.hWnd = wnd_;
 	tnid.uID = SHELLICON_ID;
 	tnid.uFlags = NIF_MESSAGE | NIF_ICON;
 	tnid.uCallbackMessage = WM_SHELLNOTIFY;
 	tnid.hIcon = LoadIcon(NULL, IDI_EXCLAMATION);
 	
 	if(Shell_NotifyIcon(NIM_ADD, &tnid) == TRUE)
 	{
   ShowWindow(wnd_, SW_HIDE);
 	}
 	break;
 }
 
 return DefWindowProc(wnd_, message_, wParam_, lParam_);

case WM_SHELLNOTIFY:
 if(SHELLICON_ID == wParam_)
 {
 	if (WM_LBUTTONDBLCLK == lParam_)
 	{
   NOTIFYICONDATA  tnid;

   memset(&tnid, 0, sizeof(tnid) );
   tnid.cbSize = sizeof(tnid);
   tnid.hWnd = wnd_;
   tnid.uID = SHELLICON_ID;

   Shell_NotifyIcon(NIM_DELETE, &tnid);
   ShowWindow(wnd_, SW_RESTORE);
 	}
 }
 break;

case WM_PAINT:
 hdc = BeginPaint(wnd_, &ps);
 EndPaint(wnd_, &ps);
 break;

case WM_DESTROY:
 PostQuitMessage(0);
 break;
default:
 return DefWindowProc(wnd_, message_, wParam_, lParam_);
}
return 0;
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...