案例30-F5B42蔡貴蓮

4 views
Skip to first unread message

075b42蔡貴蓮 064-kp, 064e-t, 07f5-kp, 07f5b

unread,
Sep 14, 2007, 7:24:07 AM9/14/07
to 高二VB論壇
亞SIR,我要案例30

075b42蔡貴蓮 064-kp, 064e-t, 07f5-kp, 07f5b

unread,
Sep 23, 2007, 9:31:24 AM9/23/07
to 高二VB論壇

5個問題:
1.如何在vb中建一個標準的EXE工程?

2.什麼是API函數?

3.請問Private Declare Function GetWindowText
Lib"user32"Alias"GetWindowTextA'' ( ByVal hwnd As long ,ByVal
lpString As String, ByVal cch As Long) As long 這句是什麼意思?

4.請問On Error GoTo errl這句是什麼意思?

5.請問什麼是句柄?有咩作用?
by 5b42蔡貴蓮


imsim cheong

unread,
Sep 30, 2007, 4:25:55 AM9/30/07
to KP...@googlegroups.com


在 2007/9/23,075b42蔡貴蓮 064-kp, 064e-t, 07f5-kp, 07f5b <yokomalag...@hotmail.com> 撰寫:
 
respond:
2.什麼是API函數?
 
大家可能在許多書上看到過API的英文全稱 (Application Programming Interface)WIN32 API也就是MicrosoftWindows 32位元平臺的應用程式編程介面。對這個定義的理解,需要追溯到作業系統的發展歷史上,當WINDOWS作業系統開始佔據主導地位的時候,開發 WINDOWS平臺下的應用程式成為人們的需要。而在WINDOWS程式設計領域處於發展的初期,WINDOWS程式師所能使用的編程工具唯有API函數,這些函數是WINDOWS提供給應用程式與作業系統的介面,他們猶如 "積木塊"一樣,可以搭建出各種介面豐富,功能靈活的應用程式。所以可以認為API函數是構築整個WINDOWS框架的基石,在它的下面是WINDOWS的作業系統核心,而它的上面則是所有的華麗的 WINDOWS應用程式。

但是,那時的WINDOWS程式開發還是比較複雜的工作,程式師必須熟記一大堆常用的API函數,而且還得對WINDOWS作業系統有深入的瞭解。然而隨著軟體技術的不斷發展,在 WINDOWS平臺上出現了很多優秀的視覺化編程環境,程式師可以採用"即見即所得"的編程方式來開發具有精美用戶介面和功能強大的應用程式。

這些優秀視覺化編程環境操作簡單、介面友好(諸如VB VC++DELPHI等),在這些工具中提供了大量的類庫和各種控制項,它們替代了API的神秘功能,事實上這些類庫和控制項都是構架在WIN32 API函數基礎之上的,是封裝了的API函數的集合。它們把常用的 API函數的組合在一起成為一個控制項或類庫,並賦予其方便的使用方法,所以極大的加速了WINDOWS應用程式開發的過程。有了這些控制項和類庫,程式師便可以把主要精力放在程式整體功能的設計上,而不必過於關注技術細節。


實際上如果我們要開發出更靈活、更實用、更具效率的應用程式,必然要涉及到直接使用 API函數,雖然類庫和控制項使應用程式的開發簡單的多,但它們只提供WINDOWS的一般功能,對於比較複雜和特殊的功能來說,使用類庫和控制項是非常難以實現的,這時就需要採用API函數來實現。

這也是API函數使用的場合,所以我們對待 API函數不必刻來研究每一個函數的用法,那也是不現實的(能用的到的API函數有幾千個呢)。正如某位大蝦所說:API不要去學,在需要的時候去查API幫助就足夠了。

By 張艷嬋

 

064D28湯達光

unread,
Sep 30, 2007, 11:52:45 PM9/30/07
to 高二VB論壇
1....應該係好似平時咁新增標準執行檔...只係大陸講法唔同

imsim cheong

unread,
Oct 1, 2007, 12:27:46 AM10/1/07
to KP...@googlegroups.com
respond
5.請問什麼是句柄?有咩作用?
句柄即控制碼.                           
控制碼是一個 32 位元的整數,實際上是 WINDOWS 在記憶體中維護的一個物件(視窗等)記憶體物理位址列表的整數索引。因為 WINDOWS 的記憶體管理經常會將當前空閒物件的記憶體釋放掉,當需要時訪問再重新提交到實體記憶體。所以物件的物理位址是變化的,不允許程式直接通過物理位址來訪問物件。程式將想訪問的物件的控制碼傳遞給系統,系統根據控制碼檢索自己維護的物件列表就能知道程式想訪問的物件及其物理位址了。

