乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      脫離vcl的windows程序

       frie 2005-08-09
      4.4.1 脫離VCL的Windows程序
      我想讀者有必要先了解一個(gè)標(biāo)準(zhǔn)Windows程序的運(yùn)行流程,如果您還不了解,請看下面的一個(gè)示例程序。在此,我給出一個(gè)用純pascal所編寫的十分簡單的Windows應(yīng)用程序,以演示標(biāo)準(zhǔn)Windows程序是如何被建立及運(yùn)行的。該程序的代碼及可執(zhí)行文件可在本書配套光盤的WindowDemo目錄下找到,程序可被Delphi編譯通過。
      以下是代碼清單,請注意其中的注釋:
      program WindowDemo;

      uses Windows, Messages;

      // 窗口函數(shù),窗口接到消息時(shí)被Windows所調(diào)用
      function WindowProc(hwnd : HWND; uMsg : Cardinal; wParam : WPARAM;
       lParam : LPARAM) : LResult; stdcall;
      begin
       Result := 0;
         
       case uMsg of
       // 關(guān)閉窗口消息,當(dāng)用戶關(guān)閉窗口后,通知主消息循環(huán)結(jié)束程序
       WM_CLOSE : PostMessage(hwnd, WM_QUIT, 0, 0);
       // 鼠標(biāo)左鍵按下消息
       WM_LBUTTONDOWN : MessageBox(hwnd, ‘Hello!‘, ‘和您打個(gè)招呼‘,
        MB_ICONINFORMATION);

       else
       // 其它消息做默認(rèn)處理
        Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
       end;
      end;

      var
       wndcls : WNDCLASS; // 窗口類的記錄(結(jié)構(gòu))類型
       hWnd : THandle;
       Msg : tagMSG; // 消息類型
      begin
       wndcls.style := CS_DBLCLKS; // 允許窗口接受鼠標(biāo)雙擊
       wndcls.lpfnWndProc := @WindowProc; // 為窗口類指定窗口函數(shù)
       wndcls.cbClsExtra := 0;
       wndcls.cbWndExtra := 0;
       wndcls.hInstance := hInstance;
       wndcls.hIcon := 0;
       wndcls.hCursor := LoadCursor(hInstance, ‘IDC_ARROW‘);
       wndcls.hbrBackground := COLOR_WINDOWFRAME;
       wndcls.lpszMenuName := nil;
       wndcls.lpszClassName := ‘WindowClassDemo‘; // 窗口類名稱

       // 注冊窗口類
       if RegisterClass(wndcls) = 0 then
        Exit;
        
       // 創(chuàng)建窗口
       hWnd := CreateWindow(
        ‘WindowClassDemo‘, // 窗口類名稱
        ‘WindowDemo‘, // 窗口名稱
        WS_BORDER or WS_CAPTION or WS_SYSMENU, // 窗口類型
        Integer(CW_USEDEFAULT),
        Integer(CW_USEDEFAULT),
        Integer(CW_USEDEFAULT),
        Integer(CW_USEDEFAULT),
        0,
        0,
        hInstance,
        nil
       );
       if hWnd = 0 then
        Exit;

       // 顯示窗口
       ShowWindow(hWnd, SW_SHOWNORMAL);
       UpdateWindow(hWnd);

       // 創(chuàng)建主消息循環(huán),處理消息隊(duì)列中的消息并分發(fā)
       // 直至收到WM_QUIT消息,退出主消息循環(huán),并結(jié)束程序
       // WM_QUIT消息由PostMessage()函數(shù)發(fā)送
       while GetMessage(Msg, hWnd, 0, 0) do
       begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
       end;
      end.
      該程序沒有使用VCL,它所做的事情就是顯示一個(gè)窗口,當(dāng)你在窗口上單擊鼠標(biāo)右鍵時(shí)彈出一個(gè)友好的對話框向您問好。如果您從來不曾了解過這些,那么我建議您實(shí)際運(yùn)行一下光盤上的這個(gè)程序,對其多一些感性認(rèn)識(shí)。
      就是這樣一個(gè)簡單的程序,演示了標(biāo)準(zhǔn)Windows程序的流程:
      1、從入口函數(shù)WinMain開始
      2、注冊窗口類及窗口函數(shù)(Window Procedure)
      3、創(chuàng)建并顯示窗口
      4、進(jìn)入主消息循環(huán),從消息隊(duì)列中獲取并分發(fā)消息
      5、消息被分發(fā)后,由Windows操作系統(tǒng)調(diào)用窗口函數(shù),由窗口函數(shù)對消息進(jìn)行處理。
      在Object Pascal中,我們看不到所謂的“WinMain”函數(shù),不過,其實(shí)整個(gè)program的begin處就是Windows程序的入口。
      注冊窗口類通過系統(tǒng)API函數(shù)RegisterClass()來完成,它向Windows系統(tǒng)注冊一個(gè)窗口的類型。
      注冊窗口類型完成后,就可以創(chuàng)建這個(gè)類型的窗口實(shí)例,創(chuàng)建出一個(gè)真正的窗口通過API函數(shù)CreateWindow()來實(shí)現(xiàn)。
      創(chuàng)建出的窗口實(shí)例通過API函數(shù)ShowWindow()來使得它顯示在屏幕上。
      當(dāng)這一切都完成后,窗口開始進(jìn)入一個(gè)while循環(huán)以處理各種消息,直至API函數(shù)GetMessage()返回0退出程序。循環(huán)中,程序需要從主線程的消息隊(duì)列中取出各種消息,并將它分發(fā)給系統(tǒng),然后由Windows系統(tǒng)調(diào)用窗口的窗口函數(shù)(WndProc)以完成窗口對消息的響應(yīng)處理。
      也許你會(huì)覺得,寫一個(gè)Windows應(yīng)用程序原來是那么繁瑣的,需要調(diào)用大量的API函數(shù)來完成平時(shí)看起來很簡單的事情,而我們平時(shí)使用VCL編寫窗口應(yīng)用程序時(shí),似乎從來沒有遇到過這些東西。是的,VCL作為一個(gè)Framework為我們做了很多事情,其中的TApplication除了定義一個(gè)應(yīng)用程序的特性及行為外,另一個(gè)重要的使命就是封裝以上的那些令人討厭的、繁瑣的步驟。

      對該文的評論
      chinayjlljy ( 2003-08-23)
      delphi的目的時(shí)提高效率,這些知識(shí)僅僅是一個(gè)程序員應(yīng)有的最基本的概念。沒有什么深?yuàn)W的,這簡直是對使用delphi的人的鄙視
      phy ( 2003-06-05)
      還真是,我慶幸我沒有買那本書,呵呵。
      Aweay ( 2003-05-07)
      寫這書的人在蔑視用delphi的人,以為他們連基本的Windows sdk程序設(shè)計(jì)都不懂??要不然就是用delphi的人都麻木到只會(huì)用元件了。
      chanet ( 2003-04-01)
      VC 的DELPHI知識(shí)
      tw_cshn ( 2002-11-20)
      那就直接用vc

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多