?? 游戲程式設計指南(hoho篇) lesson2.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://www.gameres.com/HoHo/Guide/Lesson2.htm -->
<HTML><HEAD><TITLE>游戲程式設計指南(HoHo篇) Lesson2 - GameRes.com</TITLE>
<META content=zh-cn http-equiv=Content-Language>
<META content="MSHTML 5.00.3700.6699" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META content="text/html; charset=gb2312" http-equiv=Content-Type></HEAD>
<BODY aLink=#ff9900 bgColor=#000000 leftMargin=0 link=#ff9900 text=#ffffff
topMargin=0 vLink=#ff9900><FONT face=Arial>
<TABLE border=0 borderColor=#111111 cellPadding=0 cellSpacing=0 id=AutoNumber1
style="BORDER-COLLAPSE: collapse" width="100%">
<TBODY>
<TR>
<TD width="100%"><A href="http://www.gameres.com/"
title="中國游戲開發技術資源網 - GameRes.com"><IMG border=0 height=47
src="游戲程式設計指南(HoHo篇) Lesson2.files/titlesmall.jpg" width=200></A></TD></TR>
<TR>
<TD width="100%"> </TD></TR>
<TR>
<TD width="100%">
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 id=AutoNumber2
style="BORDER-COLLAPSE: collapse" width="85%">
<TBODY>
<TR>
<TD bgColor=#151631 width="100%">
<P align=right><FONT size=1>林德輝(Sea_Bug)
</FONT></P></TD></TR>
<TR>
<TD width="100%">
<P align=center><FONT size=1> </FONT><BR><FONT
color=#ffffee><B>游戲程式設計指南(HoHo篇)<BR>Lesson 2 —
完善篇</B></FONT></P></TD></TR>
<TR>
<TD width="100%"> </TD></TR>
<TR>
<TD width="100%"><FONT size=4><B>序</B></FONT><FONT
size=2><BR><BR> Lesson1介紹了如何安裝并且創建了最基本的HoHo引用程序,不過看起來似乎并不是很合適游戲,而且只要窗口被移動,或者最小化都會影響程序的正常使用,本章節可以告訴你這些細節如何處理。
此章節的內容不單單是為了HoHo游戲引擎所使用,實際上是講述了Windows應用程序的控制方式,不管你是否使用HoHo,多了解一下用Windows
API來創建控制應用程序對你來說會有所幫助的。<BR><BR><BR></FONT><B>目錄:</B><FONT
size=2><BR></FONT> <A
href="http://www.gameres.com/HoHo/Guide/Lesson2.htm#顯示/隱藏應用程序菜單"
target=_self>顯示/隱藏應用程序菜單</A><BR> <A
href="http://www.gameres.com/HoHo/Guide/Lesson2.htm#讓窗口不會被改變大小"
target=_self>讓窗口不會被改變大小</A><BR> <A
href="http://www.gameres.com/HoHo/Guide/Lesson2.htm#移動窗口響應處理"
target=_self>移動窗口響應處理</A><BR> <A
href="http://www.gameres.com/HoHo/Guide/Lesson2.htm#檢測窗口是否被激活"
target=_self>檢測窗口是否被激活</A><BR> <A
href="http://www.gameres.com/HoHo/Guide/Lesson2.htm#讓游戲程序進入全屏方式"
target=_self>讓游戲程序進入全屏方式</A><BR> <A
href="http://www.gameres.com/HoHo/Guide/Lesson2.htm#善尾工作,釋放數據"
target=_self>善尾工作,釋放數據</A><BR><FONT
size=2><BR><BR><BR></FONT><B><FONT size=4><A
name=顯示/隱藏應用程序菜單>顯示/隱藏應用程序菜單</A></FONT></B><FONT
size=2><BR><BR> 在MyGame.cpp文件中,找到MyRegisterClass()這支函數,這支函數是用來向Windows注冊應用程序窗口,里面的WNDCLASSEX結構就是保存了用戶所需要的注冊信息,此信息關系到你以后應用程序的屬性設置;我們這里希望將原應用程序的窗口菜單關閉,因為游戲窗口一般不需要應用程序的菜單選項,找到:<BR></FONT><FONT
color=#99ccff face=宋體 size=2> wcex.lpszMenuName =
(LPCTSTR)IDC_MYGAME;</FONT><FONT face=Arial
size=2><BR> 改成:<BR></FONT></FONT><FONT color=#99ccff face=宋體
size=2> wcex.lpszMenuName = NULL;</FONT><FONT face=Arial
size=2><BR> </FONT>
<DIV align=center>
<CENTER>
<TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0
id=AutoNumber3 style="BORDER-COLLAPSE: collapse" width="80%">
<TBODY>
<TR>
<TD align=middle bgColor=#001824 width="100%"><FONT
size=2>關閉程序菜單</FONT></TD></TR>
<TR>
<TD align=middle width="100%"><FONT size=1> <BR><IMG
border=0 height=440
src="游戲程式設計指南(HoHo篇) Lesson2.files/CreateAPP_7.gif"
width=492><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT face=Arial><FONT face=Arial
size=2>這樣就能關閉掉游戲程序的窗口菜單。<BR><BR><BR><BR></FONT><B><A
name=讓窗口不會被改變大小>讓窗口不會被改變大小</A></B><FONT face=Arial
size=2><BR><BR> 如果我們的窗口被改變大小,那么我們游戲的顯示大小將受到改變,這是我們不希望看到的,現在,只要我們將程序窗口設定為不可改變大小,那么這個問題就自然而然的解決了。讓我們回頭看看我們程序的創建窗口函數InitInstance(),在CreateWindow(...)這句里面有WS_OVERLAPPEDWINDOW這樣一個參數,此參數就是用來說明創建出來窗口的風格,只要把窗口改為WS_POPUP,那么就可以讓我們的游戲程序窗口不會被改動,不要問我這些參數是什么意思,這些東西在MSDN上面有詳細的介紹,雖然是英文的。<BR> </FONT></FONT>
<DIV align=center>
<CENTER>
<TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0
id=AutoNumber4 style="BORDER-COLLAPSE: collapse" width="80%">
<TBODY>
<TR>
<TD align=middle bgColor=#001824 width="100%"><FONT
size=2>設置窗口風格</FONT></TD></TR>
<TR>
<TD align=middle width="100%"><FONT size=1> <BR><IMG
border=0 height=309
src="游戲程式設計指南(HoHo篇) Lesson2.files/CreateAPP_8.gif"
width=544><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT face=Arial><FONT face=Arial size=2><BR></FONT><FONT
size=2><BR></FONT><B><A name=移動窗口響應處理>移動窗口響應處理</A></B><FONT
size=2><BR><BR> 有沒有發現我們的游戲程序窗口在被移動的時候會出問題?沒關系,只要我們在窗口程序的消息響應函數里加入一點處理就可以輕松解決,我們先來看看圖:<BR><BR> </FONT></FONT>
<DIV align=center>
<CENTER>
<TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0
id=AutoNumber5 style="BORDER-COLLAPSE: collapse" width="80%">
<TBODY>
<TR>
<TD align=middle bgColor=#001824 width="100%"><FONT
size=2>消息響應處理</FONT></TD></TR>
<TR>
<TD align=middle width="100%"><FONT size=1> <BR><IMG
border=0 height=325
src="游戲程式設計指南(HoHo篇) Lesson2.files/CreateAPP_9.gif"
width=382><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT face=Arial
size=2>如圖所示,我們在WndProc()中加入一個WM_MOVE的消息處理(關于消息可以查閱MSDN),此消息是通知你應用程序窗口被移動過,我們只要相應的做出一些處理,就能解決上面的問題;看看我們加入了什么:<BR><BR></FONT></FONT><FONT
color=#99ccff face=宋體 size=2> if( GetGraphics() !=
NULL)<BR>
GetGraphics()->UpdateBounds();<BR></FONT><FONT face=Arial><FONT
face=Arial
size=2><BR>其中UpdateBounds()函數是HoHo圖形部分的更新位置函數,你不需要知道它如何工作,只要知道它能做到就行了。:)<BR><BR><BR><BR></FONT><B><A
name=檢測窗口是否被激活>檢測窗口是否被激活</A></B><FONT face=Arial
size=2><BR><BR> 有時候我們的游戲窗口被玩家最小化,如果這時候我們不停的繪制圖像,那會消耗很多的無用資源,同時也給用戶帶來了不便,我們完全可以讓我們的游戲在被最小化的時候安靜下來,減少對CPU的占用率。好,讓我們來看看如何實現。和上面移動窗口的處理一樣,加入對窗口激活的消息響應,不過在加消息之前,我們需要為程序加一個全局標記變量,如下:<BR><BR></FONT></FONT></FONT><FONT
color=#99ccff face=宋體 size=2> bool g_bActive = true;</FONT><FONT
face=Arial><FONT face=Arial size=2><BR> </FONT></FONT>
<DIV align=center>
<CENTER>
<TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0
id=AutoNumber8 style="BORDER-COLLAPSE: collapse" width="80%">
<TBODY>
<TR>
<TD align=middle bgColor=#001824 width="100%"><FONT face=Arial
size=2>添加全局變量</FONT></TD></TR>
<TR>
<TD align=middle width="100%"><FONT face=Arial
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -