📄 wmtouch.txt
字号:
000110 80ae STRH r6,[r5,#4]
|L1.274|
;;;209 }
;;;210 Msg.Data.p = (void*)&State;
;;;211 WM__SendTouchMessage(CHWin.hWin, &Msg);
000112 f9bd002c LDRSH r0,[sp,#0x2c]
000116 f8cd8038 STR r8,[sp,#0x38]
00011a a90c ADD r1,sp,#0x30
00011c f7fffffe BL WM__SendTouchMessage
|L1.288|
;;;212 }
;;;213 }
;;;214 /*
;;;215 * Send WM_MOUSEOVER message
;;;216 */
;;;217 #if GUI_SUPPORT_MOUSE
;;;218 else {
;;;219 /* Send WM_MOUSEOVER Message */
;;;220 if (CHWin.hWin) {
;;;221 /* Do not send messages to disabled windows */
;;;222 if (WM__IsEnabled(CHWin.hWin)) {
;;;223 State = StateNew;
;;;224 Msg.MsgId = WM_MOUSEOVER;
;;;225 Msg.Data.p = (void*)&State;
;;;226 WM__SendTouchMessage(CHWin.hWin, &Msg);
;;;227 }
;;;228 }
;;;229 }
;;;230 #endif
;;;231 }
;;;232 /* Store the new state */
;;;233 WM_PID__StateLast = StateNew;
000120 4648 MOV r0,r9
000122 c80e LDM r0!,{r1-r3}
000124 c40e STM r4!,{r1-r3}
|L1.294|
;;;234 }
;;;235 WM__RemoveCriticalHandle(&CHWin);
000126 a80a ADD r0,sp,#0x28
000128 f7fffffe BL WM__RemoveCriticalHandle
;;;236 WM_UNLOCK();
;;;237 return r;
00012c 4638 MOV r0,r7
;;;238 }
00012e b00f ADD sp,sp,#0x3c
000130 e8bd83f0 POP {r4-r9,pc}
;;;239
ENDP
|L1.308|
DCD WM_PID__StateLast
|L1.312|
DCD WM__hCapture
|L1.316|
DCD ||.data||+0x8
|L1.320|
DCD WM__CaptureReleaseAuto
AREA ||i.WM__IsInModalArea||, CODE, READONLY, ALIGN=2
WM__IsInModalArea PROC
;;;45 */
;;;46 int WM__IsInModalArea(WM_HWIN hWin) {
000000 b570 PUSH {r4-r6,lr}
;;;47 if ((WM__CHWinModal.hWin == 0) || WM__IsAncestor(hWin, WM__CHWinModal.hWin) || (hWin == WM__CHWinModal.hWin)) {
000002 4c09 LDR r4,|L2.40|
000004 4605 MOV r5,r0 ;46
000006 88a0 LDRH r0,[r4,#4] ; WM__CHWinModal
000008 b148 CBZ r0,|L2.30|
00000a f9b41004 LDRSH r1,[r4,#4] ; WM__CHWinModal
00000e 4628 MOV r0,r5
000010 f7fffffe BL WM__IsAncestor
000014 b918 CBNZ r0,|L2.30|
000016 f9b40004 LDRSH r0,[r4,#4] ; WM__CHWinModal
00001a 42a8 CMP r0,r5
00001c d101 BNE |L2.34|
|L2.30|
;;;48 return 1;
00001e 2001 MOVS r0,#1
;;;49 }
;;;50 return 0;
;;;51 }
000020 bd70 POP {r4-r6,pc}
|L2.34|
000022 2000 MOVS r0,#0 ;50
000024 bd70 POP {r4-r6,pc}
;;;52
ENDP
000026 0000 DCW 0x0000
|L2.40|
DCD ||.data||
AREA ||i.WM__SendPIDMessage||, CODE, READONLY, ALIGN=1
WM__SendPIDMessage PROC
;;;62 */
;;;63 void WM__SendPIDMessage(WM_HWIN hWin, WM_MESSAGE* pMsg) {
000000 b53e PUSH {r1-r5,lr}
000002 460c MOV r4,r1
;;;64 WM_MESSAGE Msg;
;;;65 /* Send message to the affected window */
;;;66 Msg = *pMsg; /* Save message as it may be modified in callback (as return value) */
000004 c90e LDM r1,{r1-r3}
000006 4605 MOV r5,r0 ;63
000008 4668 MOV r0,sp
00000a c00e STM r0!,{r1-r3}
;;;67 WM__SendMessageIfEnabled(hWin, &Msg);
00000c 4669 MOV r1,sp
00000e 4628 MOV r0,r5
000010 f7fffffe BL WM__SendMessageIfEnabled
;;;68 /* Send notification to all ancestors.
;;;69 We need to check if the window which has received the last message still exists,
;;;70 since it may have deleted itself and its parent as result of the message.
;;;71 */
;;;72 Msg.hWinSrc = hWin;
;;;73 Msg.MsgId = WM_TOUCH_CHILD;
000014 200d MOVS r0,#0xd
000016 f8ad5006 STRH r5,[sp,#6] ;72
;;;74 while (WM_IsWindow(hWin)) {
00001a 9000 STR r0,[sp,#0]
00001c e009 B |L3.50|
|L3.30|
;;;75 hWin = WM_GetParent(hWin);
00001e 4628 MOV r0,r5
000020 f7fffffe BL WM_GetParent
000024 0005 MOVS r5,r0
;;;76 if (hWin) {
000026 d004 BEQ |L3.50|
;;;77 Msg.Data.p = pMsg; /* Needs to be set for each window, as callback is allowed to modify it */
;;;78 WM__SendMessageIfEnabled(hWin, &Msg); /* Send message to the ancestors */
000028 4669 MOV r1,sp
00002a 4628 MOV r0,r5
00002c 9402 STR r4,[sp,#8]
00002e f7fffffe BL WM__SendMessageIfEnabled
|L3.50|
000032 4628 MOV r0,r5 ;74
000034 f7fffffe BL WM_IsWindow
000038 2800 CMP r0,#0 ;74
00003a d1f0 BNE |L3.30|
;;;79 }
;;;80 }
;;;81 }
00003c bd3e POP {r1-r5,pc}
;;;82
ENDP
AREA ||i.WM__SendTouchMessage||, CODE, READONLY, ALIGN=1
WM__SendTouchMessage PROC
;;;86 */
;;;87 void WM__SendTouchMessage(WM_HWIN hWin, WM_MESSAGE* pMsg) {
000000 b570 PUSH {r4-r6,lr}
;;;88 GUI_PID_STATE* pState;
;;;89 pState = (GUI_PID_STATE*)pMsg->Data.p;
;;;90 if (pState) {
000002 688c LDR r4,[r1,#8]
000004 4606 MOV r6,r0 ;87
000006 460d MOV r5,r1 ;87
000008 b164 CBZ r4,|L4.36|
;;;91 WM_Obj* pWin;
;;;92 pWin = WM_H2P(hWin);
00000a 4630 MOV r0,r6
00000c f7fffffe BL GUI_ALLOC_h2p
;;;93 pState->x -= pWin->Rect.x0;
000010 f9b02000 LDRSH r2,[r0,#0]
000014 6821 LDR r1,[r4,#0]
000016 1a89 SUBS r1,r1,r2
;;;94 pState->y -= pWin->Rect.y0;
000018 6021 STR r1,[r4,#0]
00001a f9b00002 LDRSH r0,[r0,#2]
00001e 6861 LDR r1,[r4,#4]
000020 1a08 SUBS r0,r1,r0
000022 6060 STR r0,[r4,#4]
|L4.36|
;;;95 }
;;;96 WM__SendPIDMessage(hWin, pMsg);
000024 4629 MOV r1,r5
000026 4630 MOV r0,r6
000028 e8bd4070 POP {r4-r6,lr}
00002c f7ffbffe B.W WM__SendPIDMessage
;;;97 }
;;;98
ENDP
AREA ||.data||, DATA, ALIGN=2
WM__CHWinModal
% 8
WM__CHWinLast
% 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -