クリップマスコット
以前、WindowsXpのコロかな?に、アクティブウィンドウにくっつくマスコットアプリを作っていました。
名前は、アクティブマスコットなどの名前は既にあったので、既出の名前と重ならないように、アクティブウィンドウにクリップするマスコットだから・・・ということで、クリップマスコットにしました。
で、時は流れて、いまやWindowsVistaの時代です(もう、出だしとしては遅いですが)
WindowsVistaになったときに、動作確認をしてみたのですが、コンテキストメニューがマスコットの位置ではなく、画面の左上に出てくるようになっていました。
たぶん、新しいコンパイラでビルドしなおせば、解決するだろうと高をくくって、特に何もせずにそのままにしていました。
#もう既に、java開発者になって久しいので(^^;
それで、昨日、勢いでVisual Studio 2008 Express Editionをゲットしてきて、それでリビルドかけてみました。
・・・ビルドエラー・・・orz
見てみると、コーディングエラーが何箇所かあります(^^;
型宣言をせずに変数を使っていたり(使い方はbool型でしたので影響はなかったようです)、castの使い方が間違っている・・・これは、C言語の書き方で、C++からするとcastが必要・・・ということみたいですが。
それからセキュリティ警告がたくさん(^^;
開発していた当時は、セキュリティなんて言葉が出てくることは無く、ぜんぜん気にしていませんでしたが、その後、特にメモリや文字列操作系のstrcpyなどの関数で、安全な関数に置き換える必要があるようです。
が、ここは警告なので無視。(ちゃんと、リソースのサイズは計算していますから(^^;)
で、ビルドを何とか通して動かしてみたものの、結局変わらずじまい。
もともと、クリップマスコットは、マスコットなのでタスクバーに名前が出てもらっては困ります。
それで、タスクバーに出ない作り方・・・非表示ウィンドウの子ウィンドウとして表示する方法をとっているのですが、コンテキストメニューの表示時に、タスクトレイからのメニュー表示と同じなので、親ウィンドウですべて処理をしていたのが問題になっているようです。
そう、WindowsVistaでは、メッセージ投稿時のマウス座標が、親ウィンドウの中の位置になってしまっているようなのです。
親ウィンドウは表示する必要が無いので、縦横どちらも0ピクセルで左上(0,0)に表示しているので、結局位置も左上のまま・・・なのかな?
なので、子ウィンドウのコンテキストウィンドウは、子ウィンドウで制御する必要があるみたいですね(^^;;
で、改造しようにも、もうちんぷんかんぷん・・・処理の構造がさっぱりなので、回収するにも大変な感じです。
コンテキストメニューの生成を関数化して、タスクトレイと子ウィンドウのどちらからも呼び出せるようにすればいいのかな?
まぁ、時間がかかりそうだということで・・・。
ちなみに、↓こんなのです。
上のは、WindowsVista+VisualStudio2008Expressでのリビルド版。
もともと、こちらで公開していて、でもWindowsXpではうまく背景が抜けず、変な感じになってしまっています(ノw;
#当初Xpで公開していたのに・・・。Sp2とかで振る舞いが変わったのかしら。
時間があったら、コンテキストメニューの表示も含めて、きちんと対応してあげたいのですが・・・WEBフレームワークごにょごにょ・・・orz
#本当は、v1.0版は、アニメーション対応!の予定だったのですが(^^;;
#なので、永遠のv0.9版・・・なのかも(死
あ・・・メールアドレス違ってるや(ノw≦;;
#後で変えておこうっと。
| 固定リンク
| コメント (0)
| トラックバック (0)
最近のコメント