看板 C_and_CPP 關於我們 聯絡資訊
http://codepad.org/b12GpGNB 我在視窗內建了一個EDIT的文字輸入框,這是用SetWindowLong設為處理EDIT的函式: LRESULT CALLBACK EditProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { TCHAR szBuf[64]; memset(szBuf, 0, 64*sizeof(TCHAR)); switch (message){ case WM_KEYDOWN: if(wParam == VK_RETURN) { GetWindowText(hwnd, szBuf, 64); if(szBuf!=NULL) SendMessageToMySQL(hwnd,szBuf); SetWindowText(hwnd, TEXT("")); SetFocus(hwnd); SetCaretPos(2,2); } break; } return CallWindowProc (OldEdit, hwnd, message, wParam, lParam) ; } 但是我光處理這兩個問題就耗去超過6個小時還沒辦法, *第一個是關於游標的問題: 其中的SetCaretPos我用Step-by-Step偵錯,執行完那一行時,確實有回到起點 可是return之後游標就會跑到下一行沒有辦法回到Edit的起點,請問要怎麼修改 *另外一個就是判斷對話框的內容是否空白就按了Enter鍵: GetWindowText(hwnd, szBuf, 64); if(szBuf!=NULL) SendMessageToMySQL(hwnd,szBuf); 我元本以為這很單純的一件事情,可是比我想像中複雜很多,其中 最讓我覺得活見鬼的就是szBuf竟然不能全部初始化為零 szBuf[0]和szBuf[1]一定都是亂碼,另外不知道是不是編譯器最佳化的問題, if(szBuf!=NULL)沒辦法插入偵錯點導致無法判斷,為什麼會有這種現象呢? 我試過去比較szBuf[0]和szBuf[1]是否不等於那兩個亂碼值,明明if裡面都 顯示false了他還繼續執行SendMessageToMySQL(hwnd,szBuf); 弄到最後不知道該如何是好。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.186.76
pico2k:szBuf是位址,不可能等於NULL 08/05 19:17
worldxxi:那應該要怎麼判斷才對呢? 08/05 22:36
tsaiminghan:你可以把你的問題說清楚嗎? 08/05 23:19
tsaiminghan:我只知道結果不如你所想,但是看不清你的輸入 08/05 23:20
tsaiminghan:和想要的結果 08/05 23:20
tsaiminghan:像第二個問題,我覺得szBuf[0] != 0 應該就可以吧 08/05 23:21
tsaiminghan:看不懂為什麼會是亂碼?你是作什麼樣的動作? 08/05 23:22
worldxxi:我就是不懂為什麼無緣無故會有值在裡面,至於第一個我想 08/05 23:29
worldxxi:要的就是像msn的輸入文字框一樣,按下enter之後,游標會 08/05 23:30
worldxxi:會回到原來的位置,可是我做出來的游標是會跑到下一行 08/05 23:31
worldxxi:我沒輸入任何字在文字框就按下enter,可是szBuf[0]szBuf[ 08/05 23:33
worldxxi:就是會有非零值在裡面,而且是在執行GetWindowText之前 08/05 23:35
worldxxi:有強者學長幫我把問題解決了,原來前兩個是有關寬字元的 08/06 14:21
worldxxi:訊息,本來就不能寫入 08/06 14:51