DoModal和ShowWindow的问题

kantonwang_vc 2007-01-22 05:49:03
dlg.DoModal为模式弹出,此时后面的窗口不能被调用的,现在一个窗口必须无模式显示,但是又不想后面的窗口能被操作,即用无模式实现代码,但是表示的效果要像模式窗口那样,附上无模式的代码,请大家指点,谢谢!
CAlertDlg *pAlert = NULL;
pAlert = new CAlertDlg();
pAlert->Create(IDD_DIALOG_ALERT);
pAlert->CenterWindow();
pAlert->ShowWindow(SW_SHOWNORMAL);
...全文
817 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iec 2007-02-08
  • 打赏
  • 举报
回复
mk
kantonwang_vc 2007-02-05
  • 打赏
  • 举报
回复
谢谢大家的帮忙,已经用其他方法解决了,这个问题结束。
kantonwang_vc 2007-02-05
  • 打赏
  • 举报
回复
谢谢大家的帮忙,已经用其他方法解决了,这个问题结束。
CharlesPrince 2007-01-24
  • 打赏
  • 举报
回复
你是指窗体要在最前端显示吗?
用WS_EX_TOPMOST样式吧
在资源编辑器中或ModifyStyleEx(0,WS_EX_TOPMOST,);
sokewoniu 2007-01-23
  • 打赏
  • 举报
回复
对对话框中的控件这么做
GetDlgItem(IDC_EDIT1)->ModifyStyleEx(0,0x00400000L,0);
sokewoniu 2007-01-23
  • 打赏
  • 举报
回复
这能解决你上个贴子中的问题,不知道你这个帖子中是不是指的这个界面反转的问题,希望我没理解错
sokewoniu 2007-01-23
  • 打赏
  • 举报
回复
在OnInitDialog()中调用下一语句
ModifyStyleEx(0,0x00400000L,0);
Joany_yang 2007-01-23
  • 打赏
  • 举报
回复
CWnd::EnableWindow(BOOL bEnable) //Enables or disables mouse and keyboard input for a specify window
blackmurder 2007-01-22
  • 打赏
  • 举报
回复
在ShowWindow()后面加句SetFocus()试试
no111 2007-01-22
  • 打赏
  • 举报
回复
窗口弹出后禁用那个指定窗口,不就行吗?
kantonwang_vc 2007-01-22
  • 打赏
  • 举报
回复
楼上的大哥不是不想阿,为了实现其他的功能,才出此下策的。参见http://community.csdn.net/Expert/TopicView1.asp?id=5307283
ouyh12345 2007-01-22
  • 打赏
  • 举报
