本週開始自學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)!!!
幾乎全部的C語言編寫的window程序都有這個預處理器(preprocessor)指令,也就頭文件:
#include <windows.h>windows.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中查找。
第一章結束。