首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

一个对话框中怎样获取另一个对话框的句柄

2012-01-21 
求助:一个对话框中怎样获取另一个对话框的句柄一个对话框中AA怎样获取另一个对话框BB的句柄,然后sendmessa

求助:一个对话框中怎样获取另一个对话框的句柄
一个对话框中AA怎样获取另一个对话框BB的句柄,然后sendmessage给BB中的cedit赋值;附:两个对话框没有什么联系,程序是在AA中写的。

[解决办法]
HWND hwnd = FindWindow( "窗口名 ",..);
if(hwnd)
{
((CEdit*)((BB*)CWnd::FromHandle(hwnd))-> GetDlgItem(IDC_EDIT1))-> SendMessage(...)
}
[解决办法]
定义一个全局CWnd指针把这个BB对话框指针保存起来
[解决办法]
你这个BB对话框总得有一些特征吧,用EnumWindows枚举全部窗口来比较这个特征。
[解决办法]
用FindWindow函数
可跟据窗口名或类名查找窗口

static CWnd* PASCAL FindWindow(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName );

例:FindWindow(_T( "MyNewClass "),NULL));
[解决办法]
定义一个全局变量
CWnd* g_pBB = NULL;

在BB对话框创建时将地址保存在g_pBB中
pBB-> Create(...);
g_pBB = pBB;


发消息
if(g_pBB )
((CDialog*)pBB)-> GetDlgItem(IDC_EDIT1)-> SendMessage(...)
[解决办法]
用公共变量传过来。。呵呵
[解决办法]
theApp.pCWnd = this; //这样写

// 这样写也可以,ID必须是对话框上的控件,得到的指针也是控件类的指针
theApp.pCWnd = GetDlgItem(B的ID);

热点排行