斑竹是谁啊,一个问题问了那么久,都没人回呢???

nightlocus 2004-09-30 08:31:02
http://community.csdn.net/Expert/topic/3416/3416073.xml?temp=.5062525
问了好几天,都不见有人会啊,怎么了????
...全文
242 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
nightlocus 2004-10-08
  • 打赏
  • 举报
回复
真郁闷,这么久都没人回啊
nightlocus 2004-10-08
  • 打赏
  • 举报
回复
问题是老问题,不过刚遇到
那你说说怎么解决呢?
lixiaosan 2004-10-08
  • 打赏
  • 举报
回复
sorry,国庆这几天出去了。。
nightlocus 2004-10-08
  • 打赏
  • 举报
回复
好了,问题自己解决了,问来问去,都不是好答案,每次都郁闷,分该给谁里,都没帮上忙
yafizyh 2004-10-07
  • 打赏
  • 举报
回复
老早就见过了,几年前的问题,有拿出来。
快乐鹦鹉 2004-09-30
  • 打赏
  • 举报
回复
很显然啊,因为你前面的dialog是模态对话框,当调用DoModal()后,主线程会等待这个对话框运行结束才退出,所以这时候你可以很轻松的操作login对话框。但你创建的pWnd可不是这样啊。如果CShowControlWnd是个对话框的话,那么,你用Create方式创建就是建立了一个非模态对话框。非模态对话框是不阻塞主线程的。因此在pWnd->ShowWindow(SW_SHOW)后,程序是继续向下执行的!!!一直执行到return true后,整个应用程序就结束了!因此你只能看到窗口闪一下而已。
要想不退出,你就必须想办法阻塞主线程,要么用模态对话框,要么就要做个循环之类的,总之程序不能运行到return true,否则就整个应用程序运行结束了。
明白了么???
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
我说的意思就是先启动一个dialog,当dialog消失的时候,再生成一个窗口。可是生成这个窗口的时候一闪就不见了呢?为什么
BOOL CConferClientApp::InitInstance()
{
CPLoginDialog pLogin;
m_pMainWnd=&pLogin;
int nResponse = pLogin.DoModal();
if (nResponse == IDOK)
{
CShowControlWnd *pWnd=new CShowControlWnd;
pWnd->Create();
pWnd->ShowWindow(SW_SHOW);
pWnd->UpdateWindow();
m_pMainWnd=pWnd;
}
else if (nResponse == IDCANCEL)
{
IsInMain=false;
PostQuitMessage(0);
}
delete pLogin;
return true;
}
可是这个窗口只闪一下就不见了呢?
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
我写的很清楚了,怕写的少了你们才爱看不懂的。
问题说小也算小,说大也算大。
你不事实,估计你也解决不了
名牌大灰狼 2004-09-30
  • 打赏
  • 举报
回复
去看看
try876 2004-09-30
  • 打赏
  • 举报
回复
回答了,不知道是不是你想要的,下次问问题麻烦写清楚点
hhjdk967 2004-09-30
  • 打赏
  • 举报
回复
很牛的一个人啊,是你问别人不是别人求你
快乐鹦鹉 2004-09-30
  • 打赏
  • 举报
回复
我看了一下,本来应该不难的问题,但是你说的我看不懂。。。。。。
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
应该不是架够的问题
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
哦,是吗,我感觉应该不会有什么问题的?
我再看看吧
ChangeMyHead 2004-09-30
  • 打赏
  • 举报
回复
搂住的结构估计就有问题了,建议搂住重新做一下结构
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
我后来找了一个跟我做的基本上一样的东西看了看,可是他的里面就可以直接调用RedrawWindwo()来更新界面,我的一更新就异常,只能这样发送消息。
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
我改了好几次了,如果把m_pMainWnd=&pLogin;去掉,我在这个dialog里面有个SendMessage()要发送一个消息去更新我的对话筐界面,就会出现异常操作,ASSERT(IsWindow(m_hWnd)); 这个窗口可能不存在了。所以无法更新界面。只能设置为m_pMainWnd,然后AfxGetApp->m_pMainWnd->SendMessage();
ChangeMyHead 2004-09-30
  • 打赏
  • 举报
回复
//靠,你仿照一下也不行?????????????????
BOOL CConferClientApp::InitInstance()
{
CPLoginDialog pLogin;
//m_pMainWnd=&pLogin; //你把这行去掉
int nResponse = pLogin.DoModal();
if (nResponse == IDOK)
{
CShowControlWnd *pWnd=new CShowControlWnd;
pWnd->Create();
pWnd->ShowWindow(SW_SHOW);
pWnd->UpdateWindow();
m_pMainWnd=pWnd;
}
else if (nResponse == IDCANCEL)
{
}
//delete pLogin;
return TRUE;
}
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
奇怪,在OnInitDialog()里面
我HWND hWnd=GetSafeHwnd();了
可是在SendMessage(hWnd,....);却出现这个hWnd=NULL的异常呢?为什么?
nightlocus 2004-09-30
  • 打赏
  • 举报
回复
CShowControlWnd oWnd;
oWnd.DoModal();
???????
CShowControlWnd:public CWnd;
那里来的DoModal??
加载更多回复(4)

15,979

社区成员

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

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