掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ツリービューの全項目をクリア後に追加すると表示異常が起こる (ID:66202)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
開発環境は Windows XP Home SP2、VC++2003(SDK) です。 リソースでダイアログに1つのツリービューを貼り付けました。それ1つだけ。 最初にソースを載せます。 // ルート追加 static VOID pushItemRoot( HWND hTree, LPCTSTR lpString ) { TV_INSERTSTRUCT tree; ZeroMemory( &tree, sizeof(TV_INSERTSTRUCT) ); tree.hParent = TVI_ROOT; tree.hInsertAfter = TVI_LAST; tree.item.mask = TVIF_TEXT; tree.item.pszText = (LPTSTR)lpString; TreeView_InsertItem( hTree, &tree ); } // 全部クリア static VOID pushMenuClear( HWND hTree ) { if ( !TreeView_DeleteAllItems(hTree) ){ MessageBeep( MB_OK ); } } // ツリービューのテスト(プロシージャ) BOOL CALLBACK mainDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { static HWND hTree; switch ( uMsg ){ case WM_INITDIALOG: InitCommonControls(); hTree = GetDlgItem( hDlg, LID_TREEVIEW01 ); pushItemRoot( hTree, TEXT("あいうえお") ); pushItemRoot( hTree, TEXT("かきくけこ") ); pushItemRoot( hTree, TEXT("さしすせそ") ); pushItemRoot( hTree, TEXT("たちつてと") ); break; case WM_LBUTTONDOWN: pushItemRoot( hTree, TEXT("追加") ); break; case WM_RBUTTONDOWN: pushMenuClear( hTree ); break; case WM_CLOSE: EndDialog( hDlg, IDOK ); break; default:return FALSE; } return TRUE; } 上のソースをコンパイルしてプログラムを起動します。 すると最初に4つのアイテムが追加されます。 次にマウスの右クリックをすると全項目がクリアされます。 ここまでは正常です。 [質問内容] クリア後にマウスの左クリックで追加するとアイテムの文字列「追加」が上手く表示されません。 TreeView_GetCount() で調べるとちゃんと追加された個数が返されます。 だから追加処理は正常なのです。戻り値も含めて。 でも何も表示されないのです。 僕には原因が分かりません。 原因が分かる方いますか?教えて下さい。 お願いします。 ちなみにリースでは CONTROL "",LID_TREEVIEW01,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS | TVS_SHOWSELALWAYS | TVS_NOSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP,6,6,204,288 としています。 TVS_LINESATROOT をつけているのでこの部分だけしか表示されないのです。 TreeView_EditLabel() を使って編集状態にするとエディットボックスが現れ追加した文字列が 表示されます。フォーカスを移動して編集を確定すると内容は変更されますが文字列だけが 表示されません。いろいろと試行錯誤して子のアイテムを追加も表示されません。でも正常に 追加はされています。表示だけがまるで空白を登録したように表示されません。 原因が分かる方は教えて下さい。 お願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.