Ongeveer een maand geleden heb ik een erg handig programma gedownload waarmee je je eigen programma kan verbergen in de systray. Het leuke van dit programma is dat je ook een popup menu krijgt wanneer je met rechter muisknop op het icoon klikt in de systray. Dit programma bestaat uit 1 form, een class en een module.
Alles werkt perfect, totdat ik het popup menutje wil gaan uitbreiden. Standaard bestond het popup menu uit 3 items. Ik heb 2 items toegevoeg wat het totaal op 5 brengt (echt waar). Het probleem is nu dat wanneer je de laatste (5de) optie van het popup menu aanklikt het, het script uitgevoerd wordt wat bij de eerste optie van het menu hoort. Optie 5 verschijnt dus wel in het menu, maar wanneer je er op klikt wordt het script van optie 1 uitgevoerd.
Met geen mogelijkheid krijg ik het programma goed werkend met 5 menu opties. Ik heb de schrijver van dit programma al gemaild en kreeg als antwoord dat ik iets moest veranderen in het commande "WM_Command". Ik heb alle waarden die samenhangen met die commando al gewijzigd maar niks helpt.
De menuitems staan gedefinieerd in het form zelf en ziet er ongeveer als volgt uit:
verder staat er nog een stukje code wat iets met het commando WM_Command te maken heeft:
De code die wordt uitgevoerd als je een popup item klikt staat in cases. Als ik bijvoorbeeld op show form 2 zou kilkken dan voert deze case 1 uit omdat in de code regel +1 staat. Deze waarde +1 wordt doorgegeven aan de functie welke de cases bevat. Veel van de code komt van de VB 5 CD af. De maker van het prog zegt er dit over: "This is the VB5 Systray control ported to a Class Module". Veel source code staat dus gewoon op de VB 5 CD
De waarden 4 en 3 heb ik al geprobeerd te veranderen, maar dat werkt dus niet. Erger nog, daar raakt het hele menu van in de war. Er staat nog veel meer code in dat programma uiteraard, maar ik weet niet echt wat van belang is en alles posten dan zijn we ook 4 A4-tjes verder. De rest van de code is voornamelijk declaraties.
Ik heb al wel wat ervaring met VB, maar dit gaat net ff iets te ver. Zou iemand me hiermee kunnen helpen uitzoeken wara het probleem ligt? PLease
Alles werkt perfect, totdat ik het popup menutje wil gaan uitbreiden. Standaard bestond het popup menu uit 3 items. Ik heb 2 items toegevoeg wat het totaal op 5 brengt (echt waar). Het probleem is nu dat wanneer je de laatste (5de) optie van het popup menu aanklikt het, het script uitgevoerd wordt wat bij de eerste optie van het menu hoort. Optie 5 verschijnt dus wel in het menu, maar wanneer je er op klikt wordt het script van optie 1 uitgevoerd.
Met geen mogelijkheid krijg ik het programma goed werkend met 5 menu opties. Ik heb de schrijver van dit programma al gemaild en kreeg als antwoord dat ik iets moest veranderen in het commande "WM_Command". Ik heb alle waarden die samenhangen met die commando al gewijzigd maar niks helpt.
De menuitems staan gedefinieerd in het form zelf en ziet er ongeveer als volgt uit:
code:
1
2
3
4
5
6
| AppendMenu hPopup, MF_STRING, WM_MENUBASE, "&Show Form1" AppendMenu hPopup, MF_STRING, WM_MENUBASE + 1, "&Show Form2" AppendMenu hPopup, MF_STRING, WM_MENUBASE + 2, "&Show Form3" AppendMenu hPopup, MF_STRING, WM_MENUBASE + 3, "&About" AppendMenu hPopup, MF_SEPARATOR, WM_MENUBASE, "" AppendMenu hPopup, MF_STRING, WM_MENUBASE + 4, "&Exit" |
verder staat er nog een stukje code wat iets met het commando WM_Command te maken heeft:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Public Function SubWndProc(ByVal hwnd As Long, ByVal MSG As Long,
ByVal wParam As Long, ByVal lParam As Long) As Long
On Error Resume Next
Select Case MSG
Case WM_COMMAND And HiWord(wParam) = 0
If (wParam And WM_MENUBASE) = WM_MENUBASE Then
RtlMoveMemory st, ObjPointer, 4
st.Clicked (wParam And 3)
RtlMoveMemory st, 0&, 4
End If
Case TRAY_CALLBACK
RtlMoveMemory st, ObjPointer, 4
st.SendEvent lParam, wParam
RtlMoveMemory st, 0&, 4
End Select
SubWndProc = CallWindowProc(PrevWndProc, hwnd, MSG, wParam,
lParam)
End Function |
De code die wordt uitgevoerd als je een popup item klikt staat in cases. Als ik bijvoorbeeld op show form 2 zou kilkken dan voert deze case 1 uit omdat in de code regel +1 staat. Deze waarde +1 wordt doorgegeven aan de functie welke de cases bevat. Veel van de code komt van de VB 5 CD af. De maker van het prog zegt er dit over: "This is the VB5 Systray control ported to a Class Module". Veel source code staat dus gewoon op de VB 5 CD
De waarden 4 en 3 heb ik al geprobeerd te veranderen, maar dat werkt dus niet. Erger nog, daar raakt het hele menu van in de war. Er staat nog veel meer code in dat programma uiteraard, maar ik weet niet echt wat van belang is en alles posten dan zijn we ook 4 A4-tjes verder. De rest van de code is voornamelijk declaraties.
Ik heb al wel wat ervaring met VB, maar dit gaat net ff iets te ver. Zou iemand me hiermee kunnen helpen uitzoeken wara het probleem ligt? PLease
[ Voor 52% gewijzigd door MickMack op 20-02-2003 21:13 . Reden: Oeps was spam ]
