windows程序設計自學筆記(一)

    本週開始自學windows編程,選的教材是《windows程序設計第五版》(珍藏版),沒錢買書,只能下了pdf的書籍來看。 《windows程序設計第五版》(珍藏版)共分3個大部分,分別是:1)基礎知識[1-12章] 2)關於圖的那些事[13-18章] 3)高級主題[19-23章]。本筆記主要基於32位系統 編程

第一章 起步
windows

    1.1widows環境
    1.1.1 windows簡
數據結構

    主要介紹了MS-DOS至windows98的發展史。(略過) 函數

    1.1.2 windows的方方面面
性能

    windows操做系統的任務管理系統。(略過)
spa

    1.1.3 動態連接
操作系統

    Windows 運做機制的核心是一個稱做「動態連接」的概念。Windows 提供了應用程序豐富的函數,大多數用於用來實現用戶界面和在屏幕上顯示文字和圖形。這些函數都是在動態連接庫(Dynamic Linking Library,DLL)裏實現的。這些動態連接庫都帶有.DLL後綴或者有時是帶有.EXE 後綴的文件,在 Windows 98 中一般放在\WINDOWS\SYSTEM 子目錄下,在 Windows NT中一般於\WINNT\SYSTEM 和\WINNT\SYSTEM32 子目錄下。
    windows編程主要涉及3個動態連接庫,分別表明了windows的3個主要的子系統,分別是內核(kernel)、用戶(user)以及GDI(
Graphics Device Interface,圖形設備接口)。內核對應的動態鏈接庫是kernel32.dll ,主要負責操做系統的傳統工做,包括內存管理,文件管理等;用戶對應的動態連接庫爲user32.dll,主要負責所用的窗口管理;GDI對應的動態鏈接庫是gdi32.dll,負責在屏幕或打印機上顯示文本和圖形。
命令行

    1.2 windows編程選項
設計

    1.2.1 API及內存管理模式
code

    核心就是Win32支持Win32 API並向下兼容Win16API。

    1.2.2 語言選擇

    C語言和基本API不是編寫windows程序的惟一方式,但這一方式能夠爲windows程序提供最佳的性能、最強的功能和最大的多樣性。(我一直在學C,因此這一次無可厚非的選擇C)

    1.2.3  編程環境

    這個能夠本身選擇,不過我推薦Visual C++系列IDE。

    1.2.4 API文檔

    這個你懂的,你所須要的全部API函數的用法都在這個文檔,在哪找?去MSDN。

    1.3 你的第一個windows程序

    1.3.1 字符模式

    這個模式相信你們都很清楚吧。。。
    

#include <stdio.h>
int main()
{
    printf("hello,world!\n");
    return 0;
}
這個程序你們應該也很清楚吧。


    1.3.2 windows對應程序

    跟學C同樣,第一個不外乎是HelloWorld的程序,能夠和上面的代碼對比看一下:

/*--------------------------------------------------------------
   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 ;
}
    在你將代碼copy到你編譯器以前,先聲明一下,咱們寫的是windows程序,因此在新建項目是請選擇win32項目(Win32 Application)而不是win32控制檯程序(Win32 Console Application)!!!
     1.3.3 頭文件


    幾乎全部的C語言編寫的window程序都有這個預處理器(preprocessor)指令,也就頭文件:

#include <windows.h>
    windows.h是一個重要的頭文件,在這個頭文件中包含了若干其餘頭文件,其中包含的頭文件又包含了另外的一些頭文件。 其中有幾個是最重要也是最基本的頭文件:
1) windef.h    基本數據類型定義
2) winnt.h     支持Unicode的類型定義
3) winbase.h  內核函數
4) winuser.h   用戶界面函數
5) wingdi.h    圖形設備接口函數


這些頭文件定義了Windows的全部數據類型、函數調用、數據結構和常量標識符,它們是Windows文檔中的一個重要部分。

    1.3.4 程序入口

    和C語言同樣,windows程序也有一個 入口函數,而這個入口不是C語言中的main函數,而是 int WINAPI WinMain函數,它的形式老是下面這個樣子:

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
					PSTR szCmdline, int iCmdshow)
第一個參數通常叫「實例句柄」(Instance Handle),該句柄實際是一個數值,用來惟一標識咱們的這個程序;第三個參數用來運行程序的命令行(Command Line),有些windows程序在啓動時用它來把文件調入內存;第四個參數用來指出windows的最初顯示方式:正常顯示,或者最大化全屏顯示,或者最小化顯示到任務欄上;第二個參數是Win16的產物,此處不作說明,在Win32中其值一直爲NULL。


    1.3.5 MessageBox函數

    MessageBox函數用來顯示短消息。MessageBox函數的第一個參數是一個窗口句柄,具體意思不清,後面要說。。。第二個參數是在對話框中顯示的文本字符串;第三個參數是對話框的標題文本字符串;第四個參數是消息格式控制常量,一般以MB_打頭。
    MessageBox函數的第四個參數,即消息控制常量在winuser.h中定義了,這些常量能夠用‘ | ’運算(C語言或運算 )組合使用。

*
 * MessageBox() Flags
 */
#define MB_OK                       0x00000000L
#define MB_OKCANCEL                 0x00000001L
#define MB_ABORTRETRYIGNORE         0x00000002L
#define MB_YESNOCANCEL              0x00000003L
#define MB_YESNO                    0x00000004L
#define MB_RETRYCANCEL              0x00000005L
下面的是含圖標的
#define MB_ICONHAND                 0x00000010L
#define MB_ICONQUESTION             0x00000020L
#define MB_ICONEXCLAMATION          0x00000030L
#define MB_ICONASTERISK             0x00000040L
#define MB_USERICON                 0x00000080L
#define MB_ICONWARNING              MB_ICONEXCLAMATION
#define MB_ICONERROR                MB_ICONHAND
#define MB_ICONINFORMATION          MB_ICONASTERISK
#define MB_ICONSTOP                 MB_ICONHAND
其餘的_MB常量本身到winuser.h中查找。
    1.3.6 編譯、連接及運行
    這部基本與C語言的方法相同(在Visual C++6.0,2008,2010,2012中)。


    第一章結束。

相關文章
相關標籤/搜索