9-29-2012
; This code is from the working 32-bit program and outputs the
; first screen just fine
#define LINKFILES
#INCLUDE windows.h
#define codejps
colorbk dd 00ff0000h ; blue
hBrush dd 0
hInstance dd 0
holdleft dd 0
holdright dd 0
holdbottom dd 0
holdtop dd 0
savemiddleofX dd 0
szDisplayName db 'wc',0
WinMain:
FRAME hInst,hPrevInst,CmdLine,CmdShow
LOCAL wc:WNDCLASSEXA,msg:MSG,hdc,rc:RECT,hWnd
mov D[wc.cbSize], SIZEOF WNDCLASSEXA
mov D[wc.style], CS_BYTEALIGNWINDOW
mov D[wc.lpfnWndProc], OFFSET WndProc
mov D[wc.cbClsExtra], NULL
mov D[wc.cbWndExtra], NULL
push [hInst]
pop [wc.hInstance]
invoke LoadIcon, NULL,IDI_APPLICATION
mov D[wc.hIcon], eax
invoke LoadCursor, NULL,IDC_ARROW
mov D[wc.hCursor], eax
invoke CreateSolidBrush, [colorbk] ; background color
mov D[hBrush], eax
mov D[wc.hbrBackground], eax
mov D[wc.lpszMenuName], NULL
mov D[wc.lpszClassName], OFFSET szDisplayName
mov D[wc.hIconSm], 0
invoke RegisterClassExA, addr wc
invoke SystemParametersInfoA, SPI_GETWORKAREA,0,addr rc,0
mov eax,[rc.left]
mov [holdleft], eax
mov eax,[rc.right]
mov [holdright],eax
mov eax,[rc.bottom]
mov [holdbottom],eax
mov eax,[rc.top]
mov [holdtop],eax
push edx ; this code sets up cxclient/cyclient
push ebx
xor edx,edx
mov eax,[holdright] ; find middle of line
mov ebx,2
div ebx
mov [savemiddleofX],eax ; middle of screen
pop ebx
pop edx
INVOKE CreateWindow, addr szDisplayName,addr AppName,\ WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MAXIMIZEBOX|WS_MINIMIZEBOX,\
[rc.left],[rc.top],[rc.right],[rc.bottom],NULL,NULL,[hInstance],NULL
mov [hWnd],eax
invoke ShowWindow, [hWnd],SW_SHOWNORMAL
invoke UpdateWindow, [hWnd]
----------------------------------------------
This code is in the 64-bit version and does
not output the 1st screen
Got a clean compile, link and Gobug shows no errors
The messagebox at the end executes and when I click on OK
the program closes
#define LINKFILES
#define codejps
#define WIN64
#INCLUDE windows.h
colorbk dq 00ff0000h ; blue
hBrush dq 0
hInstance dq 0
holdleft dq 0
holdright dq 0
holdbottom dq 0
holdtop dq 0
savemiddleofX dq 0
szDisplayName db 'wc',0
WinMain:
FRAME hInst,hPrevInst,CmdLine,CmdShow
LOCAL wc:WNDCLASSEXA,msg:MSG,hdc,rc:RECT,hWnd
mov D[wc.cbSize], SIZEOF WNDCLASSEXA
mov D[wc.style], CS_BYTEALIGNWINDOW
mov D[wc.lpfnWndProc], OFFSET WndProc
mov D[wc.cbClsExtra], NULL
mov D[wc.cbWndExtra], NULL
push [hInst]
pop [wc.hInstance]
invoke LoadIcon, NULL,IDI_APPLICATION
mov D[wc.hIcon], eax
invoke LoadCursor, NULL,IDC_ARROW
mov D[wc.hCursor], eax
invoke CreateSolidBrush, [colorbk] ; background color
mov D[hBrush], eax
mov D[wc.hbrBackground], eax
mov D[wc.lpszMenuName], NULL
mov D[wc.lpszClassName], OFFSET szDisplayName
mov D[wc.hIconSm], 0
invoke RegisterClassExA, addr wc
invoke SystemParametersInfoA, SPI_GETWORKAREA,0,addr rc,0
mov rax,[rc.left]
mov [holdleft], rax
mov rax,[rc.right]
mov [holdright],rax
mov rax,[rc.bottom]
mov [holdbottom],rax
mov rax,[rc.top]
mov [holdtop],rax
push rdx ; this code sets up cxclient/cyclient
push rbx
xor rdx,rdx
mov rax,[holdright] ; find middle of line
mov rbx,2
div rbx
mov [savemiddleofX],rax ; middle of screen
pop rbx
pop rdx
INVOKE CreateWindow, addr szDisplayName,addr AppName,\ WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MAXIMIZEBOX|WS_MINIMIZEBOX,\
[rc.left],[rc.top],[rc.right],[rc.bottom],NULL,NULL,[hInstance],NULL
mov [hWnd],rax
invoke ShowWindow, [hWnd],SW_SHOWNORMAL
invoke UpdateWindow, [hWnd]
; temp code begin
;tmsg2 db 'got to winmain',0
invoke MessageBox, [hWnd], addr tmsg1, addr tmsg1, MB_OK ;true
; temp code end