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...