菜鸟求教,输字符怎么没反应啊
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){//窗口过程函数
string str=" ";
//消息处理***
switch(message){
case WM_CREATE:{
::SetWindowText(hwnd,"typer");
return 0;
}
case WM_PAINT:{//需要重画窗口客户区
HDC hdc;
PAINTSTRUCT ps;
hdc=::BeginPaint(hwnd,&ps);
//这里可以加入自由内容
::TextOut(hdc,0,0,str.c_str(),str.length());
::EndPaint(hwnd,&ps);
return 0;
}
case WM_CHAR:{
str=str+(char)wParam;//**保存输入的字符串
//RECT rc={0,0,20,20};
::InvalidateRect(hwnd,NULL,false);//使整个窗口变得无效
return 0;
}
case WM_DESTROY:{
::PostQuitMessage(0);
return 0;
}
default:return ::DefWindowProc(hwnd,message,wParam,lParam);
}//switch
}
想实现简单的打字程序。。。。消息处理应该怎样弄啊。。。
[解决办法]
string str=" ";
不能定义为局部变量,局部变量每次进入函数时都被清空了,你将键码加字符串后,wm_paint又把它清空了