当前位置: 首页 > news >正文

远涛网站建设江阴规划建设局网站

远涛网站建设,江阴规划建设局网站,如何开一家软件外包公司,公司如何做网站;运行效果 ;RadASM环境,win32汇编入门教程之四 ;在教程三里面,我们学了如何增加控件,学了增加1个按钮,但是它只能显示出来,却没有功能。现在我们给它加点儿功能。 ;在这个教程里,学一下给按钮增加点击后改变…

;运行效果

;RadASM环境,win32汇编入门教程之四
;在教程三里面,我们学了如何增加控件,学了增加1个按钮,但是它只能显示出来,却没有功能。现在我们给它加点儿功能。
;在这个教程里,学一下给按钮增加点击后改变按钮上的文字,和让按钮无效
;下面的代码就是示例,我们可以把它和教程三的代码比较一下,看看有什么变化,然后研究一下变化的内容是什么意思。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386 
.model flat,stdcall 
option casemap:none 
include      windows.inc 
include      user32.inc 
includelib   user32.lib           
include      kernel32.inc 
includelib   kernel32.lib 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD       
                                                
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.DATA                                   
ClassName           db "SimpleWinClass",0        
AppName             db "窗口程序的模版",0
szButtonClassName   db "button",0              ;按钮类名
szButtonTitle       db "我是被测试的按钮",0    
     
szButtonTitle01     db "我是改变后的文字",0    ;新增的内容
szButtonTitle02     db "按钮2",0               ;新增的内容
szButtonTitle03     db "按钮3",0               ;新增的内容
.DATA?                                  
hInstance   HINSTANCE  ?                
CommandLine LPSTR      ?
hButton     HWND       ?                       ;按钮控件句柄变量
hButton01   HWND       ?                       ;新增的内容
hButton02   HWND       ?                       ;新增的内容
.const;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
ButtonID     equ 10                            ;按钮控件标识符
ButtonID01   equ 11
ButtonID02   equ 12                            ;新增的内容               
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.CODE                      

start:                      
invoke GetModuleHandle, NULL                                                    
mov hInstance,eax 
invoke GetCommandLine                                                                                       
mov CommandLine,eax 
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT        
invoke ExitProcess, eax                                          
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD 
        LOCAL wc:WNDCLASSEX                                          
        LOCAL msg:MSG 
        LOCAL hwnd:HWND 

        mov   wc.cbSize,SIZEOF WNDCLASSEX                            
        mov   wc.style, CS_HREDRAW or CS_VREDRAW                     
        mov   wc.lpfnWndProc, OFFSET WndProc                        
        mov   wc.cbClsExtra,NULL 
        mov   wc.cbWndExtra,NULL 
        push  hInstance 
        pop   wc.hInstance 
        mov   wc.hbrBackground,COLOR_WINDOW 
        mov   wc.lpszMenuName,NULL 
        mov   wc.lpszClassName,OFFSET ClassName 
        invoke LoadIcon,NULL,IDI_APPLICATION                          
        mov   wc.hIcon,eax 
        mov   wc.hIconSm,eax 
        invoke LoadCursor,NULL,IDC_ARROW                              
        mov   wc.hCursor,eax 
        invoke RegisterClassEx, addr wc                              
        invoke CreateWindowEx,NULL, ADDR ClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,100,100,400,300, NULL,NULL,hInst, NULL 
        mov   hwnd,eax 
        invoke ShowWindow, hwnd,CmdShow                              
         invoke UpdateWindow, hwnd                                    

        .while TRUE                                                   
                invoke GetMessage, ADDR msg,NULL,0,0 
                .break .if (!eax) 
                invoke TranslateMessage, ADDR msg 
                invoke DispatchMessage, ADDR msg 
        .endw 
        mov     eax,msg.wParam                                         
        ret 
