-1
我需要此代碼的幫助。我需要將焦點設置爲編輯按鈕,然後讀取編輯框中輸入的值並將其移至變量以供進一步處理。此代碼使用TextOut()創建一個文本提示,其中顯示「輸入mass的值:」以及帶有IDC_EDIT_MASS和hEditMASS旁邊的編輯框。無法從編輯框中讀取值(windows編程和C)
我無法將編輯框中的值讀入變量。 而代碼如下*
#define IDC_EDIT_MASS 103 // Edit box identifier
RESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
HWND hEditMASS;
HDC hDC;
PAINTSTRUCT Ps;
HFONT font;
float mass;
char msgMASS[]="Enter the value of mass:";
switch (message) /* handle the messages */
{
case WM_CREATE :
hEditMASS=CreateWindowEx(WS_EX_CLIENTEDGE, 「EDIT",
"", WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|ES_AUTOHSCROLL,
550,
200,
200,
20,
hwnd,
(HMENU)IDC_EDIT_MASS,
GetModuleHandle(NULL),
NULL);
Break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_EDIT_MASS:
SendMessage(hEditMASS,WM_GETTEXT, sizeof(buffer)/sizeof(buffer[0]),
reinterpret_cast<LPARAM>(buffer));
int ctxtlen=GetWindowTextlength(GetDlgItem(hwnd, IDC_EDIT_MASS));
GetWindowText(GetDlgItem(hwnd, IDC_EDIT_MASS), buffer,(cTxtLen + 1);
mass=atoi(buffer);
MessageBox(NULL,buffer,"Information",MB_ICONINFORMATION);
break;
}
Break;
case WM_SETFOCUS :
SetFocus (hwnd) ;
break;
case WM_PAINT:
hDC = BeginPaint(hwnd, &Ps);
//inputs prompts ...
TextOut(hDC,300,200,msgMASS,sizeof(msgMASS));
EndPaint(hwnd, &Ps);
break;
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
我會試試看。謝謝。 – Scifie
問題WM_COMMAND stmts,特別是GetWindowtextlength()和GetWindowText()。當程序運行時,「WM_SETFOCUS」案例有助於將焦點設置到編輯框中,還有更多的工作要做。因爲沒有這樣的事情發生,所以我需要使用鼠標來選擇編輯框,並嘗試輸入值,雖然Im無法這樣做,因爲WM_COMMAND中的Messagebox()被執行。 – Scifie