对话框该在何时处理这些涵数???? 我想在一个对话框完全显示后再自动开始做一些事情,该在哪个涵数中写代码?我试着在OnInitDialog()里面加一句MessageBox(),可还是先显示的MessageBox我在OnShowWindow()里加了也还是一样,MessageBox总是早于该对话框 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用线程或者消息CreateThread CMyDialogApp::InitInstance(){ CMyDialog dlg; dlg.DoModal(); // 这一句说明对话框已进入了模式消息循环, 用户不能响应}如上: 用线程, 在对话框初始化完后, 激发一个EVENT 也可以在ON_TIMER事件中,触发事件,结束之后,然后killTimer.BOOL CT1Dlg::OnInitDialog() { CDialog::OnInitDialog(); SetTimer(1,1000,NULL); return TRUE; }void CT1Dlg::OnTimer(UINT nIDEvent) { //进行事件处理 KillTimer(1); CT1Dlg::OnTimer(nIDEvent);} 在OnInitDialog里PostMessage(),在消息响应里做你想做的事情 用线程是方便,但楼主的这个问题用线程显得过于复杂了。用ON_TIMER就行了。在CLASSWIZARD中,加上TIMER.BOOL Dlg::OnInitDialog() { CDialog::OnInitDialog(); SetTimer(1,1000,NULL); return TRUE; }BOOL Dlg::OnTimer(UINT nIDEvent){ switch(nIDEvent) { case 1: MessageBox(); KillTimer(); break; default:; } 简单点就用定时器BOOL CTest6Dlg::OnInitDialog() { CDialog::OnInitDialog(); SetTimer(1,1,NULL); return TRUE; }void CTest6Dlg::OnTimer(UINT nIDEvent) { KillTimer(1); AfxMessageBox("11"); CTest6Dlg::OnTimer(nIDEvent);} #define WM_SHOWDLG WM_USER+100BEGIN_MESSAGE_MAP(CAaaDlg, CDialog) //{{AFX_MSG_MAP(CAaaDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_MESSAGE(WM_SHOWDLG,myShowDlg)END_MESSAGE_MAP()BOOL CAaaDlg::OnInitDialog(){ CDialog::OnInitDialog();//...................// ::MessageBox(NULL,"bb","aa",MB_OK); PostMessage(WM_SHOWDLG,0,0); return TRUE; // return TRUE unless you set the focus to a control}void CAaaDlg::myShowDlg(){ ::MessageBox(NULL,"bb","aa",MB_OK);} 某专用IM“回帖哨兵”功能测试贴(release 2) 请问 vc2005如可以生成makefile么 ocx 静态调用 dll 问题,dllmain 冲突 VS2005是否能调试VC++程序? 为什么在线程中用invalidate没有用? 关于对话框的问题 当我们按下ALT+TAB的时候,系统收到的是怎样的消息?我想用自己的程序去模拟ALT+TAB,结果没作用。求教! 注册表中已经有组件的CLSID、接口的IID 等信息,为什么COM还需要类型库??? 使用JpegLib的一个问题,请高手帮忙 第一次发帖。。。 ODB记录如何更新? 如何将一个16进制的字符串转化为一个十进制的数?
CreateThread
{ CMyDialog dlg;
dlg.DoModal();
// 这一句说明对话框已进入了模式消息循环, 用户不能响应
}如上: 用线程, 在对话框初始化完后, 激发一个EVENT
BOOL CT1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetTimer(1,1000,NULL);
return TRUE;
}
void CT1Dlg::OnTimer(UINT nIDEvent)
{
//进行事件处理
KillTimer(1);
CT1Dlg::OnTimer(nIDEvent);
}
在CLASSWIZARD中,加上TIMER.
BOOL Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetTimer(1,1000,NULL);
return TRUE;
}
BOOL Dlg::OnTimer(UINT nIDEvent)
{
switch(nIDEvent)
{
case 1:
MessageBox();
KillTimer();
break;
default:;
}
BOOL CTest6Dlg::OnInitDialog()
{
CDialog::OnInitDialog(); SetTimer(1,1,NULL); return TRUE;
}
void CTest6Dlg::OnTimer(UINT nIDEvent)
{
KillTimer(1); AfxMessageBox("11"); CTest6Dlg::OnTimer(nIDEvent);
}
BEGIN_MESSAGE_MAP(CAaaDlg, CDialog)
//{{AFX_MSG_MAP(CAaaDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_SHOWDLG,myShowDlg)
END_MESSAGE_MAP()
BOOL CAaaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//...................
// ::MessageBox(NULL,"bb","aa",MB_OK);
PostMessage(WM_SHOWDLG,0,0);
return TRUE; // return TRUE unless you set the focus to a control
}
void CAaaDlg::myShowDlg()
{
::MessageBox(NULL,"bb","aa",MB_OK);
}