TITLE D:/vc6.0 project/WIN32MESSAGE/WIN32MESSAGE.cpp
.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
$SYMBOLS SEGMENT BYTE USE32 'DEBSYM'
$SYMBOLS ENDS
$TYPES SEGMENT BYTE USE32 'DEBTYP'
$TYPES ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
; COMDAT _WinMain@16
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT ?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT ?InitInstance@@YAHPAUHINSTANCE__@@H@Z
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT ?WndProc@@YGJPAUHWND__@@IIJ@Z
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT ?About@@YGJPAUHWND__@@IIJ@Z
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC ?hInst@@3PAUHINSTANCE__@@A ; hInst
PUBLIC ?szTitle@@3PADA ; szTitle
PUBLIC ?szWindowClass@@3PADA ; szWindowClass
_BSS SEGMENT
?hInst@@3PAUHINSTANCE__@@A DD 01H DUP (?) ; hInst
?szTitle@@3PADA DB 064H DUP (?) ; szTitle
?szWindowClass@@3PADA DB 064H DUP (?) ; szWindowClass
_BSS ENDS
PUBLIC ?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z ; MyRegisterClass
PUBLIC ?InitInstance@@YAHPAUHINSTANCE__@@H@Z ; InitInstance
PUBLIC _WinMain@16
EXTRN __imp__LoadAcceleratorsA@8:NEAR
EXTRN __imp__TranslateAcceleratorA@12:NEAR
EXTRN __imp__LoadStringA@16:NEAR
EXTRN __chkesp:NEAR
EXTRN __imp__GetMessageA@16:NEAR
EXTRN __imp__TranslateMessage@4:NEAR
EXTRN __imp__DispatchMessageA@4:NEAR
; COMDAT _WinMain@16
_TEXT SEGMENT
_hInstance$ = 8
_nCmdShow$ = 20
_msg$ = -28
_hAccelTable$ = -32
_WinMain@16 PROC NEAR ; COMDAT
; 24 : {
push ebp
mov ebp, esp
sub esp, 96 ; 00000060H
push ebx
push esi
push edi
lea edi, DWORD PTR [ebp-96]
mov ecx, 24 ; 00000018H
mov eax, -858993460 ; ccccccccH
rep stosd
; 25 : // TODO: Place code here.
; 26 : MSG msg;
; 27 : HACCEL hAccelTable;
; 28 :
; 29 : // Initialize global strings
; 30 : LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
mov esi, esp
push 100 ; 00000064H
push OFFSET FLAT:?szTitle@@3PADA ; szTitle
push 103 ; 00000067H
mov eax, DWORD PTR _hInstance$[ebp]
push eax
call DWORD PTR __imp__LoadStringA@16
cmp esi, esp
call __chkesp
; 31 : LoadString(hInstance, IDC_WIN32MESSAGE, szWindowClass, MAX_LOADSTRING);
mov esi, esp
push 100 ; 00000064H
push OFFSET FLAT:?szWindowClass@@3PADA ; szWindowClass
push 109 ; 0000006dH
mov ecx, DWORD PTR _hInstance$[ebp]
push ecx
call DWORD PTR __imp__LoadStringA@16
cmp esi, esp
call __chkesp
; 32 : MyRegisterClass(hInstance);
mov edx, DWORD PTR _hInstance$[ebp]
push edx
call ?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z ; MyRegisterClass
add esp, 4
; 33 :
; 34 : // Perform application initialization:
; 35 : if (!InitInstance (hInstance, nCmdShow))
mov eax, DWORD PTR _nCmdShow$[ebp]
push eax
mov ecx, DWORD PTR _hInstance$[ebp]
push ecx
call ?InitInstance@@YAHPAUHINSTANCE__@@H@Z ; InitInstance
add esp, 8
test eax, eax
jne SHORT $L17608
; 37 : return FALSE;
xor eax, eax
jmp SHORT $L17605
$L17608:
; 39 :
; 40 : hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WIN32MESSAGE);
mov esi, esp
push 109 ; 0000006dH
mov edx, DWORD PTR _hInstance$[ebp]
push edx
call DWORD PTR __imp__LoadAcceleratorsA@8
cmp esi, esp
call __chkesp
mov DWORD PTR _hAccelTable$[ebp], eax
$L17611:
; 41 :
; 42 : // Main message loop:
; 43 : while (GetMessage(&msg, NULL, 0, 0))
mov esi, esp
push 0
push 0
push 0
lea eax, DWORD PTR _msg$[ebp]
push eax
call DWORD PTR __imp__GetMessageA@16
cmp esi, esp
call __chkesp
test eax, eax
je SHORT $L17612
; 45 : if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
mov esi, esp
lea ecx, DWORD PTR _msg$[ebp]
push ecx
mov edx, DWORD PTR _hAccelTable$[ebp]
push edx
mov eax, DWORD PTR _msg$[ebp]
push eax
call DWORD PTR __imp__TranslateAcceleratorA@12
cmp esi, esp
call __chkesp
test eax, eax
jne SHORT $L17613
; 47 : TranslateMessage(&msg);
mov esi, esp
lea ecx, DWORD PTR _msg$[ebp]
push ecx
call DWORD PTR __imp__TranslateMessage@4
cmp esi, esp
call __chkesp
; 48 : DispatchMessage(&msg);
mov esi, esp
lea edx, DWORD PTR _msg$[ebp]
push edx
call DWORD PTR __imp__DispatchMessageA@4
cmp esi, esp
call __chkesp
$L17613:
; 50 : }
jmp SHORT $L17611
$L17612:
; 51 :
; 52 : return msg.wParam;
mov eax, DWORD PTR _msg$[ebp+8]
$L17605:
; 53 : }
pop edi
pop esi
pop ebx
add esp, 96 ; 00000060H
cmp ebp, esp
call __chkesp
mov esp, ebp
pop ebp
ret 16 ; 00000010H
_WinMain@16 ENDP
_TEXT ENDS
PUBLIC ?WndProc@@YGJPAUHWND__@@IIJ@Z ; WndProc
EXTRN __imp__LoadCursorA@8:NEAR
EXTRN __imp__LoadIconA@8:NEAR
EXTRN __imp__RegisterClassExA@4:NEAR
; COMDAT ?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z
_TEXT SEGMENT
_hInstance$ = 8
_wcex$ = -48
?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z PROC NEAR ; MyRegisterClass, COMDAT
; 71 : {
push ebp
mov ebp, esp
sub esp, 112 ; 00000070H
push ebx
push esi
push edi
lea edi, DWORD PTR [ebp-112]
mov ecx, 28 ; 0000001cH
mov eax, -858993460 ; ccccccccH
rep stosd
; 72 : WNDCLASSEX wcex;
; 73 :
; 74 : wcex.cbSize = sizeof(WNDCLASSEX);
mov DWORD PTR _wcex$[ebp], 48 ; 00000030H
; 75 :
; 76 : wcex.style = CS_HREDRAW | CS_VREDRAW;
mov DWORD PTR _wcex$[ebp+4], 3
; 77 : wcex.lpfnWndProc = (WNDPROC)WndProc;
mov DWORD PTR _wcex$[ebp+8], OFFSET FLAT:?WndProc@@YGJPAUHWND__@@IIJ@Z ; WndProc
; 78 : wcex.cbClsExtra = 0;
mov DWORD PTR _wcex$[ebp+12], 0
; 79 : wcex.cbWndExtra = 0;
mov DWORD PTR _wcex$[ebp+16], 0
; 80 : wcex.hInstance = hInstance;
mov eax, DWORD PTR _hInstance$[ebp]
mov DWORD PTR _wcex$[ebp+20], eax
; 81 : wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_WIN32MESSAGE);
mov esi, esp
push 107 ; 0000006bH
mov ecx, DWORD PTR _hInstance$[ebp]
push ecx
call DWORD PTR __imp__LoadIconA@8
cmp esi, esp
call __chkesp
mov DWORD PTR _wcex$[ebp+24], eax
; 82 : wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
mov esi, esp
push 32512 ; 00007f00H
push 0
call DWORD PTR __imp__LoadCursorA@8
cmp esi, esp
call __chkesp
mov DWORD PTR _wcex$[ebp+28], eax
; 83 : wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
mov DWORD PTR _wcex$[ebp+32], 6
; 84 : wcex.lpszMenuName = (LPCSTR)IDC_WIN32MESSAGE;
mov DWORD PTR _wcex$[ebp+36], 109 ; 0000006dH
; 85 : wcex.lpszClassName = szWindowClass;
mov DWORD PTR _wcex$[ebp+40], OFFSET FLAT:?szWindowClass@@3PADA ; szWindowClass
; 86 : wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
mov esi, esp
push 108 ; 0000006cH
mov edx, DWORD PTR _wcex$[ebp+20]
push edx
call DWORD PTR __imp__LoadIconA@8
cmp esi, esp
call __chkesp
mov DWORD PTR _wcex$[ebp+44], eax
; 87 :
; 88 : return RegisterClassEx(&wcex);
mov esi, esp
lea eax, DWORD PTR _wcex$[ebp]
push eax
call DWORD PTR __imp__RegisterClassExA@4
cmp esi, esp
call __chkesp
; 89 : }
pop edi
pop esi
pop ebx
add esp, 112 ; 00000070H
cmp ebp, esp
call __chkesp
mov esp, ebp
pop ebp
ret 0
?MyRegisterClass@@YAGPAUHINSTANCE__@@@Z ENDP ; MyRegisterClass
_TEXT ENDS
EXTRN __imp__UpdateWindow@4:NEAR
EXTRN __imp__CreateWindowExA@48:NEAR
EXTRN __imp__ShowWindow@8:NEAR
; COMDAT ?InitInstance@@YAHPAUHINSTANCE__@@H@Z
_TEXT SEGMENT
_hInstance$ = 8
_nCmdShow$ = 12
_hWnd$ = -4
?InitInstance@@YAHPAUHINSTANCE__@@H@Z PROC NEAR ; InitInstance, COMDAT
; 102 : {
push ebp
mov ebp, esp
sub esp, 68 ; 00000044H
push ebx
push esi
push edi
lea edi, DWORD PTR [ebp-68]
mov ecx, 17 ; 00000011H
mov eax, -858993460 ; ccccccccH
rep stosd
; 103 : HWND hWnd;
; 104 :
; 105 : hInst = hInstance; // Store instance handle in our global variable
mov eax, DWORD PTR _hInstance$[ebp]
mov DWORD PTR ?hInst@@3PAUHINSTANCE__@@A, eax ; hInst
; 106 :
; 107 : hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
; 108 : CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
mov esi, esp
push 0
mov ecx, DWORD PTR _hInstance$[ebp]
push ecx
push 0
push 0
push 0
push -2147483648 ; 80000000H
push 0
push -2147483648 ; 80000000H
push 13565952 ; 00cf0000H
push OFFSET FLAT:?szTitle@@3PADA ; szTitle
push OFFSET FLAT:?szWindowClass@@3PADA ; szWindowClass
push 0
call DWORD PTR __imp__CreateWindowExA@48
cmp esi, esp
call __chkesp
mov DWORD PTR _hWnd$[ebp], eax
; 109 :
; 110 : if (!hWnd)
cmp DWORD PTR _hWnd$[ebp], 0
jne SHORT $L17634
; 112 : return FALSE;
xor eax, eax
jmp SHORT $L17630
$L17634:
; 114 :
; 115 : ShowWindow(hWnd, nCmdShow);
mov esi, esp
mov edx, DWORD PTR _nCmdShow$[ebp]
push edx
mov eax, DWORD PTR _hWnd$[ebp]
push eax
call DWORD PTR __imp__ShowWindow@8
cmp esi, esp
call __chkesp
; 116 : UpdateWindow(hWnd);
mov esi, esp
mov ecx, DWORD PTR _hWnd$[ebp]
push ecx
call DWORD PTR __imp__UpdateWindow@4
cmp esi, esp
call __chkesp
; 117 :
; 118 : return TRUE;
mov eax, 1
$L17630:
; 119 : }
pop edi
pop esi
pop ebx
add esp, 68 ; 00000044H
cmp ebp, esp
call __chkesp
mov esp, ebp
pop ebp
ret 0
?InitInstance@@YAHPAUHINSTANCE__@@H@Z ENDP ; InitInstance
_TEXT ENDS
PUBLIC ?About@@YGJPAUHWND__@@IIJ@Z ; About
EXTRN __imp__DrawTextA@20:NEAR
EXTRN __imp__DefWindowProcA@16:NEAR
EXTRN __imp__BeginPaint@8:NEAR
EXTRN __imp__EndPaint@8:NEAR
EXTRN __imp__PostQuitMessage@4:NEAR
EXTRN _strlen:NEAR
EXTRN __imp__DestroyWindow@4:NEAR
EXTRN __imp__GetClientRect@8:NEAR
EXTRN __imp__DialogBoxParamA@20:NEAR
; COMDAT ?WndProc@@YGJPAUHWND__@@IIJ@Z
_TEXT SEGMENT
_hWnd$ = 8
_message$ = 12
_wParam$ = 16
_lParam$ = 20
_wmId$ = -4
_wmEvent$ = -8
_ps$ = -72
_hdc$ = -76
_szHello$ = -176
_rt$17664 = -192
?WndProc@@YGJPAUHWND__@@IIJ@Z PROC NEAR ; WndProc, COMDAT
; 132 : {
push ebp
mov ebp, esp
sub esp, 264 ; 00000108H
push ebx
push esi
push edi
lea edi, DWORD PTR [ebp-264]
mov ecx, 66 ; 00000042H
mov eax, -858993460 ; ccccccccH
rep stosd
; 133 : int wmId, wmEvent;
; 134 : PAINTSTRUCT ps;
; 135 : HDC hdc;
; 136 : TCHAR szHello[MAX_LOADSTRING];
; 137 : LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
mov esi, esp
push 100 ; 00000064H
lea eax, DWORD PTR _szHello$[ebp]
push eax
push 106 ; 0000006aH
mov ecx, DWORD PTR ?hInst@@3PAUHINSTANCE__@@A ; hInst
push ecx
call DWORD PTR __imp__LoadStringA@16
cmp esi, esp
call __chkesp
; 140 : {
mov edx, DWORD PTR _message$[ebp]
mov DWORD PTR -196+[ebp], edx
cmp DWORD PTR -196+[ebp], 2
je $L17665
cmp DWORD PTR -196+[ebp], 15 ; 0000000fH
je $L17663
cmp DWORD PTR -196+[ebp], 273 ; 00000111H
je SHORT $L17650
jmp $L17666
$L17650:
; 141 : case WM_COMMAND:
; 142 : wmId = LOWORD(wParam);
mov eax, DWORD PTR _wParam$[ebp]
and eax, 65535 ; 0000ffffH
mov DWORD PTR _wmId$[ebp], eax
; 143 : wmEvent = HIWORD(wParam);
mov ecx, DWORD PTR _wParam$[ebp]
shr ecx, 16 ; 00000010H
and ecx, 65535 ; 0000ffffH
and ecx, 65535 ; 0000ffffH
mov DWORD PTR _wmEvent$[ebp], ecx
; 146 : {
mov edx, DWORD PTR _wmId$[ebp]
mov DWORD PTR -200+[ebp], edx
cmp DWORD PTR -200+[ebp], 104 ; 00000068H
je SHORT $L17658
cmp DWORD PTR -200+[ebp], 105 ; 00000069H
je SHORT $L17661
jmp SHORT $L17662
$L17658:
; 147 : case IDM_ABOUT:
; 148 : DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
mov esi, esp
push 0
push OFFSET FLAT:?About@@YGJPAUHWND__@@IIJ@Z ; About
mov eax, DWORD PTR _hWnd$[ebp]
push eax
push 103 ; 00000067H
mov ecx, DWORD PTR ?hInst@@3PAUHINSTANCE__@@A ; hInst
push ecx
call DWORD PTR __imp__DialogBoxParamA@20
cmp esi, esp
call __chkesp
; 149 : break;
jmp SHORT $L17655
$L17661:
; 150 : case IDM_EXIT:
; 151 : DestroyWindow(hWnd);
mov esi, esp
mov edx, DWORD PTR _hWnd$[ebp]
push edx
call DWORD PTR __imp__DestroyWindow@4
cmp esi, esp
call __chkesp
; 152 : break;
jmp SHORT $L17655
$L17662:
; 153 : default:
; 154 : return DefWindowProc(hWnd, message, wParam, lParam);
mov esi, esp
mov eax, DWORD PTR _lParam$[ebp]
push eax
mov ecx, DWORD PTR _wParam$[ebp]
push ecx
mov edx, DWORD PTR _message$[ebp]
push edx
mov eax, DWORD PTR _hWnd$[ebp]
push eax
call DWORD PTR __imp__DefWindowProcA@16
cmp esi, esp
call __chkesp
jmp $L17640
$L17655:
; 156 : break;
jmp $L17647
$L17663:
; 157 : case WM_PAINT:
; 158 : hdc = BeginPaint(hWnd, &ps);
mov esi, esp
lea ecx, DWORD PTR _ps$[ebp]
push ecx
mov edx, DWORD PTR _hWnd$[ebp]
push edx
call DWORD PTR __imp__BeginPaint@8
cmp esi, esp
call __chkesp
mov DWORD PTR _hdc$[ebp], eax
; 159 : // TODO: Add any drawing code here...
; 160 : RECT rt;
; 161 : GetClientRect(hWnd, &rt);
mov esi, esp
lea eax, DWORD PTR _rt$17664[ebp]
push eax
mov ecx, DWORD PTR _hWnd$[ebp]
push ecx
call DWORD PTR __imp__GetClientRect@8
cmp esi, esp
call __chkesp
; 162 : DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
mov esi, esp
push 1
lea edx, DWORD PTR _rt$17664[ebp]
push edx
lea eax, DWORD PTR _szHello$[ebp]
push eax
call _strlen
add esp, 4
push eax
lea ecx, DWORD PTR _szHello$[ebp]
push ecx
mov edx, DWORD PTR _hdc$[ebp]
push edx
call DWORD PTR __imp__DrawTextA@20
cmp esi, esp
call __chkesp
; 163 : EndPaint(hWnd, &ps);
mov esi, esp
lea eax, DWORD PTR _ps$[ebp]
push eax
mov ecx, DWORD PTR _hWnd$[ebp]
push ecx
call DWORD PTR __imp__EndPaint@8
cmp esi, esp
call __chkesp
; 164 : break;
jmp SHORT $L17647
$L17665:
; 165 : case WM_DESTROY:
; 166 : PostQuitMessage(0);
mov esi, esp
push 0
call DWORD PTR __imp__PostQuitMessage@4
cmp esi, esp
call __chkesp
; 167 : break;
jmp SHORT $L17647
$L17666:
; 168 : default:
; 169 : return DefWindowProc(hWnd, message, wParam, lParam);
mov esi, esp
mov edx, DWORD PTR _lParam$[ebp]
push edx
mov eax, DWORD PTR _wParam$[ebp]
push eax
mov ecx, DWORD PTR _message$[ebp]
push ecx
mov edx, DWORD PTR _hWnd$[ebp]
push edx
call DWORD PTR __imp__DefWindowProcA@16
cmp esi, esp
call __chkesp
jmp SHORT $L17640
$L17647:
; 171 : return 0;
xor eax, eax
$L17640:
; 172 : }
pop edi
pop esi
pop ebx
add esp, 264 ; 00000108H
cmp ebp, esp
call __chkesp
mov esp, ebp
pop ebp
ret 16 ; 00000010H
?WndProc@@YGJPAUHWND__@@IIJ@Z ENDP ; WndProc
_TEXT ENDS
EXTRN __imp__EndDialog@8:NEAR
; COMDAT ?About@@YGJPAUHWND__@@IIJ@Z
_TEXT SEGMENT
_hDlg$ = 8
_message$ = 12
_wParam$ = 16
?About@@YGJPAUHWND__@@IIJ@Z PROC NEAR ; About, COMDAT
; 176 : {
push ebp
mov ebp, esp
sub esp, 68 ; 00000044H
push ebx
push esi
push edi
lea edi, DWORD PTR [ebp-68]
mov ecx, 17 ; 00000011H
mov eax, -858993460 ; ccccccccH
rep stosd
; 178 : {
mov eax, DWORD PTR _message$[ebp]
mov DWORD PTR -4+[ebp], eax
cmp DWORD PTR -4+[ebp], 272 ; 00000110H
je SHORT $L17677
cmp DWORD PTR -4+[ebp], 273 ; 00000111H
je SHORT $L17678
jmp SHORT $L17674
$L17677:
; 179 : case WM_INITDIALOG:
; 180 : return TRUE;
mov eax, 1
jmp SHORT $L17672
$L17678:
; 181 :
; 182 : case WM_COMMAND:
; 183 : if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
mov ecx, DWORD PTR _wParam$[ebp]
and ecx, 65535 ; 0000ffffH
cmp ecx, 1
je SHORT $L17682
mov edx, DWORD PTR _wParam$[ebp]
and edx, 65535 ; 0000ffffH
cmp edx, 2
jne SHORT $L17681
$L17682:
; 185 : EndDialog(hDlg, LOWORD(wParam));
mov eax, DWORD PTR _wParam$[ebp]
and eax, 65535 ; 0000ffffH
mov esi, esp
push eax
mov ecx, DWORD PTR _hDlg$[ebp]
push ecx
call DWORD PTR __imp__EndDialog@8
cmp esi, esp
call __chkesp
; 186 : return TRUE;
mov eax, 1
jmp SHORT $L17672
$L17681:
$L17674:
; 190 : return FALSE;
xor eax, eax
$L17672:
; 191 : }
pop edi
pop esi
pop ebx
add esp, 68 ; 00000044H
cmp ebp, esp
call __chkesp
mov esp, ebp
pop ebp
ret 16 ; 00000010H
?About@@YGJPAUHWND__@@IIJ@Z ENDP ; About
_TEXT ENDS
END