讀 《Windows程式設計》(1)

來源:互聯網
上載者:User

摘錄:

“您也許發現,例如,使用Visual Basic編寫應用程式非常理想,然而它不允許您做一個或兩個很簡單的基本工作。在這種情況下,您將不得不使用原始的API呼叫。API定義了作為Windows程式寫作者所需的一切。沒有什麼方法比直接使用API更萬能的了。 ”

“MFC尤其問題百出。雖然它大幅簡化了某些工作(例如OLE),我卻經常發現要讓它們按我所想的去工作時,會在其它特性(例如Document/View架構)上碰壁。MFC還不是Windows程式設計者所追求的靈丹妙藥,很少有人認為它是一個好的對象導向設計的模型。”

“MFC程式寫作者從他們使用的物件類別定義如何工作中受益頗深,並會發現他們經常參考MFC原始碼,搞懂這些原始碼是學習Windows API的好處之一。”

“如果您正使用Visual C++ 5.0,則需要為Windows 98和Windows NT 5.0更新表標頭檔和引用連結庫,這些東西可從Microsoft的網站上得到。在 http://www.microsoft.com/msdn/,選擇「Downloads」,然後選擇「 Platform SDK」(軟體開發套件),您就能在選擇的目錄中下載和安裝更新檔案。要讓Microsoft Developer Studio瀏覽這些目錄,可以從「Tool」功能表項目選擇「 Options」然後按下「Directories」標籤。”

“在Visual C++ 6.0中,從「Help」功能表項目選擇「Contents」項目開啟MSDN視窗。API檔案按樹形結構組織,尋找標有「 Platform SDK」的部分,所有在本書中引用的檔案都來自於該部分。我將向您介紹如何從「 Platform SDK」開始尋找以斜線分層分門別類的檔案的位置。(我知道「Platform SDK」是整個MSDN知識庫中較為晦澀的部分,但我敢保證那是Windows程式設計的基本核心。)例如,對於如何在Windows程式中使用滑鼠的檔案,您可參考/ Platform SDK / User Interface Services / User Input / Mouse Input。”

“kernel介面在/ Platform SDK / Windows Base Services中,User介面函數在 / Platform SDK / User Interface Services中,GDI位於 / Platform SDK / Graphics and Multimedia Services / GDI中。”

C程式helloworld

#include <stdio.h>int main (){           printf ("hello, world/n") ;           return 0 ;}

第一個WINDOWS程式

/*------------------------------------------------------------------HelloMsg.c -- Displays "Hello, Windows 98!" in a message box    (c) Charles Petzold, 1998--------------------------------------------------------------------*/#include <windows.h>int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,                   PSTR szCmdLine, int iCmdShow){MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0);return 0 ;}
“正如在C程式中的進入點是函數main一樣,Windows程式的進入點是WinMain。該進入點在/ Platform SDK / User Interface Services / Windowing / Windows / Window Reference / Window Functions中有說明。” 

“我還在WinMain聲明中改變了兩個參數的名稱。許多Windows程式中的變數名使用一種稱作「匈牙利標記法」的命名系統,該系統在變數名稱前面增加了表示變數資料型態的短首碼,我將在第三章更詳細地討論這個概念。現在僅需記住首碼i表示int、sz表示「以零結束的字串」。”

“WinMain的第一個參數被稱作「執行實體控制代碼」。在Windows程式設計中,控制代碼僅是一個應用程式用來識別某些東西的數字。在這種情況下,該控制代碼唯一地標識該程式,還需要它在其它Windows函數呼叫中作為參數。在Windows的早期版本中,當同時運行同一程式多次時,您便建立了該程式的「多個執行實體(multiple instances)」。同一應用程式的所有執行實體共用程式和唯讀記憶體(通常是例如菜單和對話方塊模板的資源)。程式通過檢查hPrevInstance參數就能夠確定自身的其它執行實體是否正在運行。然後它可以略過一些繁雜的工作並從前面的執行實體將某些資料移到自己的資料區域。”
“在32位Windows版本中,該概念已被拋棄。傳給WinMain的第二個參數總是NULL(定義為0)。”
“WinMain的第三個參數是用於執行程式的命令列。某些Windows應用程式利用它在程式啟動時將檔案載入記憶體。WinMain的第四個參數指出程式最初顯示的方式,可以是正常的或者是最大化地充滿整個畫面,或者是最小化顯示在工作列中。”
“MessageBox的第一個參數通常是視窗控制代碼,我們將在第三章介紹其含義。第二個參數是在訊息框主體中顯示的字串,第三個參數是出現在訊息框標題列上的字串。在HELLMSG.C中,這些文字字串的每一個都被封裝在一個TEXT宏中。通常您不必將所有字串都封裝在TEXT宏中,但如果想將您的程式轉換為Unicode字元集,這確是一個好主意。

MessageBox的第四個參數可以是在WINUSER.H中定義的一組以首碼MB_開始的常數的組合”

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.