2017-02-13 2 views
1

TreeView_SetItemを使用してlParamを設定しようとしていますが、機能しません。次のテストコードでは、TreeView_SetItemを設定した後、lParamが変更されていないことを示すためにTreeView_GetItemを使用しています。TreeView_SetItemを使用してlParamを変更するにはどうすればよいですか?

targetItemは、以前にHTREEITEMに設定されていました。 TreeView_SetItemTreeView_GetItemの両方が真を返すのでエラーは発生しません。

// targetitem has been set to an HTREEITEM which has an lParam equal to 1. 
// I want to change it to 17 
// 
TVITEM tvItem = { 0 }; 
tvItem.mask = TVIF_PARAM | TVIF_HANDLE; 
tvItem.hItem = targetItem; 
tvItem.lParam = (LPARAM)17; 
bool test1 = TreeView_SetItem(hWnd, targetItem, &tvItem); // returns true 

TVITEM tvi = { 0 }; 
tvi.mask = TVIF_PARAM | TVIF_HANDLE; 
tvi.hItem = targetItem; 
bool test2 = TreeView_GetItem(hWnd, &tvi); // returns true 
// 
// tvi.lParam is unchanged after setting (still = 1, expecting 17) 
+2

野生の推測: 'tvItem.mask'は' 'TreeView_SetItem'呼んでTVIF_HANDLE'を含むべきではありませんか? – IInspectable

+0

「TVIF_HANDLE」を追加してもまだ動作しません。コードを更新しました。 – poby

+1

'hWnd'は実際にはツリーではなく親ダイアログのハンドルですか? –

答えて

1

見つけた。 TreeView_SetItemには2つのパラメータしかないはずです。なぜそれがエラーを投げなかったのか分かりません。

bool test1 = TreeView_SetItem(hWnd, &tvItem);

関連する問題