windows 程式分為「程式**」和「ui(user inte***ce)資源」兩大部份,兩部份最後以rc
編譯器集成為乙個完整的exe 檔案(圖1-1)。所謂ui 資源是指功能選單、對話方塊
外貌、程式圖示、游標形狀等等東西。這些ui 資源的實際內容(二進位制**)系借助各
種工具產生,並以各種副檔名存在,如.ico、.bmp、.cur 等等。程式設計師必須在乙個所謂
的資源描述檔(.rc)中描述它們。rc 編譯器(rc.exe)讀取rc 檔的描述後將所有ui
資源檔集中製作出乙個.res 檔,再與程式**結合在一起,這才是乙個完整的windows
可執行檔。
需要什麼函式庫(.lib)
眾所周知windows 支援動態聯結。換句話說,應用程式所呼叫的windows api 函式是
在「執行時期」才聯結上的。那麼,「聯結時期」所需的函式庫做什麼用?有哪些?
並不是延伸檔名為.dll 者才是動態聯結函式庫(dll,dynamic link library),事實
上.exe、.dll、.fon、.mod、.drv、.ocx 都是所謂的動態聯結函式庫。
windows 程式呼叫的函式可分為c runtimes 以及windows api 兩大部份。早期的c
runtimes 並不支援動態聯結,但visual c++ 4.0 之後已支援,並且在32 位作業系統
中已不再有small/medium/large 等記憶體模式之分。以下是它們的命名規則與使用時機:
■ libc.lib - 這是c runtime 函式庫的靜態聯結版本。
■ msvcrt.lib - 這是c runtime 函式庫動態聯結版本(msvcrt40.dll)的
import 函式庫。如果聯結此一函式庫,你的程式執行時必須有msvcrt40.dll
在場。另一組函式,windows api,由作業系統本身(主要是windows 三大模組gdi32.dll 和
user32.dll 和kernel32.dll)提供(注)。雖說動態聯結是在執行時期才發生「聯
6結」事實,但在聯結時期,聯結器仍需先為呼叫者(應用程式本身)準備一些適當的信
息,才能夠在執行時期順利「跳」到dll 執行。如果該api 所屬之函式庫尚未載入,
系統也才因此知道要先行載入該函式庫。這些適當的資訊放在所謂的「import 函式庫」
中。32 位windows 的三大模組所對應的import 函式庫分別為gdi32.lib 和user32.lib
和kernel32.lib。
注:誰都知道,windows 95 是16/32 位的混合體,所以旗下除了32 位的gdi32.dll、
user32.dll 和kernel32.dll , 又有16 位的gdi.exe 、user.exe 和
krnl386.exe。32 位和16 位兩組dlls 之間以所謂的thunking layer 溝通。站在純
粹apis 使用者的立場,目前我們不必太搭理這個事實。
windows 發展至今,逐漸加上的一些新的api 函式(例如common dialog、toolhelp)
並不放在gdi 和user 和kernel 三大模組中,而是放在諸如commdlg.dll、
toolhelp.dll 之中。如果要使用這些apis,聯結時還得加上這些dlls 所對應的
import 函式庫,諸如comdlg32.lib 和th32.lib。
很快地,在稍後的範例程式¡ §generic¡ ¨ 的makefile 中,你就可以清楚看到聯結時期所需
的各式各樣函式庫(以及各種聯結器選項)。
需要什麼標頭檔案(.h)
所有windows 程式都必須包含windows.h。早期這是乙個巨大的標頭檔案,大約有5000
行左右,visual c++ 4.0 已把它切割為各個較小的檔案,但還以windows.h 總括之。
除非你十分清楚什麼api 動作需要什麼標頭檔案,否則為求便利,單單乙個windows.h
也就是了。
不過,windows.h 只照顧三大模組所提供的api 函式,如果你用到其它system dlls,
例如commdlg.dll 或mapi.dll 或tapi.dll 等等,就得包含對應的標頭檔案,例如
commdlg.h 或mapi.h 或tapi.h 等等。
6結」事實,但在聯結時期,聯結器仍需先為呼叫者(應用程式本身)準備一些適當的信
息,才能夠在執行時期順利「跳」到dll 執行。如果該api 所屬之函式庫尚未載入,
系統也才因此知道要先行載入該函式庫。這些適當的資訊放在所謂的「import 函式庫」
中。32 位windows 的三大模組所對應的import 函式庫分別為gdi32.lib 和user32.lib
和kernel32.lib。
注:誰都知道,windows 95 是16/32 位的混合體,所以旗下除了32 位的gdi32.dll、
user32.dll 和kernel32.dll , 又有16 位的gdi.exe 、user.exe 和
krnl386.exe。32 位和16 位兩組dlls 之間以所謂的thunking layer 溝通。站在純
粹apis 使用者的立場,目前我們不必太搭理這個事實。
windows 發展至今,逐漸加上的一些新的api 函式(例如common dialog、toolhelp)
並不放在gdi 和user 和kernel 三大模組中,而是放在諸如commdlg.dll、
toolhelp.dll 之中。如果要使用這些apis,聯結時還得加上這些dlls 所對應的
import 函式庫,諸如comdlg32.lib 和th32.lib。
很快地,在稍後的範例程式¡ §generic¡ ¨ 的makefile 中,你就可以清楚看到聯結時期所需
的各式各樣函式庫(以及各種聯結器選項)。
需要什麼標頭檔案(.h)
所有windows 程式都必須包含windows.h。早期這是乙個巨大的標頭檔案,大約有5000
行左右,visual c++ 4.0 已把它切割為各個較小的檔案,但還以windows.h 總括之。
除非你十分清楚什麼api 動作需要什麼標頭檔案,否則為求便利,單單乙個windows.h
也就是了。
不過,windows.h 只照顧三大模組所提供的api 函式,如果你用到其它system dlls,
例如commdlg.dll 或mapi.dll 或tapi.dll 等等,就得包含對應的標頭檔案,例如
commdlg.h 或mapi.h 或tapi.h 等等。
C開發win32程式
1,先建立乙個空的win32工程,再建立乙個c 原始檔到此工程 2,編輯原始檔 include 標頭檔案宣告 int winapi winmain hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icmdshow 主函式為...
Win32程式的建立流程
以前一直沒有認真學習過win32應用程式。現在進行簡單學習。先理解下win32程式的建立過程 主要分為4步 註冊視窗類別 建立視窗 訊息迴圈 編寫訊息處理函式 先看看入口函式 int winapi winmain hinstance hinstance,執行實體控制代碼,往往在其他windows函式...
win32視窗程式開發步驟詳解
1.程式進入點 windows 程式的進入點是winmain函式,它有四個引數,形式如下 int winapi winmain hinstance hinst,hinstance hprevinst,lpstr lpcmdline,int ncmdshow 引數說明 hinst 為當前例項控制代碼,...