来一个简单问题? 我用Create方式创建一个非模态对话框,程序内部经常ShowWindow隐藏和显示,和CTabCtrl一起使用,模仿属性对话框。当我ShowWindow(SW_SHOW)之后,如何判断对话框已经完全现实好了?简单吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试看这个API:BOOL IsWindowVisible(HWND hWnd); 俺脚着执行完了show就show了。 一般窗口show出来的时候,应该控件什么都准备好了。 int i = 0;func1(){ShowWindow(SW_SHOW);i = 1;}thead1(){while(!i)Sleep(10);......}是你想要的么?ShowWindow之后控件就全部显示了 你ShowWindow(SW_SHOW)了以后,能看到对话框的话,就表明都实现好了 各位,我创建了一个默认的MFC对话框工程把那个默认的静态控件改了ID后隐藏了,实现了如下代码void CADlg::OnOK() { GetDlgItem(IDC_STATIC111)->ShowWindow(SW_SHOW); while (1){ ...... }}在GetDlgItem(IDC_STATIC111)->ShowWindow(SW_SHOW);调用完后,静态控件并没有立刻显示出来大概因为WM_PAINT消息的优先级不高吧我想在控件显示出来之后,调用while里的代码,PostMessage发送一个消息不灵,难道让我用Timer?(真正的代码可不止这一个控件哦) 你先把后面的while段注释掉,看看控件能显示出来么 另外void CADlg::OnOK() 执行完对话框不就关闭了么你干嘛写在这里面 那就是有问题导致它没显示出来,而不是还没来得及显示。-----------------------------------------------------没有问题,是没来得及显示你先把后面的while段注释掉,看看控件能显示出来么-------------------------------------------------能显示,我想知道的就是都显示出来之后那一刻是什么时候,如何截获那一时刻void CADlg::OnOK()-------------------只有执行了基类的CDialog::OnOK()才会执行关闭动作我在这里只是当个普通按钮用用 GetDlgItem(IDC_STATIC111)->ShowWindow(SW_SHOW);没有显示,那要多久? 如果是基于webbrowse控件的窗口显示可能确实不能在主窗口显示后立即显示出来。不过可以通过其onload消息来判断。对于基于其它控制的窗口,如果发现显示延迟问题,应该了解其工作原理,再分析其界面不能立即显示的原因,然后寻找相应的对策。 void CADlg::OnOK()一执行就退出了,除非你自己改了自动生成的代码,才不会退出。,,你看看你改了没有,没改得话还是不要在void CADlg::OnOK()里运行。 把你的void CADlg::OnOK()里德代码完整的贴出来?你的while里在做什么? 试试看这个API:BOOL IsWindowVisible(HWND hWnd); 童鞋们呐,问题没那么复杂跟我的while(...)...啥的没关系ShowWindow(SW_SHOW);这句话执行完后,对话框不会立即在屏幕上画出来我就是想问,什么时候对话框及其子控件能在屏幕上画出来 不难,你为对话框设置一个变量。m_bInit = false;当你的检索成功的时候,再把它置真。然后你就能根据m_bInit的值判断你想要的东西。。 VC++6.0中怎么让 MSChart显示数据库中数据的曲线啊 VC中如何把SOCKET中接收的字符数组显示在列表视图中 第1行:‘餐‘附近有语法错误 这个错误是怎么回事? vc中如何实现对access的共享访问? 这个这段代码什么地方有问题? (拦截API的) 求助大家文件打开的一种形式 怎样响应和处理DialogBar上的ScrollBar控件? 一个大家做项目都会碰到的问题,进来看看啊? 病毒形成的folder.htt和desktop.ini,有什么可以杀? 虚函数表错了么? 位图转换 CodeBlocks+MinGw编译器,用什么检测内存泄漏?
BOOL IsWindowVisible(HWND hWnd);
{
ShowWindow(SW_SHOW);
i = 1;
}
thead1()
{
while(!i)
Sleep(10);
......
}是你想要的么?
ShowWindow之后控件就全部显示了
把那个默认的静态控件改了ID后隐藏了,实现了如下代码void CADlg::OnOK()
{
GetDlgItem(IDC_STATIC111)->ShowWindow(SW_SHOW);
while (1){
......
}
}在GetDlgItem(IDC_STATIC111)->ShowWindow(SW_SHOW);调用完后,静态控件并没有立刻显示出来
大概因为WM_PAINT消息的优先级不高吧我想在控件显示出来之后,调用while里的代码,PostMessage发送一个消息不灵,难道让我用Timer?
(真正的代码可不止这一个控件哦)
-----------------------------------------------------
没有问题,是没来得及显示你先把后面的while段注释掉,看看控件能显示出来么
-------------------------------------------------
能显示,我想知道的就是都显示出来之后那一刻是什么时候,如何截获那一时刻void CADlg::OnOK()
-------------------
只有执行了基类的CDialog::OnOK()才会执行关闭动作
我在这里只是当个普通按钮用用
GetDlgItem(IDC_STATIC111)->ShowWindow(SW_SHOW);
没有显示,那要多久?
一执行就退出了,除非你自己改了自动生成的代码,才不会退出。,,你看看你改了没有,没改得话还是不要在void CADlg::OnOK()里运行。
BOOL IsWindowVisible(HWND hWnd);
跟我的while(...)...啥的没关系ShowWindow(SW_SHOW);
这句话执行完后,对话框不会立即在屏幕上画出来我就是想问,什么时候对话框及其子控件能在屏幕上画出来
m_bInit = false;
当你的检索成功的时候,再把它置真。
然后你就能根据m_bInit的值判断你想要的东西。。