• ベストアンサー

ダイアログのコントロールじゃない場所のクリックを検出したい。

VC++6.0、Win32 APIでダイアログボックスを作っています。 ダイアログボックス上のラジオボタンでもリストビューでもエディットボックスでもなくて、 何にもないところをクリックしたときに、そのクリックを検出することはできますか。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★マウスのメッセージを処理すれば良い。 ・クライアント・エリア内でコントロール以外は  左ボタンは『WM_LBUTTONDOWN』、『WM_LBUTTONUP』、『WM_LBUTTONDBLCLK』  右ボタンは『WM_RBUTTONDOWN』、『WM_RBUTTONUP』、『WM_RBUTTONDBLCLK』  中ボタンは『WM_MBUTTONDOWN』、『WM_MBUTTONUP』、『WM_MBUTTONDBLCLK』 ・非クライアント・エリア内でコントロール以外は  左ボタンは『WM_NCLBUTTONDOWN』、『WM_NCLBUTTONUP』、『WM_NCLBUTTONDBLCLK』  右ボタンは『WM_NCRBUTTONDOWN』、『WM_NCRBUTTONUP』、『WM_NCRBUTTONDBLCLK』  中ボタンは『WM_NCMBUTTONDOWN』、『WM_NCMBUTTONUP』、『WM_NCMBUTTONDBLCLK』 ・マウスの移動は  『WM_MOUSEMOVE』、『WM_NCMOUSEMOVE』があります。 参考文献: ・http://www.wisdomsoft.jp/dev/api/windows/038→『マウスメッセージ』 ・http://www.wisdomsoft.jp/dev/api/windows/039→『マウスの移動を処理』 ・http://www.wisdomsoft.jp/dev/api/windows/040→『ダブルクリック』 ・http://www.wisdomsoft.jp/dev/api/windows/041→『非クライアントエリアのマウスメッセージ』 ・以上。

kenkenpo
質問者

お礼

私が考えているのと、非クライアントエリアは別のようです。 ありがとうございました。

