Windows下的窗口程序
再进一步、
.
.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",
AppName db "My First Window", .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+ ;窗口的背景颜色
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,,
.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
Windows下的窗口程序的更多相关文章
- Windows下,通过程序设置全屏抗锯齿(多重采样)的方法
这里说的全屏抗锯齿,不是基于着色器的FXAA之类的方式,而是兼容性更好的,基于固定管线的多重采样方式. 先来说一下开发环境,我用的是VC2013+GLEW1.11. 要通过程序设置多重采样,首先需要进 ...
- 使用Code::blocks在windows下写网络程序
使用Code::blocks在windows下写网络程序 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创 ...
- [MapReduce_add_1] Windows 下开发 MapReduce 程序部署到集群
0. 说明 Windows 下开发 MapReduce 程序部署到集群 1. 前提 在本地开发的时候保证 resource 中包含以下配置文件,从集群的配置文件中拷贝 在 resource 中新建 ...
- gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)
cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...
- # 如何在Windows下运行Linux程序
如何在Windows下运行Linux程序 一.搭建 Linux 环境 1.1 安装 VMware Workstation https://www.aliyundrive.com/s/TvuMyFdTs ...
- 一个简单的Windows下的socket程序
服务器端代码server.cpp: #include <stdio.h> #include <WinSock2.h> #pragma comment(lib,"ws2 ...
- Windows下实现应用程序看门狗软件
有时候,我们需要确保一个应用程序长期稳定地运行,但是在Windows平台上由于种种原因,几乎不可能保障一个应用的绝对可靠运行.那么,我们就需要有一个机制,在应用死机﹑异常﹑系统重启等情况下自我恢复,而 ...
- Golang在windows下交叉编译linux程序
1.下载相关程序. Golang下载:http://www.golangtc.com/download Git下载:http://git-scm.com/download/ TDM-GCC下载:htt ...
- windows下flink示例程序的执行
1.什么是flink Apache Flink® - Stateful Computations over Data Streams 2.启动 下载地址 我下载了1.7.2 版本 解压到本地文件目 ...
随机推荐
- SQL Server 2008 修改表名
有一张表 修改起 if exists (select * from sys.objects where object_id = object_id(N'Table_1') and type in ...
- 远程调试weinre的使用
一.用途 *鉴于在浏览器调试移动端页面无法准确反映移动端实际情况并无法高效调试,故常常使用远程调试工具通过电脑连接手机进行调试,常用远程调试方式: 1.chrome连接安卓机远程调试 2.Mac连接苹 ...
- 新浪微博iOS示例,登录,获取个人信息
1.导入第三方库和系统框架
- java菜鸟篇<四> ZTree入门篇
今天准备入手ZTree,于是在百度上搜了搜,找到了开源网址和一些大神们的教程,于是乎下午开始了组织树(ZTree)的练习 初步完整的作品是这个样子的: 1.咱们要去这个工具的开源网里找下载的东西: ( ...
- C++程序设计实践指导1.4正整数转换为字符串改写要求实现
改写要求1:改为适合处理超长整数 #include <cstdlib> #include <iostream> #include <string> using na ...
- C++输入和输出
本文转载:blog.csdn.net/zhanghaotian2011/article/details/8868577博客 输入和输出并不是C++语言中的正式组成成分。C和C++本身都没有为输入和输出 ...
- 自动化高效css开发,畅谈less的灵活变化
css是一种让html与样式分离解析而出现的代码,它的出现大大提高了程序员的工作效率,和后期进行维护的效率.但是发展至今,由于起死板单调的写法,越来越不能满足程序员们灵活的思维,很多时候是种恨铁不成钢 ...
- Print! Print! Print!
print语句可以实现打印--只是对程序员友好的标准输出流的接口而已. 从技术角度来讲,这是把一个或多个对象转换为其文本表达形式,然后发送给标准输出或另一个类似文件的流. 更详细地说,在Python中 ...
- Python2.7 转义和正则匹配中文
今天爬虫(新浪微博 个人信息页面)的时候遇到了转义和正则匹配中文出乱码的问题. 先给出要匹配的部分网页源代码如下: <span class=\"pt_title S_txt2\&quo ...
- 数据库sqlite的使用
#import <Foundation/Foundation.h> @class student; @interface DataBaseHandle : NSObject //设置单例 ...