-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