編輯本詞條缺少
編輯吧!
drawitemstruct結構
[1]為需要自繪的控制項或者選單項提供了必要的資訊。在需要繪製的控制項或者選單項對應的
wm_drawitem訊息函式中得到乙個指向該結構的
指標。該結構是由收到的wm_drawitem訊息的
lparam引數提供的,這個引數是指向這個結構的指標。
外文名
drawitemstruct
目 的
提供了必要的資訊
指 向
這個結構的指標
例 子
在vb中應用
1例子:
2結構定義
▪結構成員:
▪ctltype :
▪ctlid:
▪itemid:
▪itemaction:
▪itemstate:
▪hwnditem:
▪hdc:
▪rcitem:
▪itemdata:
編輯 virtual void drawitem(lpdrawitemstruct lpdrawitemstruct); //(.h中宣告)
void ccolorbutton::drawitem(lpdrawitemstruct lpdrawitemstruct) //(.cpp中定義)
這裡lpdrawitemstruct即指向drawitemstruct
結構體的指標。
對於drawitemstruct結構
在vb中應用時,由於
lparam引數提供的是指向drawitemstruct結構的指標,因此,我們需要用
copymemory將指標複製到乙個宣告為drawitemstruct結構型別的變數中,詳細請參見
[2]
編輯 typedef struct tagdrawitemstruct drawitemstruct, near *pdrawitemstruct, far *lpdrawitemstruct
上述的結構中的每個成員的具體含義,用途如下:
指定了控制項的型別,其取值如下表所示。
常數名稱
取值
含義
odt_button
4
按鈕控制項
odt_combobox
3
組合框控制項
odt_listbox
2
列表框控制項
odt_listview
102
列表檢視控制項
odt_menu
1
選單項
odt_static
5
靜態文字控制項
odt_tab
101
tab控制項
經實測這些常量值是十進位制的。
指定了自繪控制項的id值,而對於選單項則不需要使用該成員
表示選單項id,也可以表示
列表框或者
組合框中某項的索引值。對於乙個空的列表框或組合框,該成員的值為–1。這時應用程式只繪製焦點矩形(該矩形的座標由rcitem 成員給出)雖然此時控制項中沒有需要顯示的項,但是繪製焦點矩形還是很有必要的,因為這樣做能夠提示使用者該控制項是否具有
輸入焦點。當然也可以設定itemaction 成員為合適值,使得無需繪製焦點。
指定繪製行為,其取值可以為下表中所示值的乙個或者多個的聯合。
oda_drawentire=h1:當整個控制項都需要被繪製時,設定該值
oda_focus=h4:如果控制項需要在獲得或失去焦點時被繪製,則設定該值。此時應該檢查itemstate成員,以確定控制項是否具有
輸入焦點。
oda_select=h2
如果控制項需要在選中狀態改變時被繪製,則設定該值。此時應該檢查itemstate 成員,以確定控制項是否處於選中狀態。
指定了當前繪製操作完成後,所繪項的可見狀態。例如,如果選單項應該被灰色顯示,則可以指定ods_grayed
狀態標誌。其取值可以為下表中所示值的乙個或者多個的聯合。
ods_checked=h8:如果選單項將被選中,則可設定該值。該值只對選單項有用。
ods_comboboxedit=h1000:在自繪
組合框控制項中只繪製選擇區域。
ods_default=h20:預設值。
ods_disabled=h4:如果控制項將被禁止,則設定該值。
ods_focus=h10:如果控制項需要輸入焦點,則設定該值。
ods_grayed=h2:如果控制項需要被灰色顯示,則設定該值。該值只在繪製選單時使用。
ods_hotlight=h40:windows 98/me, windows 2000/xp: 如果
滑鼠指標位於控制項之上,則設定該值,這時控制項會顯示高亮顏色。
ods_inactive=h80:windows 98/me, windows 2000/xp: 表示沒有啟用的選單項。
ods_noaccel=h100:windows 2000/xp: 控制項是否有快速鍵盤。
ods_nofocusrect=h200:windows 2000/xp: 不繪製捕獲焦點的效果。
ods_selected=h1:選中的選單項。
指定了 組合框、
列表框和按鈕等自繪控制項的
視窗控制代碼;如果自繪的物件時選單項,則表示包含該選單項的選單控制代碼。
指定了繪製操作所使用的裝置環境。
指定了將被繪製的矩形區域。這個矩形區域就是上面hdc的作用範圍。系統會自動裁剪
組合框、
列表框或按鈕等控制項的自繪製區域以外的部分。也就是說rcitem中的座標點(0,0)指的就是控制項的左上角。但是系統不裁剪選單項,所以在繪製選單項的時候,必須先通過一定的換算得到該選單項的位置,以保證繪製操作在我們希望的區域中進行。
對於 選單項,該成員的取值可以是由
cmenu::
insertmenu或者cmenu::
modifymenu等函式傳遞給選單的值。
對於 列表框
或 組合框
,該成員的值可以為由
combobox::
addstring、
ccombobox::insertstring、
clistbox::addstring或者clistbox::insertstring等傳遞給控制項的值。
如果ctltype 的取值是odt_button或者odt_static, itemdata的取值為0。
自增「 」和自減「 」
int x 10 int j j x 看這邊 system.out.println x int x 10 int j x x 看這邊 system.out.println x 第乙個會輸出11,第二個會輸出10。這是今天偶然看到的,而這個解釋聽起來比較容易理解 x 是乙個表示式,它的值是x,在這個表...
正解自增 自減
許多語言都有自增 自減運算子。下面以c語言為例,將此類運算子的運算特徵正解一下 一 先看字尾 b 2 a b 計算過程 1.先計算表示式b 的值,結果為2 即將b自增前的值作為表示式b 的值 2.再將表示式b 的值賦值給a,即a得到2 3.最後將b自增後的值賦值給b,即b為3 注意 在此過程中,沒有...
MySQL 自聯結 自連線
例如想於下方表中找出與在 愛藝奇 公司的客戶同名的顧客。第一步 找出在 愛藝奇 的客戶的姓名,第二步 從全表中去查詢姓名與第一步查詢出來一樣的客戶 where cust name in in 不能寫成 不然容易報錯。因為子查詢有可能返回的是多條記錄。這跟子查詢只能返回單列無關,單列與單行。子查詢 s...