出處:http://blog.csdn.net/slowgrace/archive/2009/04/15/4076404.aspx
1、sendmessage
向treeview控制項傳送訊息通常要用api的sendmessge函式,這需要在標準模組裡新增宣告如下:
'api宣告
public
declare
function
sendmessage lib
"user32
"alias
"sendmessagea
"(byval hwnd
aslong
, byval wmsg
aslong
, byval wparam
aslong
, lparam
asany)
aslong
public
declare
function
sendmessagelong lib
"user32
"alias
"sendmessagea
"(byval hwnd
aslong
, byval wmsg
aslong
, byval wparam
aslong
, byval lparam
aslong
) as
long
這上面兩個宣告,區別只在最後乙個引數。tiger_zhao
說,前一種是自動取位址,通常對應指標型別的引數。後一種直接傳值,通常對應非指標型別的引數。通常,如果msdn 的引數型別有*,就用前一種。而後一種,實際上可以對應於下面這種呼叫: call sendmessage(htvw, tvm_expand, tve_expand, byval hitem)。在這篇文章裡有乙個具體的例子。
2、獲得treeview node對應的hitem
發訊息時,常常需要提供的引數之一是treeview node對應的hitem。可以像下面這樣獲得:
private
function
gethtreeitem(byval nodx
asmscomctllib.node, trex
asmscomctllib.treeview)
aslong
nodx.selected
=true
gethtreeitem
=sendmessage(trex.hwnd, tvm_getnextitem, tvgn_caret, 0)
end function
不過,上面的方法中要改變treeview的當前節點。如果不希望改變當前節點的話,可以參考這篇文章裡的辦法:http://blog.csdn.net/slowgrace/archive/2009/04/16/4083667.aspx
3、向treeview傳送訊息使expand事件發生
call sendmessage(trex.hwnd, tvm_expand, tve_expand, byval gethtreeitem(nodx, trex))
4、向treeview傳送訊息使nodeclick事件發生
在這個帖子裡http://blog.csdn.net/slowgrace/archive/2009/01/14/3772557.aspx,我嘗試了發nm_click通知訊息的辦法,但是不能激發nodeclick事件。
解決的辦法是找到節點的座標,向指定座標傳送滑鼠down和up訊息,參見這篇文章http://blog.csdn.net/slowgrace/archive/2009/04/16/4084299.aspx。不過,這個辦法是投遞訊息,如果需要直接傳送訊息那種效果,暫時還沒找到什麼好辦法。
5、一些常用的工具
spy++可用來實時觀察視窗控制代碼和訊息。apiviewer可用來幫你生成用於vb的api函式宣告、型別宣告、常量宣告。
6、了解和使用api訊息的方法
在http://msdn.microsoft.com/en-us/library/cc656648(vs.85).aspx裡有所有的treeview控制項相關訊息。一般在訊息的說明裡會以**的形式說明相關的引數。**分成兩列,左列是引數列表,右列是注釋。比如像下面這句:
(lparam) lparam
// = (lparam) (htreeitem) hitem
tiger_zhao
解釋說,它說明這個名為lparam的引數的用法。它的型別是(lparam),所以右邊的注釋首先有個(lparam),這是為了與引數型別匹配進行的強制型別轉換,不用管(在vb 中就是long);而(htreeitem) 說明這個引數期待的是乙個控制代碼hitem,控制代碼在vb中也是long。
7、一些常用到的常數
利用API函式獲取系統資訊
我們所編寫的每乙個程式,都會有乙個執行環境的最低需求。如何獲取使用者機器的配置資訊呢?其實,我們可以利用api函式輕鬆實現。我們利用visual c 嚮導生成乙個單文件介面的視窗程式框架。生成乙個新的對話方塊,這個對話方塊用於顯示我們所取得的機器的配置資訊。為這個對話方塊生成乙個新類,命名為csys...
c 之利用API函式實現動畫窗體
這裡主要利用api函式animate window實現窗體左右,上下,擴充套件,淡入滑動或滾動動畫效果,步驟如下 1.新建窗體,使用2個groupbox控制項。2.在控制項1中新增2個radiobutton控制項,並設定text分別為 滾動窗體 滑動窗體 並使前者checked設定為true。3.在...
winform利用API函式獲取系統的資訊
api函式是構築windows應用程式的基石,是windows程式設計的必備利器。每一種windows應用程式開發工具都提供了間接或直接呼叫了windows api函式的方法,或者是呼叫windows api函式的介面,也就是說具備呼叫動態連線庫的能力。visual c 和其它開發工具一樣也能夠呼叫...