居中是最主要的,不弄就没有意思了。主要是看居中的算法。公布源码:
.386
.Model Flat, StdCall
Option Casemap :None
Include windows.inc
Include user32.inc
Include kernel32.inc
Include gdi32.inc
IncludeLib user32.lib
IncludeLib kernel32.lib
include macro.asm
.CODE
Main proc
local t:RECT,hInstance:DWORD,hCalc:DWORD,w:DWORD,h:DWORD
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke WinExec,CTXT("calc"),SW_MINIMIZE
invoke FindWindow,NULL,CTXT("计算器")
mov hCalc,eax
.if eax!=0
invoke GetWindowRect,hCalc,addr t
invoke GetSystemMetrics,SM_CXSCREEN
add eax,t.left
sub eax,t.right
shr eax,1
mov w,eax
invoke GetSystemMetrics,SM_CYSCREEN
add eax,t.top
sub eax,t.bottom
shr eax,1
mov h,eax
invoke SetWindowPos,hCalc,HWND_TOPMOST,w,h,0,0,SWP_NOSIZE
.endif
invoke ExitProcess,0
Main endp
END Main
居中是其一,还有设置窗口模态为总在最前端。 |