関連するQ&A

  • 自作ダイアログボックス中のエディットボックスでCtrl+Aを使えるようにしたい。

    リソースエディタで作成したダイアログボックスの中のエディットボックスで、 Ctrl+Aで全範囲選択をしたいのですが実現方法が分かりません。 同様に、リストビューの選択行を「Delキー」で削除させる方法も教えていただきたいです。 (削除ボタンを作成し、その押下によって削除できるようにはなっています。) 環境は、VC++ 6.0、Win32 APIです。 よろしくお願い致します。

  • ダイアログ作成での質問

      VS.NET2003のWin32APIで作成しています。 ダイアログボックを使用してデータ入力および作成ができるようにしたいと考えています。 そこで、リスト状になっていてクリックするとコンボボックスになるにはどうしたらいいでしょうか? リスト状に数値入力も可能なのでエディット関係かなと思っているのですが。   ネットで探しているのですが中々見つからないのでここで質問をさせていただきました。   画像を載せました、こういったダイアログにするにはどうしたらいいでしょうか?    

  • エディットボックスの処理で画面がちらつきます。

    VC++ 6.0 Win32APIにてダイアログベースのプログラムを作成しております。 ダイアログに18個のエディットボックスを配置しておりますが、そのエディットボックスのテキストを SetDlgItemText()を使って全て空欄にすると(第3引数に””を指定)画面がちらつきます。 同ダイアログ内のリストコントロールがダブルクリックされた際のイベントを拾ってエディットボックスクリアの処理を実行しているのですが、ちらつきを抑える手法はありますでしょうか?

  • リストビューの選択状態を取得するメッセージはありますか?

    リストビューが選択状態(1行が青色や灰色の背景になる状態)にあって、エディットボックスが空欄では無いときに、 あるボタンを有効にするという処理をしたいと思っています。 リストビューが選択されていることを教えてくれるメッセージがあれば、教えてください。よろしくお願いします。 環境:Win32 API, VC++6.0

  • コモンダイアログコントロールの使い方

    お世話になっております。 VC++6.0でアプリ開発をしていますが、 コモンダイアログの使い方がわかりません。 ダイアログ上のボタンをクリックしたら 「ファイルを開く」のダイアログを表示させたいのですが。 ご回答よろしくお願いします。

  • ダイアログベースの再描画について

    現在VC++6.0、MFC、ダイアログベースでアプリケーションの作成を行っているのですが、長いことつまづいてしまっているので質問させていただきます。 もともとあるアプリケーションに機能を追加、ということを行っているのですが、リソースで作ったボタンとエディットボックスが、ダイアログの最小化や最大化を行うと再描画されずに消えてしまいます。しかし、元々作ってあったボタンやエディットボックスはそのまま正常にのこっています。このアプリケーションの作成者には連絡することができず、ネットでも情報を探しましたが、解決しません。これを解決するにはどういった修正が必要でしょうか? 知識不足のため説明不足や、説明に間違いがあるかもしれませんが、ご教授願えますと幸いです。

  • 別スレッドからメインダイアログのコントロールにアクセスする方法

    VC++2005 MFC WindowsXPを使用しています。 メインダイアログに作成したエディットボックスに フォーカスをセットしたいのですが、 別スレッドから行うにはどのようにすればよいのでしょうか? メインダイアログにあるボタンを押すと別スレッドの処理に入り、 その中でメインダイアログのコントロールを操作しようとしています。 //フォーカスをセット CWnd* MyEdit = ( CWnd* )this->GetDlgItem( IDC_EDIT1 ); MyEdit->SetFocus(); 宜しくお願い致します。

  • VC++のダイアログボックスに絵を描くには?

    VC++初心者なんですが、画像処理関係のプログラムをVC++で作っています。で、子ウィンドウに表示されている画像のRGBそれぞれのヒストグラムをダイアログボックスに表示したいのですが、ダイアログボックスに絵(グラフ)を描く方法がわかりません。どういう手順でやればいいですか?エディットボックスにGDIとかで絵を描くことは可能なんですか?またはピクチャーボックスですか?

  • カレンダーコントロールのダイアログボックス

    ACCESSでボタンをクリックすると、カレンダーコントロールのダイアログボックスが表示されて、日付が入力出来るようにしたいのですが... この方法で日付を入力するテキストボックスに共通で使用出来たらと考えています。 カレンダーコントロールのダイアログボックスの作成から分からないのでお願いします。

  • エディットボックスのカーソルが表示されない

    長いこと悩んでいますが、解決出来ないでいます。 お知恵を拝借したいと思います。 VC5.0, SDK, WinXPでの開発を行っています。 今、リストビューで直接書き込みをさせる為に、 リストビューのクリックされた位置にエディットボックスをかぶせて表示させてあたかも直接編集させているように見せています。 実際のエディットボックスの表示や書き込み等はうまく行っているのですが、表示したエディットボックスにSetFocusをしても、カーソルが表示される場合とされない場合が出てきています。 親画面を表示し、最初にリストビューをクリックした時のエディットボックスにはきちんとカーソルが表示されます。 しかし、2度目以降はまったくカーソルが表示されません。 ただ、フォーカスはあたっているのか、文字入力は正しく行われます。 また、エディットボックスでリターンキーを押されたタイミングでエディットボックスを破棄し、リストビューに文字列を反映させているのですが、このリターンキー押下後にエディットボックスを表示させた時はカーソルも表示されます。 エディットボックスの破棄には、上記リターンキーもしくはエディットボックスからフォーカスが無くなった時に行っているので、 この時の破棄のタイミング等の問題でカーソルが出たり出なかったりしているのだろうと色々調べているのですが、どうしても分かりません。 実際エディットボックスにフォーカスが当たっていればカーソルは自動的に出るものだと思っていたのですが、出ないという現象は何に問題があるのでしょうか? エディットボックス有効処理 Show( SW_SHOW ); BringWindowToTop( hwnd ); SetFocus( hwnd ); エディットボックス破棄(無効)処理 Show( SW_HIDE ); アドバイスを宜しくお願い致します。

専門家に質問してみよう