NMHDR和NM TREEVIEW轉換問題

2021-05-09 23:27:43 字數 733 閱讀 5040

ctreectrl樹控制項中有乙個訊息響映函式如下:

void cctreectrldlg::onselchangedtree1(nmhdr* pnmhdr, lresult* presult)

為什麼nmhdr*型別可以強至轉換成nm_treeview*型別?這兩個型別根本就不一樣

nmhdr是如下結構,乙個視窗控制代碼和兩個uint型別的結構體.

typedef struct tagnmhdr

nmhdr;

而nm_treeview如下結構

typedef struct tagnmtreeviewa nmtreeviewa, far *lpnmtreeviewa;

回答:1.

windows 傳的就是nmtreeview* 你放心吧.

為什麼能轉換:

nmhdr 結構在 nmtreeview 的開頭.

所以nmhdr的那些成員在nmtreeview中具有相同的位置. 所以可以通用:)

你可以想像 nmtreeview 是nmhdr 的子類

windows 是故意的 就想讓它這樣.

2.它們都是指向結構的指標。

nm_treeview* pnmtreeview = (nm_treeview*)pnmhdr;

pnmtreeview 指向了和pnmhdr相同的位址。

你在呼叫pnmtreeview 時呼叫的也是pnmhdr的內容,只不過是按照nm_treeview的結構格式化了。

MFC中的NMHDR結構體和NMUPDOWN結構體

建立spin控制項,建立udn deltapos乙個訊息函式後 1 void cspindlg ondeltaposspin1 nmhdr pnmhdr,lresult presult 23 問題1 引數nmhdr pnmhdr,lresult presult幹嘛用?nmhdr結構體,檢視msdn,...

和 區別和聯絡, 和 區別和聯絡

和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...

rpx和樣式和class和flex

5 style 靜態的樣式統一寫到 class 中。style 接收動態的樣式,在執行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。例 6 class 用於指定樣式規則,其屬性值是樣式規則中類選擇器名 樣式類名 的集合,樣式類名不需要帶上.樣式類名之間用空格分隔。關於f...