关于WM_SETFOCUS的问题?请高人指点。

silenttea 2009-06-09 12:44:28
我想问一下,我设置了一个int的静态变量,然后在程序接收到WM_SETFOCUS消息时让这个变量加一,还设置了一个WM_LBUTTONDOWN的消息,每次单击鼠标左键时,就显示,当前所点的坐标和这个num值。为什么这个num增加到10时,就自动清零了?在点鼠标的时候。又从0开始记数。一直是这样。这是为什么??难道程序接收了十次WM_SETFOCUS就自动清零了?还有在什么时候能接收到这个WM_SETFOCUS消息。请高手指点。

#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nShowCmd)
{
static TCHAR classname[] = TEXT("I love you");
WNDCLASS wnd;
wnd.style = CS_HREDRAW | CS_VREDRAW;
wnd.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wnd.hCursor = LoadCursor(NULL,IDC_ARROW);
wnd.cbWndExtra = 0;
wnd.cbClsExtra = 0;
wnd.hInstance = hInstance;
wnd.lpfnWndProc = WndProc;
wnd.lpszMenuName = NULL;
wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wnd.lpszClassName = classname;

RegisterClass(&wnd);
HWND hwnd = CreateWindowW(classname,TEXT("LINA"),WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,NULL,NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static TCHAR test[10];
static HWND chwnd;
static int cxChar,cyChar;
static int num = 0;
switch(message)
{
case WM_CREATE:
cxChar = LOWORD(GetDialogBaseUnits());
cyChar = HIWORD(GetDialogBaseUnits());
chwnd = CreateWindow(TEXT("button"),TEXT("I LOVE YOU"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
100,100,20*cxChar,2*cyChar,hwnd,(HMENU)1,
((LPCREATESTRUCT)lParam)->hInstance,NULL);
return 0;
case WM_SETFOCUS:
SetFocus(chwnd);
num++;
return 0;
case WM_LBUTTONDOWN:
wsprintf(test,TEXT("%d,%d,%d"),LOWORD(lParam),HIWORD(lParam),num);
MessageBox(hwnd,test,test,MB_OK);
return 0;
case WM_CHAR:
wsprintf(test,TEXT("%i,%c,%d"),hwnd,TCHAR(wParam),num);
MessageBox(hwnd,test,test,MB_OK);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
...全文
303 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
silenttea 2009-06-09
  • 打赏
  • 举报
回复
我明白了,原来是字符数组的宽度不够。谢谢
Ryanwen 2009-06-09
  • 打赏
  • 举报
回复
static TCHAR test[10]; 改为 static TCHAR test[100]; 试试
silenttea 2009-06-09
  • 打赏
  • 举报
回复
请高人指点一二。。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