走过路过,千万别错过,【 SetParent的那点事 】

_船长_ 2013-12-18 11:54:10
遇到困难了,特来请教一下大家,问题描述一下:

我在一个程序A中显示程序B的界面,即将程序B主界面设置为程序A的子窗口,通过SetParent函数,发现设置成功后,界面如下:


通过图大家可以看出,此时程序B的界面没有激活,并且那个文本输入框无法输入内容,但是下面的两个按键却可以点击,


窗口刷新后,发现程序B的界面又出现这种情况:


大家指点一下,究竟何种原因呢??

...全文
4564 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2013-12-20
  • 打赏
  • 举报
回复
"但是下面的两个按键却可以点击" 说明父窗口已经设置好
_船长_ 2013-12-20
  • 打赏
  • 举报
回复
泥煤,这是要沉啊,救一下吧
zhuyf87 2013-12-20
  • 打赏
  • 举报
回复
“我在一个程序A中显示程序B的界面,即将程序B主界面设置为程序A的子窗口,通过SetParent函数” 楼主的两个界面分属不同的应用程序?我在msdn中看到这样一句话:
HWND SetParent( 
  HWND hWndChild, 
  HWND hWndNewParent 
); 
Remarks An application can use the SetParent function to set the parent window of a pop-up, overlapped, or child window. The new parent window and the child window must belong to the same application.
路人乙2019 2013-12-19
  • 打赏
  • 举报
回复
这种看似简单,匪夷所思的方法不曾尝试。两个窗口不在一个进程中,变量资源都不能共享,这既不是模态也不是非模态对话框。各自的刷新都没引起另一个窗口的重绘。文本框不能输入是因为,焦点在a窗口上,焦点不可能同时存在于两个窗口上。
gfm688 2013-12-19
  • 打赏
  • 举报
回复
程序B窗口.ModifyStyle(WS_POPUP, WS_CHILD, SWP_FRAMECHANGED);
穿跑鞋不跑步 2013-12-19
  • 打赏
  • 举报
回复
你是把对话框b内嵌到对话框a了。
_船长_ 2013-12-19
  • 打赏
  • 举报
回复
希望版主可以出来帮忙解决一下啊!
_船长_ 2013-12-19
  • 打赏
  • 举报
回复
引用 1 楼 zzdmfk 的回复:
这种看似简单,匪夷所思的方法不曾尝试。两个窗口不在一个进程中,变量资源都不能共享,这既不是模态也不是非模态对话框。各自的刷新都没引起另一个窗口的重绘。文本框不能输入是因为,焦点在a窗口上,焦点不可能同时存在于两个窗口上。
这种解释有点牵强,因为程序B的窗口我仍然可以点击下面的按键,而且这个问题,我也很多网站上看见过,包括msdn社区,可是都没有解决。
_船长_ 2013-12-19
  • 打赏
  • 举报
回复
引用 4 楼 tiger9991 的回复:
MSDN里面说了: if hWndNewParent is not NULL and the window was previously a child of the desktop, you should clear the WS_POPUP style and set the WS_CHILD style before calling SetParent. 就是如果你原来是主窗体要修改style为WS_CHILD的
当然设置属性了,显然不是这种情况导致的
看不见的裂痕 2013-12-19
  • 打赏
  • 举报
回复
MSDN里面说了: if hWndNewParent is not NULL and the window was previously a child of the desktop, you should clear the WS_POPUP style and set the WS_CHILD style before calling SetParent. 就是如果你原来是主窗体要修改style为WS_CHILD的
s_hhm 2013-12-19
  • 打赏
  • 举报
回复
如果是两个进程.你怎么获得的B进程的窗口句柄的.进程间相互独立,应该不行吧.
rxguoblp 2013-12-19
  • 打赏
  • 举报
回复
“下面的两个按键却可以点击”,点击之后,能进入到相应的功能函数中码?
_船长_ 2013-12-19
  • 打赏
  • 举报
回复
自己顶一下吧!

16,541

社区成员

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

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

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