direct基礎學習(一) 最簡單的Windows程式

來源:互聯網
上載者:User

    今天開始認真研習direct3d編程。

 

    direct程式也是Windows程式,按我自己的理解,Windows程式就是視窗程序,就有視窗,所以一個direct程式必然有一個視窗。視窗在我的理解中,就是人機介面的一種,是機器和人通訊的介面。

    既然有介面了,那麼接下來就會交換訊息,有訊息了自然就要處理。人,處理訊息通過大腦,然後通過介面(視窗)給電腦反饋。那麼機器呢?我們知道視窗程序都會有一個視窗處理函數,這個函數就是這個程式的大腦,視窗是它的眼和手。

 

來看MSDN的常式:

 

//最簡單的Windows程式</p><p>#define WINDOW_CLASS "StrandedGame"// 視窗類別名<br />#define WINDOW_NAME "Stranded"// 視窗名<br />#define WIN_WIDTH 800// 初始視窗寬度<br />#define WIN_HEIGHT 600// 初始視窗高度</p><p>#include <windows.h></p><p>// 視窗處理函數<br />LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );</p><p>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,<br /> LPSTR lpCmdLine, int nCmdShow)<br />{<br /> // 設計視窗類別<br /> WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,<br />GetModuleHandle(NULL), NULL, NULL, (HBRUSH)(COLOR_WINDOW+1), NULL,<br />WINDOW_CLASS, NULL };<br />// 註冊視窗類別<br /> RegisterClassEx( &wc );</p><p> // 建立視窗<br /> HWND hWnd = CreateWindow( WINDOW_CLASS, WINDOW_NAME,<br />WS_OVERLAPPEDWINDOW, 0, 0, WIN_WIDTH, WIN_HEIGHT,<br />NULL, NULL, wc.hInstance, NULL );</p><p>// 顯示視窗<br />ShowWindow( hWnd, SW_SHOWDEFAULT );<br />UpdateWindow( hWnd );</p><p>// 訊息迴圈(訊息被轉化以後,由視窗處理函數處理)<br />MSG msg;<br />while( GetMessage( &msg, NULL, 0, 0 ) )<br />{<br />TranslateMessage( &msg );<br />DispatchMessage( &msg );<br />}</p><p>// 取消視窗註冊<br /> UnregisterClass( "D3D Tutorial", wc.hInstance );<br /> return 0;<br />}</p><p>// 訊息處理<br />LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )<br />{<br />// 訊息處理<br /> switch( msg )<br /> {<br />case WM_DESTROY:<br />PostQuitMessage( 0 );<br />return 0;</p><p> }</p><p> return DefWindowProc( hWnd, msg, wParam, lParam );<br />}</p><p>

 

這樣就產生了一個最簡單的Windows視窗程序,它有眼睛有嘴巴(視窗)、有大腦(視窗處理函數)

   

 

while( GetMessage( &msg, NULL, 0, 0 ) )
 {
      TranslateMessage( &msg );
      DispatchMessage( &msg );
 }

    視窗處理函數就像大腦一樣,一直等待著訊息。

    訊息迴圈就像人體的神經系統,不停的將眼睛看到的訊息告訴大腦。

 

以上代碼經過vc6.0編譯通過,講在案頭(0,0)位置產生一個空白的Windows視窗。

它的大腦只能識別一個訊息即:WM_DESTROY     // 退出

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.