问题描述
- 关于在CALLBACK Wndproc中静态变量的问题
-
代码如下:为为什么N的值不是从编辑框中输入的值呢??LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static int N; static HWND hEdit,hButton; char szBuffer[10]; HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_CREATE: hEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER, 0,0,0,0, hwnd, (HMENU)ID_EDIT, ((LPCREATESTRUCT)lParam)->hInstance, NULL); hButton = CreateWindow(TEXT("Button"), TEXT("Button"), WS_CHILD | WS_VISIBLE, 500, 300, 7* cxChar, 2 * cyChar, hwnd, (HMENU)ID_Button,((LPCREATESTRUCT)lParam)->hInstance, NULL); return 0; case WM_SIZE: MoveWindow(hEdit, cxClient - 100, 2 * cyChar, 10 * cxChar, 2* cyChar, TRUE); return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case 1: //SetFocus(hEdit); GetDlgItemText(hwnd, ID_EDIT, szBuffer, TRUE); N=atof(szBuffer); break; case 2: InvalidateRect(hwnd, NULL, TRUE); break; } return 0;
解决方案
CWnd::GetDlgItemInt
http://msdn.microsoft.com/zh-cn/library/c7t43w0s.aspx
它将指定控件的文本在特定对话框的转换为整数值通过去除所有多余空格在该文本的开头和转换十进制数字。 在到达结尾的文本或遇到任何非数值字符时,终止平移。
解决方案二:
atoi吧。atof是转换成浮点数
解决方案三:
另外可以直接用GetDlgItemInt
解决方案四:
http://msdn.microsoft.com/zh-cn/library/c7t43w0s.aspx
它将指定控件的文本在特定对话框的转换为整数值通过去除所有多余空格在该文本的开头和转换十进制数字。 在到达结尾的文本或遇到任何非数值字符时,终止平移。
解决方案五:
atoi() 转换成int
时间: 2024-10-19 14:07:37