亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tut3.html

?? win32匯編教程 希望各位多多支持
?? HTML
?? 第 1 頁 / 共 4 頁
字號(hào):
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win98; I) [Netscape]">
   <title>Iczelion's Win32 ASM tutorial 3: A Simple Window</title>
</head>
<body text="#C0C0C0" bgcolor="#000000" link="#00FFFF" vlink="#FF34D0" alink="#98FF98">

<center>
<h1>
<font face="Arial"><font color="#999900">Tutorial 3: A Simple Window</font></font></h1></center>
<font size=-1>In this tutorial, we will build a Windows program that displays
a fully functional window on the desktop.</font>
<br><font size=-1>Download the example file <a href="files/tut03.zip">here</a></font>
<h3>
<font color="#FF9800"><font size=+0>Theory:</font></font></h3>
<font size=-1>Windows programs rely heavily on API functions for their
GUI. This approach benefits both users and programmers. For users, they
don't have to learn how to navigate the GUI of each new programs, the GUI
of Windows programs are alike. For programmers, the GUI codes are already
there,tested, and ready for use. The downside for programmers is the increased
complexity involved. In order to create or manipulate any GUI objects such
as windows, menu or icons, programmers must follow a strict recipe. But
that can be overcome by modular programming or OOP paradigm.</font>
<br><font size=-1>I'll outline the steps required to create a window on
the desktop below:</font>
<ol>
<li>
<font size=-1>Get the instance handle of your program (required)</font></li>

<li>
<font size=-1>Get the command line (not required unless your program wants
to process a command line)</font></li>

<li>
<font size=-1>Register window class (required ,unless you use predefined
window types, eg. MessageBox or a dialog box)</font></li>

<li>
<font size=-1>Create the window (required)</font></li>

<li>
<font size=-1>Show the window on the desktop (required unless you don't
want to show the window immediately)</font></li>

<li>
<font size=-1>Refresh the client area of the window</font></li>

<li>
<font size=-1>Enter an infinite loop, checking for messages from Windows</font></li>

<li>
<font size=-1>If messages arrive, they are processed by a specialized function
that is responsible for the window</font></li>

<li>
<font size=-1>Quit program if the user closes the window</font></li>
</ol>
<font size=-1>As you can see, the structure of a Windows program is rather
complex compared to a DOS program. But the world of Windows is drastically
different from the world of DOS. Windows programs must be able to coexist
peacefully with each other. They must follow stricter rules. You, as a
programmer, must also be more strict with your programming style and habit.</font>
<h3>
<font color="#CC0000"><font size=+0>Content:</font></font></h3>
<font size=-1>Below is the source code of our simple window program. Before
jumping into the gory details of Win32 ASM programming, I'll point out
some fine points which will ease your programming.</font>
<ul>
<li>
<font size=-1>You should put all Windows constants, structures and function
prototypes in an include file and include it at the beginning of your .asm
file. It'll save you a lot of effort and typo. Currently, the most complete
include file for MASM is hutch's windows.inc which you can download from
his page or my page. You can also define your own constants &amp; structure
definitions but you should put them into a separate include file.</font></li>

<li>
<font size=-1>Use<font color="#FFFF68"> includelib</font> directive to
specify the import library used in your program. For example, if your program
calls MessageBox, you should put the line:</font></li>

<ul><font color="#FF9800"><font size=-1>includelib user32.lib</font></font></ul>
<font size=-1>at the beginning of your .asm file. This directive tells
MASM that your program will make uses of functions in that import library.
If your program calls functions in more than one library, just add an includelib
for
each library you use. Using IncludeLib directive, you don't have to worry
about import libraries at link time. You can use /LIBPATH linker switch
to tell Link where all the libs are.</font>
<li>
<font size=-1>When declaring API function prototypes, structures, or constants
in your include file, try to stick to the original names used in Windows
include files, including case. This will save you a lot of headache when
looking up some item in Win32 API reference.</font></li>

