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

网站建设市场趋势/seo在线优化工具 si

网站建设市场趋势,seo在线优化工具 si,四川建设教育网官网,dede网站禁止ip访问;运行效果 ;win32汇编环境,窗口程序中使编辑框控件子类化的示例一 ;窗口子类化,就是把某种控件,自已再打造一遍,加入自已的功能。比如弄个特殊形状的按钮,或只能输入特殊字符的编辑框 ;当然,一般来说,这都是…

;运行效果

;win32汇编环境,窗口程序中使编辑框控件子类化的示例一
;窗口子类化,就是把某种控件,自已再打造一遍,加入自已的功能。比如弄个特殊形状的按钮,或只能输入特殊字符的编辑框
;当然,一般来说,这都是很麻烦的事儿。其它的语言,像VC之类的,有子类的概念,其原理也是这些,但是又进行了更复杂的封装。所以,知其然更知其所以然,很重要。
;这里的例子,是把默认的编辑框,弄成只能输入十六进制的编辑框。
;复制下面代码进RadAsm可直接编译。重要部分加备注。
;下面为asm文件

.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       
EditWndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD                                          
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.DATA                                   
ClassName   db "SimpleWinClass",0        
AppName     db "窗口程序的模版",0
szSTClass   db "static",0                          ;静态控件类名
szSTCaption db "该编辑框只能输入十六进制数值:",0

EditClass   db "EDIT",0                            ;编辑框的类名
Message     db "你按下了回车键",0 

       

.DATA?                                  
hInstance   HINSTANCE  ?                
CommandLine LPSTR      ? 

hwndEdit    dd ? 
OldWndProc  dd ?                 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.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,270,150, 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 szSTClass,ADDR szSTCaption, WS_CHILD + WS_VISIBLE,20, 20, 250, 20,hWnd,NULL,NULL,NULL                                                                          ;创建静态控件,用来显示文本

                invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR EditClass,NULL,WS_CHILD+WS_VISIBLE+WS_BORDER,20,50,210,25,hWnd,NULL,hInstance,NULL ;创建编辑框
                mov hwndEdit,eax     ;保存编辑框的句柄
                invoke SetFocus,eax  ;让编辑框得到焦点,就是程序启动后光标在编辑框里

                invoke SetWindowLong,hwndEdit,GWL_WNDPROC,addr EditWndProc     ;把原来的窗口函数地址替换为自定义窗口函数的地址
                mov OldWndProc,eax                                             ;返回值则是原来的窗口函数地址

        .elseif uMsg == WM_DESTROY                                           
                invoke PostQuitMessage,NULL                               
        .else 
                invoke DefWindowProc,hWnd,uMsg,wParam,lParam             
        ret 
    .endif 
    xor eax,eax 
    ret 
WndProc endp 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EditWndProc PROC hEdit:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD   ;这个窗口函数是插入主窗口消息循环的函数,只截取了2个消息,即下面的 WM_CHAR 和 WM_KEYDOWN,其它的消息不管,仍交回原主窗口 WndProc 函数处理
    .if uMsg == WM_CHAR        ;截取了WM_CHAR消息,相当于在这个编辑框里按任何字符,都在这里面处理。而里面除了处理这十六个字符和删除键backspace键外,没有对其它字符的处理,所以会导致按其它的字符没有反应
        mov eax,wParam 
        .if (al>="0" && al<="9") || (al>="A" && al<="F") || (al>="a" && al<="f") || al==VK_BACK 
            .if al>="a" && al<="f" 
                sub al,20h                                            ;加上20h是让小写的变成大写的
            .endif 
            invoke CallWindowProc,OldWndProc,hEdit,uMsg,eax,lParam    ;如果在CHAR消息发生时,不是在这些范围内的字符,则返回这个地址 OldWndProc 函数继续执行,就是返回原来的主窗口WndProc函数执行其它消息
            ret 
        .endif 
    .elseif uMsg==WM_KEYDOWN   ;截取了WM_KEYDOWN消息
        mov eax,wParam 
        .if al == VK_RETURN    ;如果按了回车键,则显示输入的是什么内容
            invoke MessageBox,hEdit,addr Message,addr AppName,MB_OK+MB_ICONINFORMATION 
            invoke SetFocus,hEdit 
        .else 
            invoke CallWindowProc,OldWndProc,hEdit,uMsg,wParam,lParam ;如果在按键消息发生时,不是按的回车键,则返回这个地址 OldWndProc 函数继续执行
            ret 
        .endif 
    .else 
        invoke CallWindowProc,OldWndProc,hEdit,uMsg,wParam,lParam     ;如果不是上面的 WM_CHAR 和 WM_KEYDOWN 消息,则返回这个地址 OldWndProc 函数继续执行
        ret 
    .endif 
    xor eax,eax 
    ret 
EditWndProc endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start                                                      
 

http://www.jmfq.cn/news/5314627.html

相关文章:

  • 贵阳网站建设hsyunso/百度官网电话
  • 建设银行网站点击次数/百度指数名词解释
  • 中山网站建设文化服务/螺蛳粉营销策划方案
  • 成武县住房和城乡建设局网站/武汉网站seo公司
  • 河北住房城乡建设厅官方网站/体验营销是什么
  • 云南餐饮网站建设/域名权重查询工具
  • 苏州建设局网站实名制/神马搜索推广
  • 桃城网站建设/58同城推广
  • 工程建设的信息网站/深圳网站建设微信开发
  • 网站建设方案实施/关键词排名优化易下拉技巧
  • 网站建设宣传图ps/石家庄网站seo外包
  • 政府网站建设相关评论文章/网络广告策划书
  • 深圳做手机网站建设/windows优化大师怎么下载
  • 建设网站需要体现的流程有哪些内容/品牌策划
  • 成都网页设计的网站建设/谷歌搜索引擎怎么才能用
  • 网站建设推广平台有哪些方面/郑州纯手工seo
  • 学网站建设培训机构/自己如何制作一个网站
  • 微网站怎么建设/怎么做竞价托管
  • 上海 网站建设 排名/网络销售推广是做什么的具体
  • 品牌网站建设报价表/佛山网站开发公司
  • 长沙柒零叁网站建设/铁力seo
  • 网站建设公司郑州/百度seo运营工作内容
  • 深圳市住房建设局网站/seo建设招商
  • 网站建设方案书 模版/军事新闻头条
  • 加强局门户网站建设/seo优化技术
  • 温州市住房和城乡建设网站/win优化大师有用吗
  • 铜仁市网站建设情况/百度站长工具怎么用
  • 新农村建设的网站/软文推广收费
  • 济阳网站建设哪家好/搜索引擎优化好做吗
  • 西安网站建设-中国互联/企业培训考试系统