|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 5, 2004 07:09:45 · Поправил: Asterix q_q > Заблуждаешься. default не является обязательной опцией оператора switch. Я знаю. Ты считаешь правильно что после SendMessage(hwnd, WM_CLOSE, 0, 0);
break;
попадаем на return FALSE, вместо TRUE? .text:004010BE 8B 45 10 mov eax, [ebp+arg_8] .text:004010C1 25 FF FF 00 00 and eax, 0FFFFh .text:004010C6 89 45 F4 mov [ebp+var_C], eax .text:004010C9 81 7D F4 CA 00 00 00 cmp [ebp+var_C], 0CAh .text:004010D0 74 02 jz short loc_4010D4 .text:004010D2 EB 10 jmp short loc_4010E4 .text:004010D4 ; ---------------------------------------------------------------------- ----- .text:004010D4 .text:004010D4 loc_4010D4: ; CODE XREF: DialogFunc+A1j .text:004010D4 6A 00 push 0 ; lParam .text:004010D6 6A 00 push 0 ; wParam .text:004010D8 6A 10 push WM_CLOSE ; Msg .text:004010DA 8B 4D 08 mov ecx, [ebp+hWnd] .text:004010DD 51 push ecx ; hWnd .text:004010DE FF 15 18 20 40 00 call ds:SendMessageA .text:004010E4 .text:004010E4 loc_4010E4: ; CODE XREF: DialogFunc+2Bj .text:004010E4 ; DialogFunc+A3j .text:004010E4 C7 45 FC 00 00 00 00 mov [ebp+var_4], 0 .text:004010EB .text:004010EB loc_4010EB: ; CODE XREF: DialogFunc+7Fj .text:004010EB ; DialogFunc+8Dj .text:004010EB 8B 45 FC mov eax, [ebp+var_4] .text:004010EE 8B E5 mov esp, ebp .text:004010F0 5D pop ebp .text:004010F1 C2 10 00 retn 10h .text:004010F1 DialogFunc endp |
|
|
Дата: Окт 5, 2004 07:11:52 Quantum Получил!!! И уже ответил. Спасибо! Получил только что :-), ещё не смотрел. |
|
|
Дата: Окт 5, 2004 07:52:54 Asterix Теперь понял. Действительно ошибся. Надо добавлять default с FALSE и break перед вторым default'ом. |
|
|
Дата: Окт 6, 2004 01:48:01 q_q Т.е. вот так: case IDB_EXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
break;
default:
r = FALSE;
}
break;
default:
r = FALSE;
}
return r;
}
Не могу сказать что получилось очень понятно, да и код генерит странный.. .text:004010EA 6A 00 push 0 ; lParam .text:004010EC 6A 00 push 0 ; wParam .text:004010EE 6A 10 push WM_CLOSE ; Msg .text:004010F0 8B 4D 08 mov ecx, [ebp+hWnd] .text:004010F3 51 push ecx ; hWnd .text:004010F4 FF 15 18 20 40 00 call ds:SendMessageA .text:004010FA EB 07 jmp short loc_401103 .text:004010FC ; ---------------------------------------------------------------------- ----- .text:004010FC .text:004010FC loc_4010FC: ; CODE XREF: DialogFunc+B5j .text:004010FC C7 45 FC 00 00 00 00 mov [ebp+r], 0 .text:00401103 .text:00401103 loc_401103: ; CODE XREF: DialogFunc+B7j .text:00401103 ; DialogFunc+B9j ... .text:00401103 EB 07 jmp short loc_40110C .text:00401105 ; ---------------------------------------------------------------------- ----- .text:00401105 .text:00401105 loc_401105: ; CODE XREF: DialogFunc+2Bj .text:00401105 C7 45 FC 00 00 00 00 mov [ebp+r], 0 .text:0040110C .text:0040110C loc_40110C: ; CODE XREF: DialogFunc+7Fj .text:0040110C ; DialogFunc+8Dj ... .text:0040110C 8B 45 FC mov eax, [ebp+r] .text:0040110F 8B E5 mov esp, ebp .text:00401111 5D pop ebp .text:00401112 C2 10 00 retn 10h .text:00401112 DialogFunc endp |
|
|
Дата: Окт 6, 2004 05:46:50 Asterix Т.е. вот так Да. Не могу сказать что получилось очень понятно, да и код генерит странный.. Что конкретно не понятно и странно? Если не оптимально, то я предупреждал - если хочешь писать на Си, то прекращай мыслить как программист на ассемблере - утонешь в оптимизации. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081 |