2012-02-20 9 views
0

編集コントロールで「LBUTTONDOWN」を選択すると、テキストボックスが空になります。
テキストボックスをどのように空にすることができますか知っていますが、このイベントがどこに追加されているのかわかりません。コントロールを編集するLBtnMouseDownイベントを追加するにはどうすればいいですか?

マイダイアログ機能:私はあなたが本当にしたいことを疑うことがちょうどボタンダウンイベントではなく、入力フォーカスを受け取るコントロールに対応するためである

INT CALLBACK dlgProc(HWND hwnd, unsigned int msg, WPARAM wp, LPARAM lp){ 
    switch(msg){ 
    case WM_INITDIALOG: 
     SetDlgItemText(hwnd, IDC_EDIT1, L"Please enter the txt"); 
     break; 
    case WM_COMMAND: 
     switch(LOWORD(wp)){ 
     case BTN_EXIT: 
      DestroyWindow(hwnd); 
      break; 
     case IDC_BUTTON1: 
      int len = GetWindowTextLength(GetDlgItem(hwnd,IDC_EDIT1)); 
      if(len > 0){ 
       TCHAR *buff = new TCHAR[len+1]; 
       GetDlgItemText(hwnd, IDC_EDIT1, buff, len+1); 
       MessageBox(NULL,buff,L"Error message",MB_OK); 
       delete buff; 
      } 
      break; 
     } 
     break; 
    case WM_CLOSE: 
     DestroyWindow(hwnd); 
     break; 
    case WM_DESTROY: 
     PostQuitMessage(0); 
     break; 
    default: 
     return false; 
    } 
    return true; 
} 

答えて

2

。たとえば、ユーザーがマウスボタンを使用してエディットコントロールの入力フォーカスを設定した後、入力した後、エディットコントロールを再度クリックすると、現在フォーカスが設定されているとします。あなたは、おそらくユーザーのテキストをクリアしたくないでしょう。あるいは、キーボードを使用して入力フォーカスを設定することもできます。 TAB。繰り返しますが、内容をクリアするアクションが必要だと思います。

私の理解が正しいとすれば、ダイアログプロシージャのWM_COMMANDハンドラにEN_SETFOCUSの通知を聞いてください。これは、マウスを使用するかキーボードを使用するかによって、ユーザーが編集コントロールにどのようにフォーカスを移しても、発生します。あなただけWM_COMMANDであなたのswitch文を拡張する必要があり、あなたのコードで

case IDC_EDIT1: 
    if(HIWORD(wParam)==EN_SETFOCUS) 
    { 
     SetDlgItemText(hwnd, IDC_EDIT1, L""); 
    } 
    break; 
+0

あなたは、簡単な例を記述するか、私のコードを編集して、新しいコードを入力してくださいすることができます。 –

関連する問題