我在做VC的界面,遇到一个问题,就是CDialog的对话框,不能很好的嵌在CTabCtrl中,
代码如下,帮忙看一下了void ControlPlane::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "Create";
m_TabCtrl.InsertItem (0,&item);
item.pszText = "Modife";
m_TabCtrl.InsertItem (1,&item);
m_CreateTab.Create (IDD_TAB_CREATE,&m_TabCtrl);
m_ModifeTab.Create (IDD_TAB_MODIFE,&m_TabCtrl);
CRect rc;
m_TabCtrl.GetWindowRect(rc);
rc.top = rc.top + 2;
rc.left = rc.left + 2;
rc.right = rc.right - 2;
rc.bottom = rc.bottom - 2;
int cx = rc.right - rc.left;
int cy = rc.bottom - rc.top; //问题
m_CreateTab.SetWindowPos(NULL,rc.top,rc.left,rc.right,rc.bottom,SWP_SHOWWINDOW);
//替换部分
//m_CreateTab.ShowWindow(WS_SHOW);
}这个就是问题的代码,问题出现在最后两行,如果换成地下的那一行 m_CreateTab.ShowWindow(WS_SHOW); 倒是可以显示,但是位置不对,Dailog把标签给盖住了,如果换成上面的那一行,就跟不显示不出来Dialog了,怎么办呢?
代码如下,帮忙看一下了void ControlPlane::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "Create";
m_TabCtrl.InsertItem (0,&item);
item.pszText = "Modife";
m_TabCtrl.InsertItem (1,&item);
m_CreateTab.Create (IDD_TAB_CREATE,&m_TabCtrl);
m_ModifeTab.Create (IDD_TAB_MODIFE,&m_TabCtrl);
CRect rc;
m_TabCtrl.GetWindowRect(rc);
rc.top = rc.top + 2;
rc.left = rc.left + 2;
rc.right = rc.right - 2;
rc.bottom = rc.bottom - 2;
int cx = rc.right - rc.left;
int cy = rc.bottom - rc.top; //问题
m_CreateTab.SetWindowPos(NULL,rc.top,rc.left,rc.right,rc.bottom,SWP_SHOWWINDOW);
//替换部分
//m_CreateTab.ShowWindow(WS_SHOW);
}这个就是问题的代码,问题出现在最后两行,如果换成地下的那一行 m_CreateTab.ShowWindow(WS_SHOW); 倒是可以显示,但是位置不对,Dailog把标签给盖住了,如果换成上面的那一行,就跟不显示不出来Dialog了,怎么办呢?
解决方案 »
- 未解决问题 ,我在弹出的对话框picture上画图,但是图全画在对话框上了
- 如何让程序运行后主窗口独占真个windows屏幕?
- 请问如何在服务器端判断各个客户端的数据传输速度?
- 关于COM+服务器权限问题?
- 有一URL,在浏览器里每刷新一次就会返回不同的内容,可是在我的程序里总是同一返回,何解?帮帮忙啦
- 先放1000分,分我有的是:我想做一个象cooleditor这样的软件,哪里有这方面的资料有源程序最好,或者有cooleditor的接口函数吗?请高手指
- 函数"GetModuleHandle()"的作用?
- 百度打豆豆游戏怎么判断鼠标点击四个方向要消除的豆豆?
- 'cv' : is not a class or namespace name??
- 12年毕业,做了两年的C++开发,薪水9000 怎么样
- MFC怎么把打开一个TXT文件到编辑框里啊? 大哥大姐们都来救救我啊~~~
- 打开不同版本的msconfig(系统配置)
//add items into tabcontrol
m_ctrltab.InsertItem(0," 学校");
m_ctrltab.InsertItem(1," 学年"); //add the page into tabcontrol
m_dlgpageschool.Create(IDD_DLGSCHOOL, &m_ctrltab);
m_dlgpageyear.Create(IDD_DLGYEAR, &m_ctrltab); //show the first page
CRect recttab;
m_ctrltab.GetClientRect(&recttab);
recttab.top += 20; m_dlgpageschool.MoveWindow(&recttab);
m_dlgpageyear.MoveWindow(&recttab); m_dlgpageschool.ShowWindow(SW_SHOW);
m_dlgpageyear.ShowWindow(SW_HIDE);
//我用过的代码,看看或许会有帮助
void ControlPlane::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "Create";
m_TabCtrl.InsertItem (0,&item);
item.pszText = "Modife";
m_TabCtrl.InsertItem (1,&item);
m_CreateTab.Create (IDD_TAB_CREATE,&m_TabCtrl);
m_ModifeTab.Create (IDD_TAB_MODIFE,&m_TabCtrl);
CRect rc;
m_TabCtrl.GetWindowRect(rc);
rc.top = rc.top + 20; this->m_CreateTab.MoveWindow(rc);
this->m_CreateTab.ShowWindow(SW_SHOW);
}
改成这个样子了,那个对话框显示不出来了
m_ModifeTab.MoveWindow(rc); m_CreateTab.ShowWindow(SW_SHOW);
m_ModifeTab.ShowWindow(SW_HIDE);//这样也不行么?
m_TabCtrl.GetWindowRect(rc);
rc.top = rc.top + 20; this->m_CreateTab.MoveWindow(rc);
-----------------------
GetWindowRect?获得的是屏幕坐标,你用这个坐标MoveWindow早就移出TAB的范围了,ScreenToClient转一下坐标
void ControlPlane::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "Create";
m_TabCtrl.InsertItem (0,&item);
item.pszText = "Modife";
m_TabCtrl.InsertItem (1,&item);
//在这里添加如下代码
CWnd *pWnd=NULL;
pWnd=GetDlgItem(IDC_YOUR_TAB);
m_CreateTab.Create (IDD_TAB_CREATE,&m_TabCtrl);
//指定父亲窗口
m_CreateTab.setParant(pWnd);
m_ModifeTab.Create (IDD_TAB_MODIFE,&m_TabCtrl);
m_ModifeTab.setParant(pWnd);
CRect rc;
m_TabCtrl.GetWindowRect(rc);
rc.top = rc.top + 20; this->m_CreateTab.MoveWindow(rc);
this->m_CreateTab.ShowWindow(SW_SHOW);
}问题似乎出现在create();中指定的父亲窗口那里不起作用。具体不知道为什么。
/*
CRect rc;
m_TabCtrl.GetWindowRect(rc);
rc.top = rc.top + 2;
rc.left = rc.left + 2;
rc.right = rc.right - 2;
rc.bottom = rc.bottom - 2;
int cx = rc.right - rc.left;
int cy = rc.bottom - rc.top;
*/然后加上下面语句,虽然位置可能不太准确,但只需调试相应的数据就行了,我刚用过该控件,还是好用的
m_CreateTab.SetWindowPos(NULL,3,34,1200,400,SWP_SHOWWINDOW);
文本数据格式如下:
时间 频率 长度 高度
2008-1-1 345.123 329.987 1287.988
下面还有很多类似数据,导入到表格后根据频率范围差不多的进行查询,比如在329左右的频率筛选出来,大虾们,帮帮忙吧,有代码的发到[email protected]