友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
热门书库 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

windows环境下32位汇编语言程序设计-第53章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!