WinMain endp 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM  
         .if uMsg == WM_CREATE                
                invoke CreateWindowEx,NULL,ADDR szButtonClassName,ADDR szButtonTitle, WS_TABSTOP OR  WS_VISIBLE OR WS_CHILD OR BS_DEFPUSHBUTTON  ,80,40,200,25,hWnd,ButtonID,NULL,NULL        ;创建按钮控件                        
                mov hButton,eax
                
                invoke CreateWindowEx,NULL,ADDR szButtonClassName,ADDR szButtonTitle02, WS_TABSTOP OR  WS_VISIBLE OR WS_CHILD OR BS_DEFPUSHBUTTON  ,80,100,200,25,hWnd,ButtonID01,NULL,NULL        ;创建按钮控件二                        
                mov hButton01,eax
                
                invoke CreateWindowEx,NULL,ADDR szButtonClassName,ADDR szButtonTitle03, WS_TABSTOP OR  WS_VISIBLE OR WS_CHILD OR BS_DEFPUSHBUTTON  ,80,140,200,25,hWnd,ButtonID02,NULL,NULL        ;创建按钮控件三                        
                mov hButton02,eax
        .elseif uMsg == WM_COMMAND       
                mov eax,wParam        
                .if  ax == ButtonID01
                        invoke SendMessage,hButton,WM_SETTEXT,0,addr szButtonTitle01      ;改变第1个按钮的文字 
                .elseif  ax == ButtonID02 
                        invoke  EnableWindow,hButton,FALSE                                ;使第1个按钮按钮无效       
                .endif      
        .elseif uMsg == WM_DESTROY                                           
                invoke PostQuitMessage,NULL                               
        .else 
                invoke DefWindowProc,hWnd,uMsg,wParam,lParam             
        ret 
    .endif 
    xor eax,eax 
    ret 
WndProc endp 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start      
;在与教程三比较后发现,这里多了以下这一段                                          
        .elseif uMsg == WM_COMMAND       
                mov eax,wParam        
                .if     ax == ButtonID01
                        invoke SendMessage,hButton,WM_SETTEXT,0,addr szButtonTitle01      ;改变第1个按钮的文字 
                .elseif  ax == ButtonID02 
                        invoke  EnableWindow,hButton,FALSE                                ;使第1个按钮按钮无效       
                .endif 
;这里的uMsg就是前面WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 里的第2个参数,就是传到这个窗口函数里来的消息
;消息有很多不同的种类,所以要分别处理。这个是WM_COMMAND消息,就是命令消息的意思。hWnd则是传进来的窗口句柄,这里指的是主窗口句柄。
;与它同时传进来的还有wParam和lParam,wParam的值是消息码,总共有4个字节,其中低位的2个字节是标识符,高位的2个字节是消息码,就是单击或双击的
;mov eax,wParam 是把wParam的值给eax,然后判断ax的值是哪个控件的标识符。ax是eax的低的2个字节。
;本来还要判断eax的高位2字节是什么内容,这里直接偷懒了,不管它是单击还是双击,只要是按钮标识符为ButtonID01的消息,直接发送消息给指定的按钮
;invoke SendMessage,hButton,WM_SETTEXT,0,addr szButtonTitle01这一句就是发送WM_SETTEXT消息给句柄为hButton,即第1个按钮,WM_SETTEXT是改变窗口内容的消息。addr szButtonTitle01是附带的新的内容。
;而lParam的值则是控件句柄,如果有多个不同的控件,比如既有按钮,又有编辑框,那这个就要用的上。
;这里偷了个懒,因为没有其它控件了,就不管lParam参数了。 
;invoke  EnableWindow,hButton,FALSE 这句是直接调用函数让某窗口无效,这里的窗口是第1个按钮。也可以像前面那样,通过发送消息让窗口无效。               

http://www.dtcms.com/a/421411.html

相关文章:

  • 长沙做网站开发多少钱中国经济网人事
  • 给个能看的网站公司图标大全
  • 更换dns能上国外网站吗做网站建设工资高吗
  • 美食网站开发的目的和意义重庆网站建设沛宣
  • 民治做网站哪家便宜珠海网站关键词推广
  • wordpress更新之后字体发生变化四川游戏seo整站优化
  • 建立诊断的步骤河南网站优化建设
  • 行业协会网站建设方案书用php做的博客网站有哪些
  • 海口网站建设方案有视频接口怎么做网站
  • 网站只做优化南通网站制作公司
  • 做网站对服务器什么要求高网站新备案不能访问
  • 织梦网站图片不显示怎么查看什么公司做的网站
  • 百度地图添加到网站推广渠道方式
  • 做彩票网站黑龙江省建设官方网站
  • 网站建设 工业 青岛各类网站排行
  • 深圳网站建设机构住房和城乡建设部网站造价
  • 建设房产网站上海公司注销
  • 网站改版建设情况的汇报怎么查询网站的点击量
  • 电商网站前端开发响应式网站 手机站
  • wordpress打开网站打不开网站模板素材怎么用
  • 赵朴初网站建设长安营销型网站建设
  • 移动端网站一般宽做多大备案网站名称与实际网站名称不一致
  • 扬州市江都区城乡建设局网站网址升级中
  • 跨境电商网站开发公司新媒体 网站建设 影视
  • 淮北专业三合一网站开发网站开发界面设计
  • 把网站提交给百度湖北网站建设哪里有
  • 天津网站建设系统建网站得钱吗
  • 广州网站建设o2o教做公众号的网站
  • 成都网站建设开发公wordpress图设置
  • 搭建网站复杂吗北京免费网站建设