<li>
<font size=-1>Use makefile to automate your assembling process. This will
save you a lot of typing.</font></li>
</ul>
<b><font size=-1>.386</font></b>
<br><b><font size=-1>.model flat,stdcall</font></b>
<br><b><font size=-1>option casemap:none</font></b>
<br><b><font size=-1>include \masm32\include\windows.inc</font></b>
<br><b><font size=-1>include \masm32\include\user32.inc</font></b>
<br><b><font size=-1>includelib \masm32\lib\user32.lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<font color="#009900">; calls to functions in user32.lib and kernel32.lib</font></font></b>
<br><b><font size=-1>include \masm32\include\kernel32.inc</font></b>
<br><b><font size=-1>includelib \masm32\lib\kernel32.lib</font></b>
<p><b><font size=-1>WinMain proto :DWORD,:DWORD,:DWORD,:DWORD</font></b>
<p><b><font size=-1>.DATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#009900">&nbsp;&nbsp;
; initialized data</font></font></b>
<br><b><font size=-1>ClassName db "SimpleWinClass",0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#009900">&nbsp;
; the name of our window class</font></font></b>
<br><b><font size=-1>AppName db "Our First Window",0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#009900">
; the name of our window</font></font></b>
<p><b><font size=-1>.DATA?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#009900">&nbsp;
; Uninitialized data</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">hInstance HINSTANCE ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font color="#009900">; Instance handle of our program</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>CommandLine LPSTR ?</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">.CODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">&nbsp;&nbsp;&nbsp;
; Here begins our code</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>start:</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">invoke GetModuleHandle, NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">&nbsp;&nbsp;
; get the instance handle of our program.</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font color="#009900">; Under Win32, hmodule==hinstance mov hInstance,eax</font></font></b>
<br><b><font color="#FFFFFF"><font size=-1>mov hInstance,eax</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">invoke GetCommandLine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">&nbsp;&nbsp;
; get the command line. You don't have to call this function IF</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font color="#009900">; your program doesn't process the command
line.</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>mov CommandLine,eax</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">invoke WinMain, hInstance,NULL,CommandLine,
SW_SHOWDEFAULT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">&nbsp;
; call the main function</font></font></b>
<br>
  <b><font size=-1><font color="#CCCCCC">invoke ExitProcess, eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">&nbsp;&nbsp;&nbsp; 
  ; quit our program. The exit code is returned in eax from WinMain.</font></font></b> 
