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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tut4.html

?? WINDOWS程序員使用指南--匯編基礎
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
<!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="Author" content="Iczelion">
   <meta name="GENERATOR" content="Mozilla/4.51 [en] (Win95; I) [Netscape]">
   <title>Iczelion's Win32 Assembly Tutorial 4: Painting with Text</title>
</head>
<body text="#FFFFFF" bgcolor="#000000" link="#FFFF00" vlink="#C0C0C0" alink="#C0FFC0">

<center>
<h1>
<font face="Arial,Helvetica"><font color="#999900">Tutorial 4: Painting
with Text</font></font></h1></center>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>In this
tutorial, we will learn how to "paint" text in the client area of a window.
We'll also learn about device context.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>You
can download the source code <a href="files/tut04.zip">here</a>.</font></font></font>
<h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=+0>Theory:</font></font></font></h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Text in
Windows is a type of GUI object.&nbsp; Each character is composed of numerous
pixels (dots) that are lumped together into a distinct pattern. That's
why it's called "painting" instead of "writing". Normally, you paint text
in your own client area (actually, you can paint outside client area but
that's another story).&nbsp; Putting text on screen in Windows is drastically
different from DOS. In DOS, you can think of the screen in 80x25 dimension.
But in Windows, the screen are shared by several programs. Some rules must
be enforced to avoid programs writing over each other's screen. Windows
ensures this by limiting painting area of each window to its own client
area only. The size of client area of a window is also not constant. The
user can change the size anytime. So you must determine the dimensions
of your own client area dynamically.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Before
you can paint something on the client area, you must ask for permission
from Windows. That's right, you don't have absolute control of the screen
as you were in DOS anymore.&nbsp; You must ask Windows for permission to
paint your own client area. Windows will determine the size of your client
area, font, colors and other GDI attributes and sends a handle to device
context back to your program. You can then use the device context as a
passport to painting on your client area.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>What
is a device context? It's just a data structure maintained internally by
Windows. A device context is associated with a particular device, such
as a printer or video display. For a video display, a device context is
usually associated with a particular window on the display.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Some
of the values in the device context are graphic attributes such as colors,
font etc. These are default values which you can change at will. They exist
to help reduce the load from having to specify these attributes in every
GDI function calls.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>You
can think of a device context as a default environment prepared for you
by Windows. You can override some default settings later if you so wish.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>When
a program need to paint, it must obtain a handle to a device context. Normally,
there are several ways to accomplish this.</font></font></font>
<ul><b><font face="Arial,Helvetica"><font color="#999900"><font size=-1>call
BeginPaint in response to WM_PAINT message.</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#999900"><font size=-1>call
GetDC in response to other messages.</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#999900"><font size=-1>call
CreateDC to create your own device context</font></font></font></b></ul>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>One thing
you must remember, after you're through with the device context handle,
you must release it during the processing of a single message. Don't obtain
the handle in response to one message and release it in response to another.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Windows
posts WM_PAINT messages to a window to notify that it's now time to repaint
its client area. Windows does not save the content of client area of a
window.&nbsp; Instead, when a situation occurs that warrants a repaint
of client area (such as when a window was covered by another and is just
uncovered), Windows puts WM_PAINT message in that window's message queue.
It's the responsibility of that window to repaint its own client area.
You must gather all information about how to repaint your client area in
the WM_PAINT section of your window procedure, so the window procudure
can repaint the client area when WM_PAINT message arrives.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Another
concept you must come to terms with is the invalid rectangle. Windows defines
an invalid rectangle as the smallest rectangular area in the client area
that needs to be repainted. When Windows detects an invalid rectangle in
the client area of a window , it posts WM_PAINT message to that window.
In response to WM_PAINT message, the window can obtain a paintstruct structure
which contains, among others, the coordinate of the invalid rectangle.
You call BeginPaint in response to WM_PAINT message to validate the invalid
rectangle. If you don't process WM_PAINT message, at the very least you
must call DefWindowProc or ValidateRect to validate the invalid rectangle
else Windows will repeatedly send you WM_PAINT message.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Below
are the steps you should perform in response to a WM_PAINT message:</font></font></font>
<ul><b><font face="Arial,Helvetica"><font color="#999900"><font size=-1>Get
a handle to device context with BeginPaint.</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#999900"><font size=-1>Paint
the client area.</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#999900"><font size=-1>Release
the handle to device context with EndPaint</font></font></font></b></ul>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Note that
you don't have to explicitly validate the invalid rectangle. It's automatically
done by the BeginPaint call. Between BeginPaint-Endpaint pair, you can
call any GDI functions to paint your client area. Nearly all of them require
the handle to device context as a parameter.</font></font></font>
<h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Content:</font></font></font></h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>We will
write a program that displays a text string "Win32 assembly is great and
easy!" in the center of the client area.</font></font></font>
<br>&nbsp;
<blockquote><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.386</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.model
flat,stdcall</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>option
casemap:none</font></font></font></b><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1></font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>WinMain
proto :DWORD,:DWORD,:DWORD,:DWORD</font></font></font></b><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1></font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>include
\masm32\include\windows.inc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>include
\masm32\include\user32.inc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>includelib
\masm32\lib\user32.lib</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>include
\masm32\include\kernel32.inc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>includelib
\masm32\lib\kernel32.lib</font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.DATA</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>ClassName
db "SimpleWinClass",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>AppName&nbsp;
db "Our First Window",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>OurText&nbsp;
db "Win32 assembly is great and easy!",0</font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.DATA?</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>hInstance
HINSTANCE ?</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>CommandLine
LPSTR ?</font></font></font></b>
  <p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.CODE</font></font></font></b> 
    <br>
    <b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>start:</font></font></font></b> 
    <br>
    <b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; 
    invoke GetModuleHandle, NULL</font></font></font></b> <br>
    <b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; 
    mov&nbsp;&nbsp;&nbsp; hInstance,eax</font></font></font></b> <br>
    <b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; 
    invoke GetCommandLine<br>
    &nbsp;&nbsp;&nbsp;&nbsp;mov CommandLine,eax</font></font></font></b><br>
    <b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; 
    invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT</font></font></font></b> 
    <br>
    <b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; 
    invoke ExitProcess,eax</font></font></font></b> 
  <p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>WinMain
proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL wc:WNDCLASSEX</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL msg:MSG</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL hwnd:HWND</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.cbSize,SIZEOF WNDCLASSEX</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.style, CS_HREDRAW or CS_VREDRAW</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.lpfnWndProc, OFFSET WndProc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.cbClsExtra,NULL</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.cbWndExtra,NULL</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
push&nbsp; hInst</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
pop&nbsp;&nbsp; wc.hInstance</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.hbrBackground,COLOR_WINDOW+1</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.lpszMenuName,NULL</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.lpszClassName,OFFSET ClassName</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke LoadIcon,NULL,IDI_APPLICATION</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.hIcon,eax</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.hIconSm,eax</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke LoadCursor,NULL,IDC_ARROW</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov&nbsp;&nbsp; wc.hCursor,eax</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke RegisterClassEx, addr wc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hInst,NULL</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕日本乱码精品影院| 欧美系列一区二区| 久久久久久久久久美女| 美国三级日本三级久久99| 欧美xxxx老人做受| 国产精品中文字幕一区二区三区| 久久午夜免费电影| 成人在线综合网站| 一区二区三区在线免费播放| 欧洲视频一区二区| 美女脱光内衣内裤视频久久网站| 精品欧美一区二区三区精品久久| 国产一区二区三区在线观看免费| 国产人成亚洲第一网站在线播放| 大白屁股一区二区视频| 亚洲欧美激情小说另类| 欧美日本国产一区| 精品一区二区三区的国产在线播放| 久久奇米777| 91同城在线观看| 日韩av午夜在线观看| 久久亚洲欧美国产精品乐播| 色呦呦日韩精品| 美女网站视频久久| 中文字幕中文字幕一区二区| 欧美亚洲免费在线一区| 久久精品国产秦先生| 中文一区二区在线观看| 欧美色大人视频| 国产在线播放一区二区三区| 亚洲天堂成人网| 日韩视频在线一区二区| 不卡的电影网站| 视频一区二区不卡| 国产精品三级电影| 日韩一区二区在线播放| 99视频有精品| 午夜久久久影院| 国产精品家庭影院| 日韩精品一区二区三区在线| 成人黄色在线看| 性久久久久久久久| 综合激情网...| 精品99999| 欧美影视一区二区三区| 国产美女久久久久| 亚洲一区电影777| 国产精品欧美一级免费| 日韩精品一区二区在线| 91成人免费电影| 国产成人一区在线| 麻豆91免费看| 日韩精品午夜视频| 亚洲综合偷拍欧美一区色| 中文幕一区二区三区久久蜜桃| 欧美二区在线观看| 色域天天综合网| 色婷婷综合激情| 国产精品一二三四区| 日本美女一区二区三区| 亚洲国产精品综合小说图片区| 欧美国产精品专区| 精品噜噜噜噜久久久久久久久试看| 在线观看国产一区二区| 91麻豆免费看| zzijzzij亚洲日本少妇熟睡| 国产呦萝稀缺另类资源| 精品综合久久久久久8888| 亚洲高清一区二区三区| 一区二区三国产精华液| 一区二区三区精品久久久| 国产精品美女视频| 中文字幕av免费专区久久| 国产蜜臀av在线一区二区三区| 日韩免费观看2025年上映的电影| 欧美日韩成人高清| 欧美日韩一级二级| 在线成人高清不卡| 欧美精品自拍偷拍| 91精品综合久久久久久| 宅男噜噜噜66一区二区66| 欧美日本高清视频在线观看| 色狠狠一区二区| 欧美三级日韩三级国产三级| 精品1区2区3区| 欧美精品日韩一本| 宅男在线国产精品| 日韩三级视频在线观看| 精品免费国产二区三区| 精品福利一区二区三区免费视频| 精品久久久久久久久久久久久久久| 欧美成人vr18sexvr| 亚洲精品在线免费观看视频| 久久久国产精华| 17c精品麻豆一区二区免费| 亚洲人成7777| 婷婷久久综合九色综合绿巨人| 日韩高清在线一区| 国产一二精品视频| 色综合色综合色综合| 欧美日韩免费视频| 日韩精品在线一区二区| 欧美国产精品一区二区| 亚洲免费视频成人| 日韩电影在线观看网站| 精品亚洲成a人| 成人国产一区二区三区精品| 在线亚洲精品福利网址导航| 日韩欧美一区在线| 国产欧美一区二区三区网站 | 一区二区三区不卡视频在线观看| 亚洲主播在线观看| 黄色小说综合网站| 成人国产精品免费观看动漫| 色偷偷成人一区二区三区91| 91精品国产高清一区二区三区| 久久免费精品国产久精品久久久久| 亚洲国产精华液网站w| 亚洲福利一二三区| 国产精品一区二区三区网站| 一本大道av伊人久久综合| 555www色欧美视频| 国产精品久久久久久久第一福利| 亚洲第一福利一区| 国产精品伊人色| 欧美三级三级三级爽爽爽| 久久综合狠狠综合久久综合88 | 国产91精品免费| 一本久久a久久精品亚洲| 欧美一卡二卡在线观看| 中文字幕亚洲一区二区av在线| 丝袜诱惑制服诱惑色一区在线观看| 国产一区二区三区不卡在线观看 | 欧美又粗又大又爽| 精品国产污网站| 亚洲综合成人网| 波多野结衣一区二区三区| 日韩欧美一级在线播放| 亚洲综合区在线| 国产91精品露脸国语对白| 欧美一区二区三区播放老司机| 自拍偷拍欧美精品| 国产一区二区三区免费观看| 91麻豆精品国产91久久久久久久久| 中文字幕视频一区| 国产自产视频一区二区三区| 91精品在线免费观看| 亚洲乱码国产乱码精品精小说| 麻豆91在线播放| 欧美精品视频www在线观看 | 亚洲一区二区三区国产| 成人激情综合网站| 久久久亚洲精品一区二区三区| 日日夜夜精品视频免费| 欧美在线免费观看亚洲| 最新国产精品久久精品| 国产成人午夜精品5599| 久久影院午夜论| 日本亚洲最大的色成网站www| 欧美性生交片4| 一区二区三区在线看| 91啪亚洲精品| 亚洲色图视频免费播放| 成人午夜在线免费| 中文字幕色av一区二区三区| 成人性生交大片免费看中文| 日本一区二区三区电影| 国产成人精品网址| 久久精品水蜜桃av综合天堂| 国产一区二区三区四区在线观看| 精品国产1区2区3区| 国内精品不卡在线| 久久精品人人做人人综合| 国产成人免费在线| 欧美国产日本视频| 97久久久精品综合88久久| 亚洲免费在线看| 欧美日韩一区不卡| 天天色天天操综合| 日韩精品在线一区| 国产福利一区二区| 亚洲欧美综合另类在线卡通| 91福利区一区二区三区| 午夜视黄欧洲亚洲| 欧美va亚洲va| 国产69精品久久久久毛片| 一区在线观看视频| 在线观看欧美黄色| 日本成人在线视频网站| 26uuu国产电影一区二区| 国产成人免费网站| 一区二区三区国产| 日韩欧美一区在线| 丁香亚洲综合激情啪啪综合| 国产精品国产三级国产aⅴ入口| 色综合久久久久久久久久久| 丝袜亚洲另类欧美综合| 久久久www免费人成精品| 色综合一个色综合亚洲| 五月天亚洲婷婷|