一個整型值,用來唯一標識系統資源。

一個 Windows 內核對象創建時系統回返回一描述該物件的內核資料結構,以後訪問該物件時以此資料結構為標識。但 SDK 每次調用時用它作參數會加大開銷,故系統為每個進程(不是線程)創建一陣列,每個元素指向一個物件的資料結構,故可通過陣列的下標(即 HANDLE ) 來標識此物件。從某種意義上講一個控制碼可認為是一個二級指標。

by 張艷嬋



075b48蘇淑儀

unread,
Oct 2, 2007, 1:47:01 AM10/2/07
to 高二VB論壇
> 4.請問On Error GoTo errl這句是什麼意思?
當錯誤時,跳去errl這一行

這裡GoTo() 的作用是
指程式運行到這裡時,跳去()

molly...@yahoo.com.hk

unread,
Oct 10, 2007, 8:11:26 AM10/10/07
to 高二VB論壇
回覆 5.請問什麼是句柄?有咩作用?

在Windows環境中,句柄是用來標識專案的,這些專案包括:模組(module)、任務(task)、實例(instance)、檔(file)、
記憶體塊(block of memory)、功能表(menu)、控制(control)、字體(font)、資源(resource),包括圖示
(icon),游標(cursor),字串(string)等、GDI對象(GDI object),包括點陣圖(bitmap),畫刷
(brush),元檔(metafile),調色板(palette),畫筆(pen),區域(region),以及設備描述表(device
context)。
句柄是WONDOWS用來標識被應用程式所建立或使用的物件的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程式實例,視窗,控制,點陣
圖,GDI物件等等。WINDOWS句柄有點象C語言中的檔句柄。
從上面的兩個定義中我們可以看到,句柄實際上是一個識別字,是用來標識物件或者專案的,句柄是一個 32 位元的正整
數,Microsoft&reg; Windows&reg; 用它來識別表單或其他物件,例如字體或點陣圖。應用程式幾乎總是通過調用一個
WINDOWS函數來獲得一個句柄,之後其他的WINDOWS函數就可以使用這個句柄,以引用相應的物件。在WINDOWS編程中會用到大量的句柄,比
如:HINSTANCE(實例句柄),HBITMAP(點陣圖句柄),HDC(設備描述表句柄),HICON(圖示句柄)等等,這當中還有一個通用的句
柄HANDLE。

一個WINDOWS應用程式可以用不同的方法獲得一個特定項的句柄。許多API函數,諸如
CreateWindow,GlobalAlloc,OpenFile的返回值都是一個句柄值。另外,WINDOWS也能通過應用程式的引出函數將一個
句柄作為參數傳送給應用程式,應用程式一旦獲得了一個確定項的句柄,便可在WINDOWS環境下的任何地方對這個句柄進行操作。

說的確切一點,句柄實際上是一種指向某種資源的指標,但與指標又有所不同:指標對應著一個資料在記憶體中的位址,得到了指標就可以自由地修改該
資料。Windows並不希望一般程式修改其內部資料結構,因為這樣太不安全。所以Windows給每個使用GlobalAlloc等函數聲明的記憶體
區域指定一個句柄(本質上仍是一個指標,但不要直接操作它),平時你只是在調用API函數時利用這個句柄來說明要操作哪段記憶體。當你需要對某個記憶體
進行直接操作時,可以使用GlobalLock鎖住這段記憶體並獲得指標來直接進行操作。

"句柄"(handle),handle的本意是把柄,把手的意思。是你與作業系統打交道的東西。
我們編程的時候想要操縱一個視窗,那我們就必須"抓住它的把柄",只有這樣,我們才能改變它的屬性,改變它的式樣,甚至銷毀它。
句柄是一個能相互區別的號碼,但與我們普通的ID號又有區別,普通的ID號是可以由程式師自己定義的,而句柄不行,它是物件生成時系統指定的,是為了區
別系統中存在的各個物件,這個句柄不是由程式師賦給的。實際應用中,最常用的就是檔句柄和視窗句柄。例如,視窗句柄的值是一個長整數,每個表單都用一個
句柄來表示。所以句柄是不會重複的,很多的函數都會用到表單的句柄。

by f5a25陳晶


On 9月23日, 下午9時31分, 075b42蔡貴蓮 064-kp, 064e-t, 07f5-kp, 07f5b

Reply all
Reply to author
Forward
0 new messages