(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