2007年05月01日
川俣晶の縁側ソフトウェアその他開発日誌total 8558 count

aimemon Version 0.6・枠が残る等の問題を解消

Written By: 川俣 晶連絡先

 超難物だったaimemonのバグがやっと取れました。

 これで安定してくれると嬉しいなぁ……。

 以下、修正点を説明します。

フォアグラウンド ウィンドウが存在しない時は枠無しと判定させる §

 実は大きく誤解していました。

 どのような状況でも、フォアグラウンド ウィンドウは存在するのが基本であって、それが存在しないのはフォアグラウンド ウィンドウが切り替わる間の短い一瞬でしかないと思っていました。そのため、フォアグラウンド ウィンドウが見つからないときは、それが見つかるまで待つように組んでいました。

 しかし、実際にはリモートデスクトップ接続を切った後等に、長時間、フォアグラウンド ウィンドウが存在しない状況が発生することが分かりました。このような状況で、Sleep APIの呼び出しを挟みつつフォアグラウンド ウィンドウが見つかるまで待つコードが実行されていると、メッセージに応答しないウィンドウになってしまいます。どうやら、このような状態が発生すると、WS_EX_NOACTIVATEが指定されたウィンドウであっても、タスクバーに名前が出てしまうことがあるようです。

 そこで、フォアグラウンド ウィンドウが見つからない場合は、対象のウィンドウはない……と判定するように直しました。(正確には、サイズ0のウィンドウと処理している)

フォアグラウインドウィンドウが1つしか存在しないとき、フォーカスを持っていて枠付きのコントロールを含むウィンドウを不可視にすると、色が変化しない枠が残る問題を解消 §

 これは、典型的な非同期プログラミングのミスでした。

 対象となるウィンドウが変化したか否かの判定と、変化後のウィンドウを処理する際のサイズの取得を別々に行っていた結果、判定時と処理時で得たウィンドウサイズが違う……という現象が起こっていました。

 ゼロから書き起こしていればたぶん発生していない状況です。

 試行錯誤してソースを組んでいた関係で、意図せずして発生してしまった状況だろうと思います。

Facebook

キーワード【 川俣晶の縁側ソフトウェアその他開発日誌
【その他開発日誌】の次のコンテンツ
2007年
06月
12日
aimemon Version 0.7・64bit対応他
3days 0 count
total 3145 count
【その他開発日誌】の前のコンテンツ
2007年
04月
21日
aimemon Version 0.5・リモデス接続を繰り返すと起こる問題を解消
3days 0 count
total 2570 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20070501181220
サイトの表紙【その他開発日誌】の表紙【その他開発日誌】のコンテンツ全リスト 【その他開発日誌】の入手全リスト 【その他開発日誌】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.