回复
为什么不能用模式对话框?
要完成非模式对话框象模式对话框的功能,需要做的东西太多了。
需要拦截鼠标、键盘消息并处理。
采用MFC编程时,子对话框常常要向主窗口传递数据,获取主窗口的对象指针便显得非常重要了。 void CMyView::OnModel() //点击菜单,创建对话框的几种变量设置,总共是4种方法,模态的一种,非模态的三种 { // TODO: Add your command handler code here //CDialog modDlg(MAKEINTRESOURCE(IDD_MODEL),this); //modDlg.DoModal(); static bool num=0;//第一次执行第一段,以后再打开都执行第二段。 static CModDlg Dlgless(this);//将MyView指针传进去 if (0==num) { CModDlg mod(this);//将MyView指针传进去 //mod.SetWindowText("局部变量——模态对话框");不允许动态设置模态对话框标题?这句编绎会出错 mod.DoModal(); Dlgless.Create(IDD_MODEL);//重复执行会出错,要放到构造函数中好 Dlgless.ShowWindow(SW_SHOW); Dlgless.SetWindowText("局部静态变量——非模对话框"); m_dlgless.Create(IDD_MODEL,this);//重复执行会出错,要放到构造函数中好 m_dlgless.ShowWindow(SW_SHOW); m_dlgless.SetWindowText("成员非指针变量——非模对话框"); m_pDlgless=new CModDlg(this);//重复执行会出错,要放到构造函数中好, m_pDlgless->Create(IDD_MODEL);//重复执行会出错,要放到构造函数中好, m_pDlgless->ShowWindow(SW_SHOW); m_pDlgless->SetWindowText("成员指针变量——非模对话框"); num=1; } else { Dlgless.ShowWindow(SW_SHOW); m_dlgless.ShowWindow(SW_SHOW); m_pDlgless->ShowWindow(SW_SHOW); } }
你的程序加密过OD MD5值支持二次开发使用 防破解验证也可实现一机一码 VC++ 开发 STARTUPINFO startup; PROCESS_INFORMATION process; CString g_strCompanyName1 = ""; CString g_strCompanyName2 = ""; CString g_strCompanyName3 = ""; CString g_strCompanyName = "**"; BOOL CTaiShanApp::InitInstance() { AfxEnableControlContainer(); //#ifdef ZJH m_gMessageID = ::RegisterWindowMessage("WsSendMessageHqData"); CFileFind fnd; if(S_OK != ::CoInitialize (NULL)) return FALSE; // ReadDiskIDPartCwd(); // if(!FyRegister::IsValidUser()) // return FALSE; memset( &startup, 0, sizeof( startup ) ); startup.cb = sizeof( startup ); memset( &process, 0, sizeof( process ) ); if(fnd.FindFile ("WsSendMessageShare.exe")) { m_gbUseExe = true; } hAppMutex=::CreateMutex(NULL,TRUE,m_pszExeName); if(GetLastError() == ERROR_ALREADY_EXISTS) { CWnd *pPrevWnd = CWnd::GetDesktopWindow()->GetWindow(GW_CHILD); while(pPrevWnd) { if(::GetProp(pPrevWnd->GetSafeHwnd(),m_pszExeName)) { if(pPrevWnd->IsIconic()) pPrevWnd->ShowWindow(SW_RESTORE); pPrevWnd->SetForegroundWindow(); pPrevWnd->GetLastActivePopup()->SetForegroundWindow(); return false; } pPrevWnd = pPrevWnd->GetWindow(GW_HWNDNEXT); } return false; } //#endif #ifndef _NET_AUTHEN HMODULE hModule; hModule = LoadLibrary("ide21201.dll"); if (hModule==NULL) { AfxMessageBox("Can't find ide21201.dll"); return FALSE; } char *(WINAPI * GetIdeSerial)(); GetIdeSerial = (char *(WINAPI *)())GetProcAddress(hModule, "GetIdeSerial"); if (GetIdeSerial==NULL) { AfxMessageBox("Can't find GetIdeSerial in ide21201.dll"); return FALSE; } CString strSerialNumber;// = SERIAL_NUMBER; strSerialNumber = GetIdeSerial(); strSerialNumber.TrimLeft(" "); if (strSerialNumber.Compare(SERIAL_NUMBER)!=0) { AfxMessageBox("序列号错误"); return FALSE; } #else CDlgLogin dlgLogin; int nResponse = dlgLogin.DoModal(); if (nResponse!=1) return FALSE; #endif /* CDialogShowInformation dlg; dlg.DoModal();*/ int nResult; m_bAppAuthorized=TRUE; // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. CTaiTestSplash *m_splash; BOOL SplashOpen=FALSE; m_splash = new CTaiTestSplash; SplashOpen=m_splash->Create(); if( SplashOpen ) m_splash->ShowWindow(SW_SHOW); DWORD Currenttime=GetTickCount(); BeginWaitCursor(); #ifdef TEST_USER1 t = CTime::GetCurrentTime(); CTime t2 = g_timeUseEnd; if(t >= t2) { // AfxMessageBox("试用期已过,若想继续使用,请购买正式版!",MB_OK | MB_ICONSTOP); return false; } else 以上为部分代码

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