Additional features will be added to this section of code such as fixing window size proportial to monitors resolution and subclassing the single edit control of this program. You'll notice I don't call ShowWindow here as WS_VISIBLE in windows style is defined.
Register class & Create Window
STYLE EQU WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX | WS_VISIBLE
EX_STYLE EQU WS_EX_STATICEDGE
Wc dd 48 ; cbSize
dd CS_HREDRAW | CS_VREDRAW
dd MainWndProc ; Main window procedure
dd 0, 0 ; cbClsExtra & cbWndExtra
hInst dd 0 ; Instance Handle
dd 0 ; hIcon
dd 0 ; hCursor
dd COLOR_APPWORKSPACE + 1
dd 0 ; Hmenu
dd AppName ; Applications name
dd 0 ; Small Icon
; ----------------------------------------------------------------------------------------------------------------------
AppTitle db 'Ordered List Lookup & Maintenance', 0
AppName db 'LOOK', 0
;-----------------------------------------------------------------------------------------------------------------------
Cw dd EX_STYLE ; dwExStyle
dd AppName ; lpClassName
dd AppTitle ; lpWindowName
dd STYLE ; dwStyle
dd CW_USEDEFAULT ; x
dd CW_USEDEFAULT ; y
dd CW_USEDEFAULT ; nWidth
dd CW_USEDEFAULT ; nHeight
dd 0 ; hWndParent
dd 0 ; hMenu
dd 0 ; hInstance
dd 0 ; lpParam
; ============================================================================================
*** SHOW MAIN WINDOW ***
; As the name implies the only responsiblity of this section of code is to register and
; display main window.
; LEAVE: CY = 1, If either registering class or creating window failed. Additional
; code could be added to further define which caused the error.
; _____________________________________________________________________________________________
ShowMainWnd push ebx
mov ebx, Wc ; Point to WNDCLASSEX structure in .data
push IDC_ARROW ; Establish main windows cursor
push byte 0
call _LoadCursorA@8
mov [ebx + 0x1c], eax ; hCursor
push byte 0
call _GetModuleHandleA@4
mov [hInst], eax
push eax
; Now that everything has been initialized the window class can be registered.
push ebx
call _RegisterClassExA@4
and eax, eax ; Set flags
jz .Exit ; EAX = 0 then registration failed.
; Create applications main window
mov ebx, Cw
pop eax
mov [ebx + 40], eax
call Create_Wnd
mov [MainWnd], eax ; Save hWnd
jnc .Exit + 1
.Exit stc
pop ebx
ret
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.