(toppers-users 75) Re: Windows 版について (WM_USER)
Takayuki WAKABAYASHI
takayuki @ ertl.ics.tut.ac.jp
2001年 2月 21日 (水) 13:37:15 JST
豊橋技術科学大学の若林です.
Masahiko Akita さんは書きました:
> windows\hal_msg.h で HALMSG_MESSAGE に WM_USER を
> 使用していますが、WM_APP の方が良いでしょう。
ご指摘のとおりです.
改めてMSDNを開いてみると,アプリで共通なメッセージを
WM_USERで作るなと明記されていますね.仰るように
安全のため修正を加えるほうが良いと思います.
問題は次の修正で解消できます.
config/windows/hal_msg.h:37
修正前 #define HALMSG_MESSAGE WM_USER
修正後 #define HALMSG_MESSAGE WM_APP
> 上に関連して、
> SendMessage(cb->Handle, HALMSG_MESSAGE+0x10, 0, (LPARAM)cb);
> の方が良いと思います。
こちらのほうはHALMSGとは別管轄で,serial_console.cに閉じた話
ですので,HALMSG_MESSAGEとするとちょっと問題があります.
ただ,先ほどと同じ理由でWM_USERではまずいと思いますので,
これもWM_APPにすべきですね.
> 0x10というマジックナンバーも hal_msg.h あたりで隠したいですね。
serial_console.cの頭の部分でdefineで隠すのが妥当でしょうか.
#本来HALMSGを処理する部分とは別のWindowProcを持っているので,
#+0x10する必要もないのではとは思いますが... ついつい...
config/windows/serial_console.c:118, ConsoleProc
修正前 case WM_USER+0x10:
修正後 case SERMSG_CREATE:
config/windows/serial_console.c:197, CreateSerialConsole
修正前 SendMessage(cb->Handle, WM_USER+0x10, 0, (LPARAM)cb);
修正後 SendMessage(cb->Handle, SERMSG_CREATE, 0, (LPARAM)cb);
config/windows/serial_console.c:40付近
追加 #define SERMSG_CREATE WMAPP+0x10
秋田さん,ご指摘ありがとうございました.
//-------------------------------------------------
//Takayuki WAKABAYASHI (わかばやし たかゆき)
// mailto: takayuki @ ertl.ics.tut.ac.jp
//-------------------------------------------------
//豊橋技術科学大学 工学研究科 情報工学専攻
// 組込みリアルタイムシステム研究室
// Embedded and realtime system laboratory
// Dept. of information and computer science
// Toyohashi univ. of technology