zoukankan      html  css  js  c++  java
  • Windows下的窗口程序

    再进一步、

    .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    ;WinMain 函数原型定义
    
    .DATA
    ClassName    db    "SimpleWinClass",0
    AppName        db    "My First Window",0
    
    .DATA?                            ;没有初始化的数据
    hInstance    HINSTANCE    ?
    CommandLine    LPSTR        ?            ;字符串指针变量
    
    .CODE
    start:
    ;-----------------------------------------------------------------------------------------------------------
    ;得到应用程序的句柄
    invoke    GetModuleHandle,NULL
    mov        hInstance,eax
    
    ;-----------------------------------------------------------------------------------------------------------
    ;得到命令行参数
    invoke    GetCommandLine
    mov        CommandLine,eax
    
    ;调用WinMain函数
    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+1                ;窗口的背景颜色
    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,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                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_DESTROY
        invoke  PostQuitMessage,NULL
    .ELSE
        invoke  DefWindowProc,hWnd,uMsg,wParam,lParam
        ret
    .endif
    xor eax,eax
    ret        
    WndProc endp
    
        
    end start    
  • 相关阅读:
    《垃圾回收的算法与实现》——增量式垃圾回收与RC Immix算法
    《垃圾回收的算法与实现》——分代垃圾回收
    《垃圾回收的算法与实现》——保守式GC
    《垃圾回收的算法与实现》——GC标记-压缩算法
    《垃圾回收的算法与实现》——GC复制算法
    《垃圾回收的算法与实现》——引用计数法
    《垃圾回收的算法与实现》——GC标记-清除算法
    《Mysql技术内幕,Innodb存储引擎》——事物
    《Mysql技术内幕,Innodb存储引擎》——锁
    《Mysql技术内幕,Innodb存储引擎》——索引与算法
  • 原文地址:https://www.cnblogs.com/icqw/p/4889995.html
Copyright © 2011-2022 走看看