代替模态窗口~~

模式窗口太过于局限性,所以我研究了一个完全可以用window.open()代替window.showModalDialog()的方法,其资料贴在了下面:

 

有两个页面,一个是调用页面---main.html,一个是被调用页面---modalWindow.html

main.html

--------------------------------------------------------------------------------------------------------------------------------------------

click here


 <script>
  
 newWin=null;
  
function abc()
{
newWin =window.open('modalWindow.html','newWin','height=200,width=400,top=200,left=200,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no,status=no');
 
  
}

 

window.οnfοcus=function (){  

 if(newWin){
  if(!newWin.closed)
   newWin.focus();
  
 } 
 
};

window.document.οnfοcus=function (){  


 if(newWin){
  if(!newWin.closed)
 newWin.focus();
  
 } 
 
};

 

window.document.οnclick=function (){  


 if(newWin){
  if(!newWin.closed)
 newWin.focus();
  
 } 
 
};

window.document.οndblclick=function (){  


 if(newWin){
  if(!newWin.closed)
 newWin.focus();
  
 } 
 
};

</script>

 

----------------------------------------------------------------------------------------------------------------------------------

modalWindow.html

------------------------------------------------------------------------------------------------------------------------------------

sub window!!!!



 

在这个页面modalWindow.html中的方法可以调用父窗口的方法

其用法是 opener.functionName(param);

在Visual C++中创建非模态对话框,首先需要在资源编辑器中创建一个新的对话框资源。然后,需要编写代码来加载并显示这个对话框,但不阻止父窗口的操作。以下是一个简单的示例代码,演示如何实现非模态对话框: 1. 打开VC++项目资源编辑器,添加一个新的对话框资源。 2. 设计对话框,添加所需的控件,如按钮、编辑框等。 3. 为对话框添加一个类,比如命名为`CMyDialog`,并为每个控件添加控件变量和消息处理函数。 ```cpp // MyDialog.h class CMyDialog : public CDialog { // ... 其他代码 ... // 控件变量声明 CButton m_button1; CEdit m_edit1; // 对话框消息处理函数声明 afx_msg void OnBnClickedButton1(); // 假设有一个按钮用来关闭对话框 DECLARE_MESSAGE_MAP() }; // MyDialog.cpp BEGIN_MESSAGE_MAP(CMyDialog, CDialog) // ... 其他消息映射 ... ON_BN_CLICKED(IDC_MYBUTTON, &CMyDialog::OnBnClickedButton1) // 假设按钮的ID是IDC_MYBUTTON END_MESSAGE_MAP() void CMyDialog::OnBnClickedButton1() { // 当按钮被点击时,关闭对话框 DestroyWindow(); } // 在某个父窗口类中,添加代码创建并显示非模态对话框 void CParentWindow::ShowMyDialog() { CMyDialog dlg; dlg.DoModal(); // 对于非模态对话框,我们不调用DoModal(),而是直接创建并显示 // 注意:此处使用Create代替DoModal,并传入父窗口的指针 dlg.Create(CMyDialog::IDD, this); // IDD是对话框资源的ID dlg.ShowWindow(SW_SHOW); // 显示对话框 } ``` 4. 在父窗口类中,实现一个函数来创建并显示非模态对话框。注意,不要使用`DoModal()`方法,因为这会导致模态行为。使用`Create`和`ShowWindow`方法来创建和显示对话框。 需要注意的是,非模态对话框允许用户同时与多个窗口交互,而不会阻塞父窗口或其他窗口。父窗口在创建非模态对话框后,通常会继续执行后续的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值