VC++,怎样设置对话框的位置

时间:2022-05-05 23:41:36

各位好, 

有二个对话框,一个对话框(IDC_Dlg1)设置另一的对话框(IDC_Dlg2)的位置。请问怎去调用那个对话框,并即时移动对话框(IDC_Dlg2)位置: 

GetDlgItem(IDC_Dlg2)->SetWindowPos(&wndTopMost,m_positionx, m_positiony, 0, 0, SWP_NOSIZE); 

运行时这个对话况就会死机,请问有何错误。 

SIMON 

9 个解决方案

#1


在BOOL Cyoudialog_2::OnInitDialog() 
{
}
中使用SetWindowPos(。。。)就可以的!

#2


我已在Cyoudialog_2::OnInitDialog() 使用SetWindowPos(。。。)
并在对话框(IDC_Dlg1)输入UpdateData(TRUE),
但我不想关闭对话框(IDC_Dlg1)。请问有何方法?

SIMON

#3


(IDC_Dlg1)输入UpdateData(TRUE) ?? 加这句干什么?有变量和控件交换数据吗?
IDC_Dlg1 怎么会关闭呢?你不是把IDC_Dlg2的显示代码加到 确定\取消 按钮里去了吧?
要是这样 去掉 CDialog::OnOK(); 或 CDialog::OnCancel(); 语句


#4


SetWindowPos

#5


用SetWindowPos一定行的,我试过

#6


GetDlgItem 是获取本对话框控件的子窗口,所以不对。
应该把对话框(IDC_Dlg2)的实例地址传到对话框(IDC_Dlg1),比如m_pDlg2,再调用 
m_dlg2->SetWindowPos(&wndTopMost,m_positionx, m_positiony, 0, 0, SWP_NOSIZE); 

#7


另外可以在IDC_Dlg2中定义一个改变自己位置的函数,位置通过参数传递,这样IDC_Dlg1就可以调用它来实现你需要的功能

#8


MoveWindow() or SetWindowPos()

#9


你怎么能用GetDlgItem()来获取对话框的句柄呢?如果说对话框2是由对话框1创建的话,应该会存在一个句柄在对话框1中吧?这样你可以直接使用m_dlg2->SetWindowpos();如果不是由对话框1创建的,那么你就应该想办法保存下来或者查找这个对话框的句柄.

#1


在BOOL Cyoudialog_2::OnInitDialog() 
{
}
中使用SetWindowPos(。。。)就可以的!

#2


我已在Cyoudialog_2::OnInitDialog() 使用SetWindowPos(。。。)
并在对话框(IDC_Dlg1)输入UpdateData(TRUE),
但我不想关闭对话框(IDC_Dlg1)。请问有何方法?

SIMON

#3


(IDC_Dlg1)输入UpdateData(TRUE) ?? 加这句干什么?有变量和控件交换数据吗?
IDC_Dlg1 怎么会关闭呢?你不是把IDC_Dlg2的显示代码加到 确定\取消 按钮里去了吧?
要是这样 去掉 CDialog::OnOK(); 或 CDialog::OnCancel(); 语句


#4


SetWindowPos

#5


用SetWindowPos一定行的,我试过

#6


GetDlgItem 是获取本对话框控件的子窗口,所以不对。
应该把对话框(IDC_Dlg2)的实例地址传到对话框(IDC_Dlg1),比如m_pDlg2,再调用 
m_dlg2->SetWindowPos(&wndTopMost,m_positionx, m_positiony, 0, 0, SWP_NOSIZE); 

#7


另外可以在IDC_Dlg2中定义一个改变自己位置的函数,位置通过参数传递,这样IDC_Dlg1就可以调用它来实现你需要的功能

#8


MoveWindow() or SetWindowPos()

#9


你怎么能用GetDlgItem()来获取对话框的句柄呢?如果说对话框2是由对话框1创建的话,应该会存在一个句柄在对话框1中吧?这样你可以直接使用m_dlg2->SetWindowpos();如果不是由对话框1创建的,那么你就应该想办法保存下来或者查找这个对话框的句柄.