我做了一个模块 在一个窗口上加了一个树控件和一个Group控件 和几个无边框 child 样式的子窗口
想实现点击不同的节点 显示不同的子窗口
结果 子窗口显示不出来,没有报错
或 给个邮箱,发过去帮看一下
主要代码如下:窗口初始化时就应加载一个了,却没有)
BOOL CMDControlDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//CreateListTreeCtl(); //创建控件
InitDlg();
return TRUE; l
}bool CMDControlDlg::InitDlg(void)
{
if(!::IsWindow(m_cTreeList.GetSafeHwnd()))
return false; int bShow = SW_NORMAL; CDialog* pDlg = CreateParamDlg(new MDMoveDlg(this),IDD_MDSETDLG);
pDlg->ShowWindow(bShow);
CString strMechineSys=L"可控机械轴";
HTREEITEM hItem = InsertNameAndDlgPtr2ListTree(strMechineSys,pDlg);
CString strMechineStruct=L"射线源X轴";
HTREEITEM hItemShow = InsertNameAndDlgPtr2ListTree(strMechineStruct,pDlg,hItem);
m_cTreeList.Expand( hItem, TVE_EXPAND );
bShow = SW_HIDE;
}
CDialog* CMDControlDlg::CreateParamDlg(CDialog* pDlg,UINT nIDTemplate)
{
CRect rect = GetRectInThisWindows(&m_ctlRange);
pDlg->Create(nIDTemplate,this);
pDlg->MoveWindow(&rect);
pDlg->ShowWindow(SW_HIDE);
return pDlg;
}
CRect CMDControlDlg::GetRectInThisWindows(CWnd* pWnd)
{
//在windows屏上的位置
CRect rect;
pWnd->GetWindowRect(&rect);
//父窗口在windows屏上的位置及客户区大小
CPoint point(0,0);
ClientToScreen(&point);
rect.top -= point.y;
rect.bottom -= point.y;
rect.left -= point.x;
rect.right -= point.x;
return rect;
}
HTREEITEM CMDControlDlg::InsertNameAndDlgPtr2ListTree(LPCTSTR strName,CDialog* pDlg, HTREEITEM hParent)
{
HTREEITEM hItem = m_cTreeList.InsertItem(strName,hParent);
// m_cTreeList.InsertItem(strName,hParent,hItem);
m_cTreeList.SetItemData(hItem,(DWORD_PTR)pDlg);
tempDialogSet.insert(pDlg);
return hItem;
}
想实现点击不同的节点 显示不同的子窗口
结果 子窗口显示不出来,没有报错
或 给个邮箱,发过去帮看一下
主要代码如下:窗口初始化时就应加载一个了,却没有)
BOOL CMDControlDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//CreateListTreeCtl(); //创建控件
InitDlg();
return TRUE; l
}bool CMDControlDlg::InitDlg(void)
{
if(!::IsWindow(m_cTreeList.GetSafeHwnd()))
return false; int bShow = SW_NORMAL; CDialog* pDlg = CreateParamDlg(new MDMoveDlg(this),IDD_MDSETDLG);
pDlg->ShowWindow(bShow);
CString strMechineSys=L"可控机械轴";
HTREEITEM hItem = InsertNameAndDlgPtr2ListTree(strMechineSys,pDlg);
CString strMechineStruct=L"射线源X轴";
HTREEITEM hItemShow = InsertNameAndDlgPtr2ListTree(strMechineStruct,pDlg,hItem);
m_cTreeList.Expand( hItem, TVE_EXPAND );
bShow = SW_HIDE;
}
CDialog* CMDControlDlg::CreateParamDlg(CDialog* pDlg,UINT nIDTemplate)
{
CRect rect = GetRectInThisWindows(&m_ctlRange);
pDlg->Create(nIDTemplate,this);
pDlg->MoveWindow(&rect);
pDlg->ShowWindow(SW_HIDE);
return pDlg;
}
CRect CMDControlDlg::GetRectInThisWindows(CWnd* pWnd)
{
//在windows屏上的位置
CRect rect;
pWnd->GetWindowRect(&rect);
//父窗口在windows屏上的位置及客户区大小
CPoint point(0,0);
ClientToScreen(&point);
rect.top -= point.y;
rect.bottom -= point.y;
rect.left -= point.x;
rect.right -= point.x;
return rect;
}
HTREEITEM CMDControlDlg::InsertNameAndDlgPtr2ListTree(LPCTSTR strName,CDialog* pDlg, HTREEITEM hParent)
{
HTREEITEM hItem = m_cTreeList.InsertItem(strName,hParent);
// m_cTreeList.InsertItem(strName,hParent,hItem);
m_cTreeList.SetItemData(hItem,(DWORD_PTR)pDlg);
tempDialogSet.insert(pDlg);
return hItem;
}
解决方案 »
- DirectDraw显示位图的一个C/C++完整实例
- toolbar停靠问题?
- 关于列集?
- 什么函数可以修改系统服务的启动类型为自动、手动或禁用呢?
- 如何自动关闭AfxMessagebox()对话框
- 将CString中第2个字符开始的字符串拷贝到(或者添加到)另一个CString中,怎么做?
- 消息,消息,还是消息
- 怎么判断一个字符是几个中的一个?
- 如何制作突破交换机的sniffer类软件。关键在于那里?高手赐教。
- 求助实现MDI多文档程序运行默认打开多个对话框
- s是char数组,为什么s=s+1;这一行出错呢?
- 请问CSDN相当恶心的“亲,你的浏览器过时了,请立即更换Chrome浏览器”如何干掉它!
pDlg->ShowWindow(SW_SHOW);