MFC:在父窗口中打开了一个子窗口,然后在子窗口中访问非父窗口的其他窗口的控件。怎么实现。 30
我想要通过GetDlgItemText获得那个窗口上一个按钮控件上的文字,但是,因为那个窗口没有通过DoModal显示,所以总是程序崩溃,求解。。。在A窗口中打开B窗口,...
我想要通过GetDlgItemText获得那个窗口上一个按钮控件上的文字,但是,因为那个窗口没有通过DoModal显示,所以总是程序崩溃,求解。。。
在A窗口中打开B窗口,然后在B窗口中访问C窗口的控件,C窗口并没有被打开,这样行的通不?
这样不可以,C窗口没有打开就是没有被初始化,窗口上的控件句柄自然就没有值,这样只能崩溃。 展开
在A窗口中打开B窗口,然后在B窗口中访问C窗口的控件,C窗口并没有被打开,这样行的通不?
这样不可以,C窗口没有打开就是没有被初始化,窗口上的控件句柄自然就没有值,这样只能崩溃。 展开
3个回答
展开全部
你的意思就是获取子窗口句柄
1.先要获取主窗口的句柄
获取方法参考:
1.通过进程名称寻找进程 获得进程ID->枚举所有窗口->选出进程ID的主窗口句柄
2.通过窗口名称FindWindow出主窗口句柄
2.::GetDlgItem(这个函数可以获取子窗口的句柄)
例程:
HWND 主窗口句柄=::FindWindow(......);
HWND 子窗口句柄=::GetDlgItem(主窗口句柄,1231);//1231是子窗口在主窗口中的ID
//可以利用GetDlgItem(子窗口句柄,111);这样以此类推,一直到你所要的窗口为止
char 文本[MAX_PATH]={0};
::GetWindowText(子窗口句柄,文本,MAX_PATH);
MessageBox(.........);
Q:怎么获得子窗口在主窗口中的ID?
A:可以通过一些辅助软件获得,比如SPY++、精易助手 ,等等。
传递类的指针即可
1.先要获取主窗口的句柄
获取方法参考:
1.通过进程名称寻找进程 获得进程ID->枚举所有窗口->选出进程ID的主窗口句柄
2.通过窗口名称FindWindow出主窗口句柄
2.::GetDlgItem(这个函数可以获取子窗口的句柄)
例程:
HWND 主窗口句柄=::FindWindow(......);
HWND 子窗口句柄=::GetDlgItem(主窗口句柄,1231);//1231是子窗口在主窗口中的ID
//可以利用GetDlgItem(子窗口句柄,111);这样以此类推,一直到你所要的窗口为止
char 文本[MAX_PATH]={0};
::GetWindowText(子窗口句柄,文本,MAX_PATH);
MessageBox(.........);
Q:怎么获得子窗口在主窗口中的ID?
A:可以通过一些辅助软件获得,比如SPY++、精易助手 ,等等。
传递类的指针即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要访问别的窗口需要获取到窗口的对象.
如果是父窗口创建的窗口,那么可以在父窗口创建这个子窗口的时候,在构造方法中传入这个要操作的窗口对象,然后通过这个窗口对象对这个窗口进行操作
C窗口没打开你去哪访问他的控件...
如果是父窗口创建的窗口,那么可以在父窗口创建这个子窗口的时候,在构造方法中传入这个要操作的窗口对象,然后通过这个窗口对象对这个窗口进行操作
C窗口没打开你去哪访问他的控件...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
父窗口类:CMainDlg;
子窗口:CReadInfo;
父窗口上有控件IDC_IP;
HWND pwnd=GetParent();//企图获得父窗口句柄
HWND pwnnd= ::GetDlgItem(pwnd, IDC_IP);//企图通过父窗口句柄获取IDC_IP控件句柄
::GetWindowText(pwnnd,IpAddr,16);//企图把控件里的IP地址赋值给IpAddr
MessageBox(IpAddr);//企图以弹出的形式弹出我获取到的IP地址
子窗口:CReadInfo;
父窗口上有控件IDC_IP;
HWND pwnd=GetParent();//企图获得父窗口句柄
HWND pwnnd= ::GetDlgItem(pwnd, IDC_IP);//企图通过父窗口句柄获取IDC_IP控件句柄
::GetWindowText(pwnnd,IpAddr,16);//企图把控件里的IP地址赋值给IpAddr
MessageBox(IpAddr);//企图以弹出的形式弹出我获取到的IP地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询