TEdit的WM_CHAR和中文字關係 |
尚未結案
|
Homi
一般會員 ![]() ![]() 發表:19 回覆:23 積分:8 註冊:2003-07-26 發送簡訊給我 |
各位好: 我在Form上拉一個TEdit,把它原先的WndProc換成我自己的,想要攔下中文字的內碼,但是發現非常奇怪的現象。
部分的CODE的如下:
void __fastcall TForm1::MyEditWndProc(TMessage & Message) { int lParam=Message.LParam; int wParam=Message.WParam; switch(Message.Msg) { //case WM_IME_CHAR: case WM_CHAR: { //add code to process wParam } break; } OldEditWndProc(Message); }發現,在Form的Edit上打 "我" 這個中文字(內碼為0xA7DA) 我用SPY 攔到的Message依序為: WM_CHAR wParam=0xDA (Lead byte) WM_CHAR wParam=0xA7 (trail byte) 但是我在我自己的程式裡攔到的Message為: WM_CHAR wParam=0xA7 就沒了 怎麼會這樣呢? 問題在哪裡呢? 謝謝各位 |
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 各位好: 我在Form上拉一個TEdit,把它原先的WndProc換成我自己的,想要攔下中文字的內碼,但是發現非常奇怪的現象。 部分的CODE的如下:Homi你好< >: 之前也發現過這個問題,但應不影響,也就不了了之了< >! 我所謂的不影響是因為用WM_IME_CHAR就可以攔到完整的byte code(double),在其Wparam中,我想你好像也有這樣攔吧void __fastcall TForm1::MyEditWndProc(TMessage & Message) { int lParam=Message.LParam; int wParam=Message.WParam; switch(Message.Msg) { //case WM_IME_CHAR: case WM_CHAR: { //add code to process wParam } break; } OldEditWndProc(Message); }發現,在Form的Edit上打 "我" 這個中文字(內碼為0xA7DA) 我用SPY 攔到的Message依序為: WM_CHAR wParam=0xDA (Lead byte) WM_CHAR wParam=0xA7 (trail byte) 但是我在我自己的程式裡攔到的Message為: WM_CHAR wParam=0xA7 就沒了 怎麼會這樣呢? 問題在哪裡呢? 謝謝各位 |
Zard
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
根據我的觀察應該是VCL的原因.所以我把你的碼改成下面這樣, 在BCB5裡就可以抓到0xDA, 0xA7了.
void __fastcall TForm1::MyEditWndProc(TMessage & Message) { int lParam=Message.LParam; int wParam=Message.WParam; switch(Message.Msg) { //case WM_IME_CHAR: case WM_CHAR: { //add code to process wParam Memo1->Lines->Add(IntToHex(wParam, 4)); } break; // 不讓WM_CHAR 經過VCL的Message Loop default: OldEditWndProc(Message); } //拿掉這裡 //OldEditWndProc(Message); }附帶一提, 若我直接用VC 寫(不用MFC, 完全手工打造)一個視窗程式, 攔WM_CHAR, 也是可以抓到0xDA, 0xA7 發表人 - zard 於 2005/02/25 11:45:03 發表人 - zard 於 2005/02/25 12:59:27 |
Homi
一般會員 ![]() ![]() 發表:19 回覆:23 積分:8 註冊:2003-07-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |