• 締切済み

ダイアログのテキストにマウスカーソルが乗ったときの処理

MFC(VC++6.0)のダイアログベースでプログラムを製作していますが、 そのテキストにマウスカーソルが乗ったときに処理をさせたいです。 そして、マウスカーソルがテキストから離れたときにも処理をさせたいです。 どういうメッセージが送られてくるのかが知りたいので、 ご存知の方、ご教授お願いします。 わかりやすく言うと、ダイナミックHTMLの OnMouseOverとOnMouseOutみたいな処理をさせたいのです。

  • jun_l
  • お礼率100% (1/1)

みんなの回答

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

ダイアログで、メッセージループを作成して、メッセージループないで、『WM_MOUSEMOVE』をサーチして、メッセージループのパラメータで、現在位置が取得出来るので、その現在位置から、コントロールを調べれば出来ます(GetCaptureで、マウスをキャプチャしているMOOを調べる必要もありますね)  また、どういったメッセージが送られてくるのか調べるだけでしたら、VC++の中のツールでスパイって奴があるので、これでメッセージを調べる事が出来ます。

jun_l
質問者

お礼

教えていただいたことを参考にいろいろやってみます。 ありがとうございました。

関連するQ&A

  • ダイアログベースのウィンドウメッセージについて

    Win2kのVC++6.0 MFC ダイアログベースでのウィンドウメッセージ処理で困っています。 OnCharがダイアログでは認識できません。ウィンドウでは認識できます。 何か特別な処理が必要なのでしょうか?

  • スレッド処理からダイアログを表示するには?

    Windows XPとVC++ 6.0で 時間のかかる大量の計算をするプログラムを作っています。 計算部分はスレッド処理にして 進捗ダイアログ(CDialogにCProgressCtrlを貼り付けたもの) を表示します。 ・CWinAppのInitInstanceで計算処理開始(AfxBeginThread) ・計算処理内で進捗ダイアログをCreate ・計算の進み具合によって進捗ダイアログのプログレスバーを更新 上記の流れではうまくいっていたのですが 以下のように変更したところ、進捗ダイアログをCreateするところで プログラムが応答なしになってしまうようになりました。 ・メインダイアログ(モーダル) ・メインダイアログのAボタンクリックでダイアログAを開く(モーダル) ・ダイアログAの実行ボタンクリックで計算処理開始(AfxBeginThread) ・計算処理内で進捗ダイアログをCreate ・計算の進み具合によって進捗ダイアログのプログレスバーを更新 MFC Wizardでダイアログベースで作成、MFCの共有DLLを使用しています。 モーダルダイアログ→スレッド→CDialog.Createに 制限があったりするのでしょうか。 どうかご教授ください。

  • ダイアログでのDragDropでマウスカーソルの形状について

    こんにちは。tadkoro1です。 ダイアログボックス上でDragDrop(非MFC)の処理を行っています。 エクスプローラからファイルを選択し、ダイアログに向かってマウスカーソルを進めます。 ダイアログ内に入った時は、マウスカーソルがドロップ禁止の形をしていますが、ファイルを受け取るテキストボックスに入った時点でドロップ可能の形(矢印と"+")に変わります。 ドロップせずにテキストボックスの外に移動させても、ダイアログ上では、ドロップ可能の形(矢印と"+")のままですが、ドロップ禁止の形に戻したいです。 以下の様にコーディングしています。 (1).DropTargetの登録はダイアログのハンドルを渡しています。 ※DropTargetの登録処理 RegisterDragDrop(hDlg, g_pDropTarget); (2).DrapEnterとDragOver処理で、マウス座標ptを元に対象のウィンドウハンドルとテキストボックスのIDを求めます。 IDがテキストボックスのものでなければ、pdwEffectにDROPEFFECT_NONEをセットします。(これでカーソルが戻るはずだと思いますが) ※DragOver関数の内容 *pdwEffect = DROPEFFECT_NONE; //初期値を設定 point.x = pt.x; point.y = pt.y; ScreenToClient(hDlg, &point); hWnd = ChildWindowFromPointEx(hDlg, point, CWP_ALL); id = GetWindowLong(hWnd, GWL_ID); switch(id) { case IDC_EDIT1: //対象ウィンドウのIDです // エクスプローラからのドラッグをチェック fe.cfFormat = CF_HDROP; fe.ptd = NULL; fe.dwAspect = NULL; fe.lindex = NULL; fe.tymed = TYMED_HGLOBAL; hr = m_pDataObject->QueryGetData(&fe); if (hr == S_OK) { pdwEffect = DROPEFFECT_COPY; return(S_OK); } } return(S_OK); } 何かよい方法がありましたらご教授をお願いします。

  • ダイアログ画面全体をマウスで動かせるようにするには

    VC++、MFC、WindowsXPです。 現在の状況としてはは ダイアログベースによる作成。 ダイアログにオーナー描画でビットマップを貼り付けている。 という感じです。 普通ウィンドウのタイトルバーをマウスで押してウィンドウの位置を動かしますが、たまに画面のどこを押しても動かせるようなウィンドウがありますが、あれは一体どうやっているのでしょうか? よろしくお願いします。

  • onmouseoverで、マウスカーソルの位置を基点(左上)として、別

    onmouseoverで、マウスカーソルの位置を基点(左上)として、別ウインドウを開きたい。 テキストの上にマウスカーソルが重なった(onmouseover)とき、 そのマウスカーソルの位置を左上として、別ウインドウをひらきたいのですが、 やり方がわかりません。 どなたかご教授願います。 よろしくお願いします。 ↓(こんな感じです)=============================== onmouseover="mywin=window.open('aaa.jpg','','width=300,height=250,top=???,left=???;')" ↑(こんな感じです)===============================  

  • VC++2008にて、画面の動的変更処理について

    現在VC++2008のMFCにて開発を行っております。 ダイアログのテキストボックスAの値を変更し、 カーソルが移動した際に 他のテキストボックスBの値を、Aの値により処理がかかる のような処理は無理なのでしょうか? やはり、ボタン押下でしか画面の更新は無理なのでしょうか? ご教授頂ければ幸いです。

  • VC++ スタティックテクスト(Static Text)をダイアログ生成時に動的に変更したい

    Win2K + VC++6.0 でダイアログベースプログラムを作っています. ステティックテキスト(Static Text)をダイアログボックスを生成するときにコンストラクター(Constructor)で動的にテキストを割り当てて出力したいですがよく分かりません.教えてください.

  • MFC ダイアログ上のID取得について

    VC++6.0 MFC ダイアログベースで開発しています。 リソースエディタで配置したダイアログ上にある全てのコントロール(ボタン、テキスト等)IDを取得する方法はありませんか? よろしくお願いします。

  • マウスカーソルの変更

    現在VC++6.0でプログラミングを行っています。 プログラム動作としてはマウス左クリックである動作を行います。しかし都合上マウスのカーソル表示を消したいと思っています。 どなたか教えていただけないでしょうか? マウスに関しての設定はウィンドウズでもできるので、プログラミングでなくても結構です。 プログラミングに関しては素人なので初歩的な質問かもしれませんがよろしくお願い致します。

  • ダイアログベースでの様々なフォントのスタティックテキストの貼り付け

    お世話になります。 現在MFCのダイアログベースアプリケーションを作成しており、ダイアログ上に大小さまざまフォントのスタティックテキストを貼り付けています。 さまざまフォントがあるということは、それだけスタティックテキストに割り当てるCFontも多数作らなければならないと思います。 そこで質問なのですが、 この大小さまざまな(約5種類ほど)のフォントのスタティックテキストを、複数のダイアログで貼り付けようと思っているのですが、その際にダイアログ毎にメンバ変数としてCFontを5種類定義するのと、5種類のサイズ用のCStaticのクラスを作成し、それらを複数のダイアログに貼り付けるのとどちらがよいでしょうか? クラスをむやみに増やすのもプログラムが見づらくなる気もしますし、ダイアログ毎にその都度CFontをCreateFontするのも面倒かなと思い、質問させて頂きました。 ご意見をよろしくお願い致します。