タスクバーのアイコンにドラッグするとダイアログを表示する方法 – プログラミング – Home

タスクバーのアイコンにドラッグするとダ...
 
通知
すべてクリア

タスクバーのアイコンにドラッグするとダイアログを表示する方法


eight
 eight
(@eight)
ゲスト
結合: 20年前
投稿: 7
Topic starter  

こんにちわ。
タスクバーにアイコンを表示し、ドラッグ状態のマウスが
タスクバーアイコンに重なるとダイアログを表示して
そのダイアログにドロップするプログラムを作っています。

で、マウスがドラッグ状態かどうかを取得できずに困っています。
以下ソースです。

#define WM_TRYFORCUS WM_APP + 1

LRESULT CLINKB2Dlg::OnTrayForcus(WPARAM wParam, LPARAM lParam)
{
CString strwork;
POINT point;
::GetCursorPos(&point);

switch( lParam)
{
case WM_MOUSEMOVE:
        short mouseState = ::GetAsyncKeyState(VK_LBUTTON);
        if ( (mouseState & 0x8000) == 0x8000 )
        {
          ShowWindow(SW_SHOW);
        }
return 0L;
}

上記ソースでは、
タスクバーアイコンの上でマウス左ボタンを押してマウスを少し動かすと
ダイアログを表示できるのですが、
他の場所(例えばデスクトップ上)でマウスの左ボタンを押したまま
タスクバーアイコンの上にマウスを移動してもダイアログが表示できません。

ドラッグ状態の検知の仕方が悪いのか、
GetAsyncKeyStateの使い方が悪いのか、
タスクバーアイコンからのメッセージの受け取り方に問題があるのか、
色々と調べたのですがどうしても分かりませんでした。

どなたか助けて頂けないでしょうか。
宜しくお願いします。


引用解決済
トピックタグ
ぬふや
 ぬふや
(@ぬふや)
ゲスト
結合: 18年前
投稿: 34
 

WM_MOUSEMOVEは自分のウィンドウの上とかでないと送られないので別の方
法がいるはずです。

手っ取り早くタイマーを使って、画面端などにカーソルが有るときにウィンドウを表
示してしまうとかもありのような気がします。

ファイルなどをドラッグするのならばOLEのドラッグだと思います。
http://search.microsoft.com/results.aspx?mkt=ja-JP&setlang=ja-
JP&q=OLE+Drag
このあたりで。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました