| |
|
|
| RGH
Und hier für alle Mitleser, die wissen wollen, wie man überhaupt Anwendungen für den Systemtray von Windows in XProfan programmiert, ein komplettes Beispiellisting mit TrayIcon-Menü und Bildern in demselben: Declare Hicon&,Ende%,Show%
Declare Checkmerker%,Menuhandle&
Declare hbmChecked&,hbmUnchecked&
DEF SetMenuItemBitmaps(5) !USER32,SetMenuItemBitmaps
Proc Ico2SizedBmp
Parameters Icon&, dx&, dy&
Weiße temporäre Bitmap in Größe 32 * 32 erzeugen
Var TempBmp& = Create(hNewPic, 32, 32, RGB(255,255,255))
Auf diese Bitmap das Icon zeichnen
StartPaint TempBmp&
DrawIcon Icon&, 0, 0
EndPaint
Weiße Bitmap in Größe dx& * dy& erzeugen
Var IBmp& = Create(hNewPic, dx&, dy&, RGB(255,255,255))
Auf diese Bitmap die temporäre Bitmap verkleinert zeichnen
StartPaint IBmp&
DrawSizedPic TempBmp&, 0, 0 - dx&, dy&; 0
EndPaint
DeleteObject TempBmp&
Return IBmp&
EndProc
Proc Menue
CreateMenu
AppendMenu 101, &Info
AppendMenu 102, &deaktiviert
SetMenuItemBitmaps(&hMenu,102,$10,hbmChecked&,hbmUnChecked&) Menu-Grafik ändern...
AppendMenu 106, Hauptfenster &sichtbar
SetMenuItemBitmaps(&hMenu,106,$10,hbmChecked&,hbmUnChecked&) Menu-Grafik ändern...
AppendMenu 104, -
AppendMenu 103, &Beenden
CheckMenu 106, Show%
CheckMenu 102, Checkmerker%
Return @TrackMenu()
EndProc
Windowstyle 26 + 512
WindowTitle TrayIcon_Test
Window 0,0-640,480
@ShowWindow(%hWnd,0)
Hicon& = @create(hIcon,Profan)
hbmChecked& = Ico2SizedBmp(@create(hIcon, A),13,13)
hbmUnChecked& = Ico2SizedBmp(@create(hIcon, Baum),13,13)
@TrayIcon(Add, %hWnd, 1, hIcon&, TrayIcon 11)
Whilenot Ende%
Waitinput
If @TrayIcon(Msg, 1) = $203 Doppelklick links
Ende%=1
Elseif @TrayIcon(Msg, 1) = $204 Rechter Mausbutton gedrückt
@SetActiveWindow(%hWnd)
Menue()
If (%MenuItem = 102)
Checkmerker% = @Not(Checkmerker%) Zustandsänderung merken...
If Checkmerker% = 0
Hicon& = @create(hIcon, A)
@TrayIcon(SetIcon, %hWnd, 1, hIcon&)
Else
Hicon& = @create(hIcon, Baum)
@TrayIcon(SetIcon, %hWnd, 1, hIcon&)
EndIf
Setmenuitem 0
ElseIf (%MenuItem = 101)
@Messagebox(Programmiert in XProfan 11,Hinweis,64)
Setmenuitem 0
ElseIf (%MenuItem = 103)
Ende%=1
ElseIf (%MenuItem = 106)
Show% = @Not(Show%)
@Showwindow(%hWnd,Show%)
Setmenuitem 0
EndIf
Endif
Endwhile
@TrayIcon(Delete, %hWnd, 1)
End
Gruß Roland |
|
|
| |
|
|