理论: Windows 程序中,在写图形用户界面时需要调用大量的标准 Windows Gui 函数。其实这对用户和程序员来说都有好处,对于用户,面对的是同一套标准的窗口,对这些窗口的操作都是一样的,所以使用不同的应用程序时无须重新学习操作。对程序员来说,这些 Gui 源代码都是经过了微软的严格测试,随时拿来就可以用的。当然至于具体地写程序对于程序员来说还是有难度的。为了创建基于窗口的应用程序,必须严格遵守规范。作到这一点并不难,只要用模块化或面向对象的编程 *** 即可。 下面我就列出在桌面显示一个窗口的几个步骤: 得到您应用程序的句柄(必需);
得到命令行参数(如果您想从命令行得到参数,可选);
注册窗口类(必需,除非您使用 Windows 预定义的窗口类,如 MessageBox 或 dialog box;
产生窗口(必需);
在桌面显示窗口(必需,除非您不想立即显示它);
刷新窗口客户区;
进入无限的获取窗口消息的循环;
如果有消息到达,由负责该窗口的窗口回调函数处理;
如果用户关闭窗口,进行退出处理。
相对于单用户的 DOS 下的编程来说,Windows 下的程序框架结构是相当复杂的。但是 Windows 和 DOS 在系统架构上是截然不同的。Windows 是一个多任务的操作系统,故系统中同时有多个应用程序彼此协同运行。这就要求 Windows 程序员必须严格遵守编程规范,并养成良好的编程风格。 内容: 下面是我们简单的窗口程序的源代码。在进入复杂的细节前,我将提纲挈领地指出几点要点: 您应当把程序中要用到的所有常量和结构体的声明放到一个头文件中,并且在源程序的开始处包含这个头文件。这么做将会节省您大量的时间,也免得一次又一次的敲键盘。目前,最完善的头文件是 hutch 写的,您可以到 hutch 或我的网站下载。您也可以定义您自己的常量和结构体,但更好把它们放到独立的头文件中
用 includelib 指令,包含您的程序要引用的库文件,譬如:若您的程序要调用 "MessageBox",您就应当在源文件中加入如下一行: includelib user32.lib 这条语句告诉 MA *** 您的程序将要用到一些引入库。如果您不止引用一个库,只要简单地加入 includelib 语句,不要担心链接器如何处理这么多的库,只要在链接时用链接开关 /LIBPATH 指明库所在的路径即可。
在其它地方运用头文件中定义函数原型,常数和结构体时,要严格保持和头文件中的定义一致,包括大小写。在查询函数定义时,这将节约您大量的时间;
在编译,链接时用makefile文件,免去重复敲键。
.386
.model flat,stdcall
option casemap:none
include \ma *** 32\include\windows.inc
include \ma *** 32\include\user32.inc
includelib \ma *** 32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \ma *** 32\include\kernel32.inc
includelib \ma *** 32\lib\kernel32.lib WinMain proto :DWORD,:DWORD,:DWORD,:DWORD .DATA ; initialized data
ClassName db "SimpleWinClass",0 ; the name of our window class
AppName db "Our First Window",0 ; the name of our window .DATA? ; Uninitialized data
hInstance HINSTANCE ? ; Instance handle of our program
CommandLine LPSTR ?
.CODE ; Here begins our code
start:
invoke GetModuleHandle, NULL ; get the instance handle of our program.
; Under Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; get the command line. You don't have to call this function IF
; your program doesn't process the command line.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; call the main function
invoke ExitProcess, eax ; quit our program. The exit code is returned in eax from WinMain. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX ; create local variables on stack
LOCAL msg:MSG
LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLASSEX ; fill values in members of wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
黑帽seo新手入门基本教程 从道理来看,操作黑帽seo技能做排名,与白帽seo是一样的。从细化的操纵来看,则有很大的差异。黑帽seo新手入门基本教程是概述的相关黑帽seo技能,不是细化的操纵点。 人各...
移动工具能够用于挪动涂层。开启PS,导进素材图片,选择点挑选专用工具,选中目标,按住Ctrl J复制图层,挑选左边的移动工具,拖拽涂层就可以挪动涂层。 知名品牌型号规格:想到GeekPro 2020...
安全心得体会范文(2020安全事故心得体会) 事故已然发生,伤者正在接受着痛苦的治疗,这次事故又一次给我们敲响了警钟,让我们从事故对当事人所造成严重深切感受到它的无情和残酷,他的人生因此而改变,他今...
中新网12月12日电 据中央气象台网站消息,12日起,一股强冷空气将自北向南影响中东部大部地区。中央气象台12月12日06时继续发布寒潮蓝色预警。预计,12月12日08时至12月15日08时,西北...
杀手3一些保险箱和大门密码你们都知道吗,已经购买了这款游戏的玩家都知道它的售价其实并不便宜,达到了30多美米,换算成人民币要180多块,所以手上紧张的朋友进退两难,不过有一个方法可以低价购买,你们想知...
buff”一词是如今常见的网络流行语,相信很多玩游戏的人一定不会陌生,到底这个“buff”是什么意思,“buff”的出处在哪里,一起来看看吧! “buff”是什么意思 该词是一个常见的游戏术语,比较官...