动态创建一个窗口。但是这个窗口的控件不能获得焦点。

yhl10000 2005-07-11 01:53:38
该窗口创建信息如下:
CalWndClassName =AfxRegisterWndClass (CS_BYTEALIGNWINDOW | CS_PARENTDC | CS_SAVEBITS,
::LoadCursor (NULL, IDC_ARROW));
dwStyle=WS_CHILD |WS_BORDER,

CWnd::CreateEx (WS_EX_TOOLWINDOW,
CalWndClassName,
NULL,
dwStyle,
Rect.left,
Rect.top,
Rect.Width(),
Rect.Height(),
GetDesktopWindow()->GetSafeHwnd(),
(HMENU) NULL);



...全文
286 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeKey 2005-07-14
  • 打赏
  • 举报
回复
CWnd::SetForegroundWindow();

Remarks

Puts the thread that created the window into the foreground and activates the window. Keyboard input is directed to the window, and various visual cues are changed for the user. The foreground window is the window with which the user is currently working. The foreground window applies only to top-level windows (frame windows or dialogs boxes).
yhl10000 2005-07-14
  • 打赏
  • 举报
回复
vcmute(横秋) :这不是一个dialog。这是继承于cwnd的一个窗口对象。
goodboyws(深夜不眠者) m_cWnd.SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
没有用。


在这个创建的窗口中动态创建一个CEdit控件。我在cdialog用同样的实现方法就可以获得焦点。
vcmute 2005-07-13
  • 打赏
  • 举报
回复
WM_INITDIALOG返回FALSE?
goodboyws 2005-07-13
  • 打赏
  • 举报
回复
不好意思,上面有误, 可以这样
m_cWnd.SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
m_cWnd是你创建的窗口对象
goodboyws 2005-07-13
  • 打赏
  • 举报
回复
WS_EX_TOOLWINDOW本身就获取不了焦点
yhl10000 2005-07-12
  • 打赏
  • 举报
回复
子窗口调用了。但是没有用,
smartcomplier 2005-07-11
  • 打赏
  • 举报
回复
创建完后直接用调用SetFocus()
yhl10000 2005-07-11
  • 打赏
  • 举报
回复
大家别误解,我是指现在我希望它有焦点但是实际上它没有焦点,我不知道怎么回事。
希望高手指出。
smzh8 2005-07-11
  • 打赏
  • 举报
回复
我记得使控件获得焦点是发一个WM_SetFocus消息,你只要改写这个窗口的窗口函数,使系统先调用你的窗口函数,从而使你的函数先截获此消息,并且阻断这个消息的传递,这样可是控件无法获得焦点.

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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