0
我對Windows GUI編程有點新鮮。 我有一些代碼在32位Windows上工作正常,但在64位Win7(相同的exe)上變得很奇怪。來自64位Windows上SendMessage的怪異輸出
LWG_CEDIT_GET(m_hwnd, IDC_EDIT_NUM_TEST, g_tmp_str, 4096);
其中LWG_CEDIT_GET定義爲:
#define LWG_CEDIT_GET(h,id,v,m) \
((*((U32*)(v))=(m)),SendMessage(GetDlgItem((h),(id)),EM_GETLINE,0,(LPARAM)(char*)(v))
在WinXP 32,這給了我g_tmp_str="1"
(當然我輸入 '1' 到對話文本字段)。但是,在Win7 64上,這給了我g_tmp_str=""
(糟糕,奇怪的字符不能在堆棧溢出中顯示,無論如何,奇數字符[0] = 49'1'[1] = 16'')。
一般來說,32位的exe程序可以在Win7 64上完美地工作,所以,爲什麼我的程序失敗了?謝謝。
編輯1:IsWindowsUnicode(m_hwnd)返回FALSE。
我在32位平臺上只編譯一次。我在32位和64位win上運行這個32位exe文件。 – solotim 2010-12-02 09:20:32