按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_CreateClockPic proc
local @stTime:SYSTEMTIME
pushad
invoke BitBlt;hDcClock;0;0;CLOCK_SIZE;CLOCK_SIZE;
hDcBack;0;0;SRCCOPY
;********************************************************************
; 画时钟指针
;********************************************************************
invoke GetLocalTime;addr @stTime
invoke CreatePen;PS_SOLID;1;0
push eax
invoke SelectObject;hDcClock;eax
movzx eax;@stTime。wSecond
mov ecx;360/60
mul ecx ;秒针度数 = 秒 * 360/60
invoke _DrawLine;hDcClock;eax;60
pop eax
invoke DeleteObject;eax
;********************************************************************
invoke CreatePen;PS_SOLID;2;0
push eax
invoke SelectObject;hDcClock;eax
movzx eax;@stTime。wMinute
mov ecx;360/60
mul ecx ;分针度数 = 分 * 360/60
invoke _DrawLine;hDcClock;eax;55
pop eax
invoke DeleteObject;eax
;********************************************************************
invoke CreatePen;PS_SOLID;3;0
push eax
invoke SelectObject;hDcClock;eax
movzx eax;@stTime。wHour
。if eax 》= 12
sub eax;12
。endif
mov ecx;360/12
mul ecx
movzx ecx;@stTime。wMinute
shr ecx;1
add eax;ecx
invoke _DrawLine;hDcClock;eax;50
pop eax
invoke DeleteObject;eax
;********************************************************************
popad
ret
_CreateClockPic endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_CreateBackGround proc
local @hDc;@hDcCircle;@hDcMask
local @hBmpBack;@hBmpCircle;@hBmpMask
;********************************************************************
; 建立需要的临时对象
;********************************************************************
invoke GetDC;hWinMain
mov @hDc;eax
invoke CreatepatibleDC;@hDc
mov hDcBack;eax
invoke CreatepatibleDC;@hDc
mov hDcClock;eax
invoke CreatepatibleDC;@hDc
mov @hDcCircle;eax
invoke CreatepatibleDC;@hDc
mov @hDcMask;eax
invoke CreatepatibleBitmap;@hDc;CLOCK_SIZE;CLOCK_SIZE
mov hBmpBack;eax
invoke CreatepatibleBitmap;@hDc;CLOCK_SIZE;CLOCK_SIZE
mov hBmpClock;eax
invoke ReleaseDC;hWinMain;@hDc
invoke LoadBitmap;hInstance;dwNowBack
mov @hBmpBack;eax
invoke LoadBitmap;hInstance;dwNowCircle
mov @hBmpCircle;eax
mov eax;dwNowCircle
inc eax
invoke LoadBitmap;hInstance;eax
mov @hBmpMask;eax
invoke SelectObject;hDcBack;hBmpBack
invoke SelectObject;hDcClock;hBmpClock
invoke SelectObject;@hDcCircle;@hBmpCircle
invoke SelectObject;@hDcMask;@hBmpMask
;
;********************************************************************
; 以背景图片填充
;********************************************************************
invoke CreatePatternBrush;@hBmpBack
push eax
invoke SelectObject;hDcBack;eax
invoke PatBlt;hDcBack;0;0;CLOCK_SIZE;CLOCK_SIZE;PATCOPY
invoke DeleteObject;eax
;********************************************************************
; 画钟面
;********************************************************************
invoke BitBlt;hDcBack;0;0;CLOCK_SIZE;CLOCK_SIZE;
@hDcMask;0;0;SRCAND
invoke BitBlt;hDcBack;0;0;CLOCK_SIZE;CLOCK_SIZE;
@hDcCircle;0;0;SRCPAINT
;
invoke DeleteDC;@hDcCircle
invoke DeleteDC;@hDcMask
invoke DeleteObject;@hBmpBack
invoke DeleteObject;@hBmpCircle
invoke DeleteObject;@hBmpMask
ret
_CreateBackGround endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_DeleteBackGround proc
来源:电子工业出版社 作者:罗云彬 上一页 回书目 下一页
上一页 回书目 下一页
第7章 图形操作
7。3 创建和使用位图(3)
invoke DeleteDC;hDcBack
invoke DeleteDC;hDcClock
invoke DeleteObject;hBmpBack
invoke DeleteObject;hBmpClock
ret
_DeleteBackGround endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_Init proc
local @hBmpBack;@hBmpCircle
;********************************************************************
; 初始化菜单
;********************************************************************
invoke CreatePopupMenu
mov hMenu;eax
invoke AppendMenu;hMenu;0;IDM_BACK1;offset szMenuBack1
invoke AppendMenu;hMenu;0;IDM_BACK2;offset szMenuBack2
invoke AppendMenu;hMenu;MF_SEPARATOR;0;NULL
invoke AppendMenu;hMenu;0;IDM_CIRCLE1;offset szMenuCircle1
invoke AppendMenu;hMenu;0;IDM_CIRCLE2;offset szMenuCircle2
invoke AppendMenu;hMenu;MF_SEPARATOR;0;NULL
invoke AppendMenu;hMenu;0;IDM_EXIT;offset szMenuExit
invoke CheckMenuRadioItem;hMenu;IDM_BACK1;IDM_BACK2;
IDM_BACK1;NULL
invoke CheckMenuRadioItem;hMenu;IDM_CIRCLE1;IDM_CIRCLE2;
IDM_CIRCLE1;NULL
;********************************************************************
; 设置圆形窗口并设置“总在最前面”
;********************************************************************
invoke CreateEllipticRgn;0;0;CLOCK_SIZE+1;CLOCK_SIZE+1
push eax
invoke SetWindowRgn;hWi