BOOL CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{ TCHAR szBuffer[100];
HWND hText=GetDlgItem(hwnd,IDC_EDIT1);
switch(message)
{
case WM_INITDIALOG :
return TRUE ;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_OK:
EndDialog(hwnd,0);
return TRUE;
case IDC_EDIT1:
switch(HIWORD(wParam))
{
case EN_MAXTEXT: MessageBox (hwnd, TEXT ("Edit control out of space."),
TEXT("提示"), MB_OK | MB_ICONSTOP) ;
return TRUE;
case EN_UPDATE:
GetDlgItemText(hwnd,IDC_EDIT1,szBuffer,lstrlen(szBuffer));
return TRUE;
case EN_KILLFOCUS:
MessageBox(NULL,szBuffer,TEXT("TITLE"),MB_OK);
return TRUE;
}
是dialogbox 的窗口
链接参数定义的宏 _UNICODE UNICODE
在edit控件失去焦点的时候弹出edit的字符串. 是乱码. vs版本是2005
用sendmessage(hText,WM_GETTEXT 这不行. 也是乱码 ? 怎么办 ?
单步执行 就连刚刚开始初始化的szBuffer 都是乱码
============
这个定义是一个临时变量,而窗口处理函数每处理一个消息就要调用一次,临时变量的值也就被释放了,当然是乱码了,将它定义为静态的或是全局就行了。