s_Edit_name = CreateWindow(
TEXT("Edit"),
TEXT(""),
WS_CHILD|WS_BORDER,
375,
90,
240,
40,
g_hWnd,
NULL,
g_hInst,
NULL
);创建了个编辑框,现在的情况是一个窗口里有多个编辑框,我画了个按键,如果点这个按键就可以清空当前编辑框中的内容。
现在问题来了:我要判断当前输入光标是在哪个编辑框中,当我把光标焦点至于用s_Edit_name编辑框中时用代码if(GetFocus()==s_Edit_name)来判断,竟然不相等,请问大家有没有更好的办法。win32Cvc
TEXT("Edit"),
TEXT(""),
WS_CHILD|WS_BORDER,
375,
90,
240,
40,
g_hWnd,
NULL,
g_hInst,
NULL
);创建了个编辑框,现在的情况是一个窗口里有多个编辑框,我画了个按键,如果点这个按键就可以清空当前编辑框中的内容。
现在问题来了:我要判断当前输入光标是在哪个编辑框中,当我把光标焦点至于用s_Edit_name编辑框中时用代码if(GetFocus()==s_Edit_name)来判断,竟然不相等,请问大家有没有更好的办法。win32Cvc
你比较wnd的句柄和m_edit的句柄就好了。因为wnd是一个临时变量,它指向的肯定不是m_editTime这个成员变量,wnd只是Attch了句柄而已。 CWnd *wnd = GetFocus();
if ( wnd->m_hWnd == m_edit.m_hWnd)
{ }
怎么没有 控件 ID ?
原来那个 menu 现在应该给个 IDC_EDIT_NAME (如 2000)
TEXT("Edit"),
TEXT(""),
WS_CHILD|WS_BORDER,
375,
90,
240,
40,
g_hWnd,
(HMENU)ID_EDIT_NAME,
g_hInst,
NULL
);指定了id后该怎么做呢
所以你需要为控件定义句柄,然后再进行比较啦,其实呢MSDN讲的很详细的。
本来 在 edit 的 WM_SETFOCUS 就可以 把 有焦点的Edit内容去除。
sdk 就是 子类化。
WM_SETFOCUS 时
wParam
A handle to the window that has lost the keyboard focus. This parameter can be NULL. lParam
This parameter is not used. hWnd 就是 要得到 焦点的 控件。