?? rumen.htm
字號:
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
//填充主頁面信息</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
ddsd.dwSize = sizeof( ddsd );</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
ddsd.dwFlags = DDSD_CAPS;</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
//創(chuàng)建主頁面對象</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK)</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
return FALSE;</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
//輸出文字</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
if ( lpDDSPrimary->GetDC(&hdc) != DD_OK) return FALSE; </span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
SetBkColor( hdc, RGB( 0, 0, 255 ) );</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
SetTextColor( hdc, RGB( 255, 255, 0 ) );</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
TextOut( hdc, 220, 200, szMsg1, lstrlen(szMsg1));</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
TextOut( hdc, 280, 240, szMsg2, lstrlen(szMsg2));</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
lpDDSPrimary->ReleaseDC(hdc);</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
return TRUE;</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">} </span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"> </p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">//******************************************************************</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">//函數(shù):FreeDDraw()</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">//功能:釋放所有的DirectDraw對象。</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">//******************************************************************</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">void
FreeDDraw( void )</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">{</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
if( lpDD != NULL )</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
{</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
if( lpDDSPrimary != NULL )</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
{</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
lpDDSPrimary->Release();</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
lpDDSPrimary = NULL;</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
}</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
lpDD->Release();</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
lpDD = NULL;</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">
}</span></font></p>
<p
style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2px"><font
face="宋體"><span style="background-color: rgb(0,0,128); color: rgb(255,255,255)">}</span></font></p>
<font face="宋體" size="3">
</ol>
<ol>
<li>為了簡化代碼,這第一個入門程序沒有頭文件。在進(jìn)行編譯之前,還得進(jìn)行最后的設(shè)置。選擇<font
SIZE="3">Project</font>菜單的<font SIZE="3">Settings…</font>,出現(xiàn)工程設(shè)置對話框。選擇<font
SIZE="3">Link</font>欄,在<font SIZE="3">Object/Library modules</font>中添入“<font
SIZE="3">Ddraw.lib</font>”。使對話框如圖所示。</li>
</ol>
<p ALIGN="CENTER"></font><a HREF="file:///D:/FrontPage/temp/pic/hello3.gif"><font SIZE="3">pic\hello3.gif</font></a></p>
<font face="宋體" size="3"><ul>
<li><font color="#FF0000">請注意:這一步驟是將DirectDraw的靜態(tài)連接庫文件連接到工程中,否則,程序雖然可以正常編譯,但是在連接時會產(chǎn)生一個“unresolved
external symbol”(沒有定義的外部符號)的錯誤。在以后所有的DirectDraw程序中,都必須將與你所用到的DirectDraw組件相應(yīng)的靜態(tài)連接庫添入到這個設(shè)置中。</font></li>
</ul>
<p ALIGN="JUSTIFY">至此,一個最基本的</font><font SIZE="3">DirectDraw</font><font
FACE="宋體" SIZE="3">應(yīng)用程序已創(chuàng)建完畢,你現(xiàn)在不必去深究這些代碼的含義,在下面及以后的章節(jié)中我們會對它們進(jìn)行詳細(xì)的分析。這雖不是一個最簡單的</font><font
SIZE="3">DirectDraw</font><font FACE="宋體" SIZE="3">應(yīng)用程序,但它確實(shí)是一個能夠?qū)崿F(xiàn)最基本的輸出功能的</font><font
SIZE="3">DirectDraw</font><font FACE="宋體" SIZE="3">程序。</p>
<p ALIGN="JUSTIFY">按</font><font SIZE="3">F7</font><font FACE="宋體" SIZE="3">編譯成功后,按</font><font
SIZE="3">Ctrl+F5</font><font FACE="宋體" SIZE="3">,執(zhí)行該程序,顯示器將切換到</font><font
SIZE="3">640*480*256</font><font FACE="宋體" SIZE="3">色模式,黑屏后,屏幕中央會打印出藍(lán)底黃字“</font><font
SIZE="3">Hello World, I am DirectDraw boy !</font><font FACE="宋體" SIZE="3">”,除了輸出這些字符外,這個程序什么也不做。按</font><font
SIZE="3">ESC</font><font FACE="宋體" SIZE="3">可退出程序。程序運(yùn)行結(jié)果如下圖</p>
<p ALIGN="CENTER"></font><a HREF="file:///D:/FrontPage/temp/pic/hello4.GIF"><font SIZE="3">pic\hello4.GIF</font></a></p>
<font FACE="宋體" SIZE="3"><p ALIGN="JUSTIFY">這就是</font><font SIZE="3">DirectDraw</font><font
FACE="宋體" SIZE="3">?有的人也許會對</font><font SIZE="3">DirectDraw</font><font
FACE="宋體" SIZE="3">感到很失望,因?yàn)樗]有為我們表現(xiàn)出神奇的功能啊?但有的人卻會對此感到異常興奮,他們覺得一扇充滿誘惑的房間的大門正向他們打開。這就象透過天窗,有些人只會看到黑暗的夜空,有些人卻能看見滿天的星星一樣。第一個例子,為了使程序不至于太長而讓那些初學(xué)者望而生畏,所以只能一再簡化(盡管這樣,整個程序還是占用了相當(dāng)大的篇幅)。在后續(xù)章節(jié)的例子中,你們會看到程序會一個比一個更精彩。</p>
<hr>
<b><p><a name="3、分析代碼">3、分析代碼</a></b><ol>
<ol>
<p ALIGN="right"><font color="#FF0000" FACE="宋體" SIZE="3"><a href="#目錄"
style="color: rgb(255,0,0)"><b>回到目錄</b></a></font></p>
</ol>
</ol>
<p ALIGN="JUSTIFY">下面,讓我們來逐一分析一下這個程序。</p>
<b><p><a name="1)程序結(jié)構(gòu)">1)程序結(jié)構(gòu)</a></p>
</b><p ALIGN="right"><font color="#FF0000" FACE="宋體" SIZE="3"><a href="#目錄"
style="color: rgb(255,0,0)"><b>回到目錄</b></a></font></p>
<p ALIGN="JUSTIFY">分析程序應(yīng)該是一個由外而內(nèi),逐步求精的過程。首先從大的方面來看,這個程序一共用到了五個函數(shù),如果按照正常順序,排除程序中出錯的可能,它們的調(diào)用順序依次是這樣的。</p>
<b><p ALIGN="JUSTIFY">WinMain ----> InitWindow ----> InitDDraw ----> WinProc
----> FreeDDraw</p>
<p ALIGN="JUSTIFY">WinMain</b>:所有<font SIZE="3">Win32</font>應(yīng)用程序的入口函數(shù),它也是應(yīng)用程序關(guān)閉時的出口,一個應(yīng)用程序的全生命周期就是在它的控制之下。所以,確切的說,其它四個函數(shù)是被包括在<font
SIZE="3">WinMain</font>之內(nèi)的。消息循環(huán)也是在這個函數(shù)中啟動。</p>
<b><font SIZE="3"><p ALIGN="JUSTIFY">InitWindow</font></b>:初始化和創(chuàng)建一個與程序的<font
SIZE="3">HINSTANCE</font>(實(shí)例句柄)相關(guān)聯(lián)的主窗口,這個窗口的<font
SIZE="3">HWND</font>(窗口
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -