Vraag : hoe te om dit te vereenvoudigen

Hello,

Shift: TShiftState;

TShiftState = reeks van (ssShift, ssAlt, ssCtrl,
ssLeft, ssRight, ssMiddle, ssDouble);

Ok, maar zijn niet compatibel met anderen talen zoals C++
So i moet het in mijn Param compatibel maken, like

TMyParam = ingepakte record
kbShift: DWORD;
end;

I am op deze wijze…

if ssShift in Verschuiving then
kbShift doen: = Geheel (ssShift);
if ssAlt in Verschuiving then
kbShift: = kbShift of Geheel (ssAlt);
if ssCtrl in Verschuiving then
kbShift: = kbShift of Geheel (ssCtrl);
//for elk type i behoefte om het te doen, maar misschien een lijn kan dit doen?


So ik de omgekeerde manier like

if ssCtrl in kbShift then


But kan roepen, denk ik er een betere manier is te doen dat… ik aan lijn maar geen success

kbShift probeerde: = -1;
for i: = Laag (TShiftState) aan Hoge do
if (TShiftState (I) in Verschuiving) then
kbShift: = kbShift of TShiftState (I); het werk


not! hehe

Some?

Regards,
Carlos

Antwoord : hoe te om dit te vereenvoudigen

NOTA:
De geluiden als u vergen de virtuele belangrijkste die codeconstante in uw variabele TShiftstate wordt vertegenwoordigd. Gebruikend geheel (ssShift), geheel (ssAlt), zal enz. niet werken aangezien het de rangschikkende waarde van het vastgestelde punt zal terugkeren. d.w.z. zal de Verschuiving 0 terugkeren, zal alt 1, enz. terugkeren. Ik ben vrij zeker dit niet is wat u wilt.

als u de virtuele belangrijkste waarde nodig hebt, gebruik iets in die aard:
var kc: geheel;

kc: = 0;
als ssShift in AShiftState toen kc: = kc OF VK_SHIFT;
als ssCtrl in AShiftState toen kc: = kc OF VK_CONTROL;
als ssALT in AShiftState toen kc: = kc OF VK_MENU;

als u het voor muisberichten moet gebruiken, gebruik iets in die aard:
als ssShift in AShiftState toen kc: = kc OF MK_SHIFT;
als ssCtrl in AShiftState toen kc: = kc OF MK_CONTROL;
//alt niet in muisbericht wordt gesteund, zou u iets als GetKeyState moeten gebruiken die om het te bepalen

Andere oplossingen  
 
programming4us programming4us