いつもお世話になっています。
VC++6.0
PlatfomrSDK
非MFC
の環境にてプログラムをしています。
現在リストビューにて、メニューから「新規アイテム」を選択した際に、リスト項目を追加し、同時
に項目のエディット(名前変更)を開始させるプログラムを作成しています。
手始めに、メニューから既存項目をエディットさせようと思い、いろいろ試しているのですが、うま
くいきません。
いろいろ調べて、
リストスタイルにLVS_EDITLABELSを指定し、WM_NOTIFYのLVN_BEGINLABELEDITなどの処理を加
え、最後に編集をしたいタイミングで ListView_EditLabel を呼ぶことでエディットできることが
わかり、早速実験で、
WM_NOTIFYのNM_DBLCLK(項目ダブルクリック)の処理
case NM_DBLCLK:
ListView_EditLabel( m_hView, 1 ); > 1は適当
break;
を書き加えたところ無事思惑通りに動きました。(どこかの項目をダブルクリックすると2番目の項
目のエディットが開始される)
同様にF2でも開始されるように
case LVN_KEYDOWN:
if( pNMVKD->wVKey == VK_F2 )
ListView_EditLabel( m_hView, 1 );
break;
も思惑通り動きました。
しかし、メニュー選択の処理のところに、ListView_EditLabel( m_hView, 1 );を書いても何も
反応しません。
case WM_COMMAND:
switch( LOWORD(wparam) )
{
case IDM_TEST:
ListView_EditLabel( m_hView, 1 );
break;
}
return 0;
原因がわからず困っています。
ListView_EditLabel( m_hView, 1 )
を
PosMessage( m_hView, LVM_EDITLABEL, 1, 0 );
に変えたり、プロシージャの戻り値を適当に変えたり(←バカw
いろいろやってみたのですが、まったく成果がありません。
呼び出すタイミングなど、なにかしらの不具合があるのでしょうか?
長々と読んでいただきありがとうございました。
よろしくおねがいします。
すいません自己解決です。
SetFocus( m_hView );
ListView_EditLabel( m_hView, 1 );
で正常に動きました。