<p><b><font color="#CCCCCC"><font size=-1>WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;&nbsp; LOCAL wc:WNDCLASSEX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">
; create local variables on stack</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; LOCAL msg:MSG</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; LOCAL hwnd:HWND</font></font></b>
<p><b><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.cbSize,SIZEOF WNDCLASSEX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">
; fill values in members of wc</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.style, CS_HREDRAW or CS_VREDRAW</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.lpfnWndProc, OFFSET WndProc</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.cbClsExtra,NULL</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.cbWndExtra,NULL</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; push&nbsp;
hInstance</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; pop&nbsp;&nbsp;
wc.hInstance</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.hbrBackground,COLOR_WINDOW+1</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.lpszMenuName,NULL</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.lpszClassName,OFFSET ClassName</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; invoke LoadIcon,NULL,IDI_APPLICATION</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.hIcon,eax</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.hIconSm,eax</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; invoke LoadCursor,NULL,IDC_ARROW</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;
wc.hCursor,eax</font></font></b>
<br><b><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;&nbsp; invoke RegisterClassEx,
addr wc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#009900">
; register our window class</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; invoke CreateWindowEx,NULL,\</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ADDR ClassName,\</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ADDR AppName,\</font></font></b>
<br><b><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品 欧美精品| 亚洲免费在线播放| 日韩欧美一级特黄在线播放| 337p日本欧洲亚洲大胆色噜噜| 精品入口麻豆88视频| 久久色中文字幕| 欧美日韩1区2区| 久久午夜电影网| 国产精品国产精品国产专区不蜜 | 国产精品久久夜| 天堂精品中文字幕在线| 麻豆精品新av中文字幕| 国产一区欧美日韩| 蜜臀99久久精品久久久久久软件| 国产激情视频一区二区在线观看| 99久久精品费精品国产一区二区| 在线这里只有精品| 欧美在线免费观看亚洲| 精品国产99国产精品| 国产精品美女久久久久aⅴ国产馆| 亚洲男同性恋视频| 国产乱色国产精品免费视频| 色哟哟精品一区| 91精品福利在线一区二区三区| 久久综合一区二区| 国产日韩欧美精品综合| 夜夜精品浪潮av一区二区三区| 裸体一区二区三区| 久久精品av麻豆的观看方式| 成人精品视频一区| 欧美精品777| 国产婷婷色一区二区三区 | 欧美日本视频在线| 久久精品夜色噜噜亚洲aⅴ| 亚洲老妇xxxxxx| 国产精品乡下勾搭老头1| 91福利在线免费观看| 精品理论电影在线| 中文字幕日韩一区| 国产专区欧美精品| 欧洲国产伦久久久久久久| 精品日韩欧美在线| 亚洲桃色在线一区| 激情成人综合网| 在线一区二区三区| 26uuu欧美| 日日噜噜夜夜狠狠视频欧美人 | 国产女同互慰高潮91漫画| 欧美精品一区二区蜜臀亚洲| 亚洲成人久久影院| 成人黄页毛片网站| 欧美一级二级在线观看| 午夜精品123| 97精品久久久久中文字幕| 久久精品在这里| 日本v片在线高清不卡在线观看| 在线观看日韩电影| 国产精品沙发午睡系列990531| 日韩不卡一区二区| 欧美在线免费观看视频| 一区二区三区免费| 成人高清视频免费观看| 亚洲精品国产精品乱码不99| 精品久久久久一区二区国产| 国产亚洲精品7777| 国产精品福利电影一区二区三区四区| 成人欧美一区二区三区黑人麻豆 | 日韩欧美在线影院| 日韩精品乱码免费| 欧美一区欧美二区| 国产一级精品在线| 久久久国产精品午夜一区ai换脸| 国产呦精品一区二区三区网站| 精品sm捆绑视频| 国产精品一区二区视频| 国产精品丝袜久久久久久app| av男人天堂一区| 亚洲精选视频在线| 欧美日韩黄色一区二区| 免费看日韩a级影片| 精品国产一区二区三区av性色| 国产精品一线二线三线| 精品日韩欧美一区二区| 国产精品99久久久久久宅男| 自拍偷拍欧美精品| 欧美日韩一区二区三区视频| 亚洲午夜在线视频| 日韩精品专区在线影院观看| 国产伦理精品不卡| 亚洲欧美日韩中文播放| 99热精品一区二区| 亚洲电影第三页| 91麻豆精品国产自产在线观看一区 | 亚洲午夜羞羞片| 91麻豆精品国产综合久久久久久| 国产一区二区主播在线| 国产精品久久久久久久久图文区 | 日韩欧美电影一二三| 国产精品99久久久久久似苏梦涵| 亚洲精品国产a| 日韩免费高清视频| av亚洲精华国产精华精| 美女精品一区二区| 亚洲婷婷国产精品电影人久久| 欧美日韩免费在线视频| 亚洲欧美日韩电影| 日韩欧美你懂的| av在线综合网| 裸体一区二区三区| 夜夜精品浪潮av一区二区三区| 日韩欧美一区电影| 一本大道久久a久久综合| 美日韩一区二区三区| 亚洲精选一二三| 久久日一线二线三线suv| 色偷偷久久人人79超碰人人澡| 亚洲精品国产一区二区精华液| 欧美精品一区二区三区四区 | 另类综合日韩欧美亚洲| 中文字幕一区二区三区不卡| 在线电影院国产精品| 97久久人人超碰| 国产传媒一区在线| 久久99在线观看| 性欧美大战久久久久久久久| 国产精品国产a级| 久久久国产精品不卡| 91麻豆精品国产91久久久资源速度| av在线免费不卡| 高清不卡在线观看av| 精品亚洲aⅴ乱码一区二区三区| 丝袜美腿亚洲综合| 一区二区成人在线视频| 国产精品高清亚洲| 国产精品少妇自拍| 国产欧美日韩一区二区三区在线观看| 日韩久久久精品| 欧美一区二区成人| 欧美一级夜夜爽| 欧美美女一区二区在线观看| 色婷婷av一区二区三区gif| www.亚洲在线| www.av精品| 不卡的电视剧免费网站有什么| 国产成人在线网站| 国产激情视频一区二区三区欧美| 石原莉奈一区二区三区在线观看| 亚洲一区二区视频在线观看| 中文字幕一区日韩精品欧美| 国产精品人成在线观看免费| 国产日韩欧美综合在线| 日本一区二区三区在线观看| 欧美激情一区二区三区不卡| 久久久久久久久久美女| 26uuu另类欧美| 久久精品免视看| 国产亚洲短视频| 国产精品妹子av| 中文字幕一区二区在线播放| 国产精品色哟哟网站| 国产精品欧美一级免费| 国产精品狼人久久影院观看方式| 国产精品日产欧美久久久久| 亚洲欧洲av一区二区三区久久| 成人欧美一区二区三区| 亚洲欧美日韩电影| 亚洲一区二区美女| 日韩av网站在线观看| 精品影视av免费| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕成人网| 国产精品国产自产拍高清av| 国产精品美女一区二区三区| 亚洲色图欧美在线| 亚洲一区二区五区| 免费人成黄页网站在线一区二区| 激情综合网天天干| 国产成人亚洲精品青草天美| 99精品1区2区| 欧美三级三级三级| 日韩视频国产视频| 久久久久久久网| 亚洲少妇屁股交4| 天天综合网天天综合色| 极品少妇xxxx精品少妇偷拍 | 喷白浆一区二区| 狠狠色综合播放一区二区| 成人午夜又粗又硬又大| 一本色道a无线码一区v| 欧美精品一二三| 久久久久久久网| 亚洲乱码国产乱码精品精98午夜| 婷婷六月综合亚洲| 国产精品一区二区免费不卡| www.欧美日韩国产在线| 在线播放/欧美激情| 久久九九久精品国产免费直播| 国产精品国产三级国产a| 亚洲a一区二区| 国产经典欧美精品|