点击当前窗口(A)上的按钮使本窗口(A)失去焦点,并使另一窗口(B)获得焦点!如何实现,俺折腾半天,就是实现不了,HWND hWndA = this->GetSafeHwnd();
HWND hWndB = ::FindWindowEx(NULL,NULL,NULL,_T("FORM_B"));
if (hWndB!=NULL)
{
::SendMessage(hWndA,WM_KILLFOCUS,0,0);
::SendMessage(hWndB,WM_SETFOCUS,0,0);
::SendMessage(hWndB,WM_ACTIVATE,0,0);
}麻烦大家帮忙看看,
HWND hWndB = ::FindWindowEx(NULL,NULL,NULL,_T("FORM_B"));
if (hWndB!=NULL)
{
::SendMessage(hWndA,WM_KILLFOCUS,0,0);
::SendMessage(hWndB,WM_SETFOCUS,0,0);
::SendMessage(hWndB,WM_ACTIVATE,0,0);
}麻烦大家帮忙看看,
解决方案 »
- 求一个垂直滚动条的初级例程
- 关于菜单消息映射的问题
- 请问,为什么我的ToolBar上的按钮,我从Hide显示它或Disenable它,都不及时刷新显示,要拖动它一下才显示正常?
- _beginthreadex的参数强制转换的问题
- 关于CScrollView类中,左右两个视的滚动条如何统一响应。谢谢!!
- 关于 多线程下载管理的代码
- ===菜鸟系列===:请问如何用VC获得网页的标题?高手请进,菜鸟也请进,大家都进来吧!
- String^ 转化为int的函数
- 关于子窗口(CWnd)的非客户区重绘问题,请进!
- 高分----求文件映像格式大全!!!
- DirectShow 显示音频波形
- vc下有没有方法知道电脑上装的是access2003还是access2007?
这个都用上了,
也不行,用了上面的那条语句后,
A/B窗口好像都被激活了,
但是,B并没有得到焦点,输入东西到B的Edit里依然不行,(虽然B的Edit有光标在闪动)
const WM_GETFOCUS = WM_USER + 101;
HWND hWndA = this->GetSafeHwnd();
HWND hWndB = ::FindWindowEx(NULL,NULL,NULL,_T("FORM_B"));
if (hWndB!=NULL)
{
::SendMessage(hWndB,WM_GETFOCUS,0,0);}窗口B中处理自定义消息
LRESULT OnGetFocus(WPARAM wp, LPARAM lp)
{
SetFocus();
return 0L;
}
笔误
试试上面的
::SetActiveWindow(hWnd);
这个试试
//Attach foreground window thread
//to our threadAttachThreadInput(
GetWindowThreadProcessId(
::GetForegroundWindow(),NULL),
GetCurrentThreadId(),TRUE);//Do our stuff here ;-)SetForegroundWindow();
SetFocus(); //Just playing safe
//Detach the attached threadAttachThreadInput(
GetWindowThreadProcessId(
::GetForegroundWindow(),NULL),
GetCurrentThreadId(),FALSE);
if(hWnd!=NULL)
{
if(::IsIconic(hWnd))
::ShowWindow(hWnd,SW_SHOWNORMAL);
::SetForegroundWindow(hWnd);
::SetActiveWindow(hWnd);
}
测试过了,是可以的,不知道是不是你要的效果