我在OnInitDialog里加MessageBox,结果是先显示MessageBox,确定后才显示dialog.我希望的是先显示dialog,然后再显示MessageBox,该怎么做?
22 个解决方案
#1
domodal 后调用
#2
我是新手,但我想Dialog的创建需要一个构造函数
在这个构造函数里面调用MessageBox行不?
在这个构造函数里面调用MessageBox行不?
#3
在OnShowWindow
里面先调用CDialoe::OnShowWindow
再MessageBox
我想这样可以了吧
里面先调用CDialoe::OnShowWindow
再MessageBox
我想这样可以了吧
#4
在构造函数里面用应该是不行的.如果是有模对话框的话,应该在domodal之后加上messagebox,如果是无模对话框的话,应该在OnShowWindow函数之后再调用messagebox
#5
我试过了..
在domodal后调用,只要是在return之前,同样是先显示MessageBox.在OnShowWindow里也是一样的.在OnPaint里可以实现,但每次重绘它都会显示....
还有没有好的解决方法?
在domodal后调用,只要是在return之前,同样是先显示MessageBox.在OnShowWindow里也是一样的.在OnPaint里可以实现,但每次重绘它都会显示....
还有没有好的解决方法?
#6
顶上去...
#7
在OnInitialDialog中Post一个消息,在消息中显示就行了
too simple
too simple
#8
没空理你,重载一下OnInitialDialog()就行了,在里边添加你想执行的任何代码
#9
用OnPaint函数,设置一个标志例如:
flag 在构造函数中初始化flag =0;
if(flag ==1)
{
MessageBox();
flag =0;
}
flag 在构造函数中初始化flag =0;
if(flag ==1)
{
MessageBox();
flag =0;
}
#10
TO fantuan(饭团)
重载可以吗?问题是dialog是domodal出来的,MessageBox也是一个domodal的对话框,想两个一起出现,在OnInitialDialog里直接显示能行吗?
重载可以吗?问题是dialog是domodal出来的,MessageBox也是一个domodal的对话框,想两个一起出现,在OnInitialDialog里直接显示能行吗?
#11
用定时器做
#12
恩,用定时器应该可以。
#13
oninitialdialog 里面写就可以了 呵呵
#14
MARK
#15
oninitialdialog,,,,,,,,, 我支持这个
#16
#define WM_MYMESSAGEBOX WM_USER+100
//.h
afx_msg void OnMyMessageBox();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//.cpp
BEGIN_MESSAGE_MAP(CDialogMessageboxDlg, CDialog)
//{{AFX_MSG_MAP(CDialogMessageboxDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYMESSAGEBOX,OnMyMessageBox)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CDialogMessageboxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
..................
// TODO: Add extra initialization here
PostMessage(WM_MYMESSAGEBOX);
return TRUE; // return TRUE unless you set the focus to a control
}
void CDialogMessageboxDlg::OnMyMessageBox()
{
MessageBox("Kill me!");
}
//.h
afx_msg void OnMyMessageBox();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//.cpp
BEGIN_MESSAGE_MAP(CDialogMessageboxDlg, CDialog)
//{{AFX_MSG_MAP(CDialogMessageboxDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYMESSAGEBOX,OnMyMessageBox)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CDialogMessageboxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
..................
// TODO: Add extra initialization here
PostMessage(WM_MYMESSAGEBOX);
return TRUE; // return TRUE unless you set the focus to a control
}
void CDialogMessageboxDlg::OnMyMessageBox()
{
MessageBox("Kill me!");
}
#17
PostMessage heihei
#18
在OnInitDialog()中加入
MessageBox("");
就好了
MessageBox("");
就好了
#19
支持OnInitDialog()里写MessageBox的自己试试...
定时器也有问题,就是在规定时间内如果dialog都没有启动,那还不会先弹出MessageBox.本人比较赞同PostMessage...
定时器也有问题,就是在规定时间内如果dialog都没有启动,那还不会先弹出MessageBox.本人比较赞同PostMessage...
#20
根据fertiland(zero)的代码问题解决....
再次感谢大家的讨论!!!
再次感谢大家的讨论!!!
#21
mark
#22
太感谢了,提供这样的思路
#1
domodal 后调用
#2
我是新手,但我想Dialog的创建需要一个构造函数
在这个构造函数里面调用MessageBox行不?
在这个构造函数里面调用MessageBox行不?
#3
在OnShowWindow
里面先调用CDialoe::OnShowWindow
再MessageBox
我想这样可以了吧
里面先调用CDialoe::OnShowWindow
再MessageBox
我想这样可以了吧
#4
在构造函数里面用应该是不行的.如果是有模对话框的话,应该在domodal之后加上messagebox,如果是无模对话框的话,应该在OnShowWindow函数之后再调用messagebox
#5
我试过了..
在domodal后调用,只要是在return之前,同样是先显示MessageBox.在OnShowWindow里也是一样的.在OnPaint里可以实现,但每次重绘它都会显示....
还有没有好的解决方法?
在domodal后调用,只要是在return之前,同样是先显示MessageBox.在OnShowWindow里也是一样的.在OnPaint里可以实现,但每次重绘它都会显示....
还有没有好的解决方法?
#6
顶上去...
#7
在OnInitialDialog中Post一个消息,在消息中显示就行了
too simple
too simple
#8
没空理你,重载一下OnInitialDialog()就行了,在里边添加你想执行的任何代码
#9
用OnPaint函数,设置一个标志例如:
flag 在构造函数中初始化flag =0;
if(flag ==1)
{
MessageBox();
flag =0;
}
flag 在构造函数中初始化flag =0;
if(flag ==1)
{
MessageBox();
flag =0;
}
#10
TO fantuan(饭团)
重载可以吗?问题是dialog是domodal出来的,MessageBox也是一个domodal的对话框,想两个一起出现,在OnInitialDialog里直接显示能行吗?
重载可以吗?问题是dialog是domodal出来的,MessageBox也是一个domodal的对话框,想两个一起出现,在OnInitialDialog里直接显示能行吗?
#11
用定时器做
#12
恩,用定时器应该可以。
#13
oninitialdialog 里面写就可以了 呵呵
#14
MARK
#15
oninitialdialog,,,,,,,,, 我支持这个
#16
#define WM_MYMESSAGEBOX WM_USER+100
//.h
afx_msg void OnMyMessageBox();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//.cpp
BEGIN_MESSAGE_MAP(CDialogMessageboxDlg, CDialog)
//{{AFX_MSG_MAP(CDialogMessageboxDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYMESSAGEBOX,OnMyMessageBox)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CDialogMessageboxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
..................
// TODO: Add extra initialization here
PostMessage(WM_MYMESSAGEBOX);
return TRUE; // return TRUE unless you set the focus to a control
}
void CDialogMessageboxDlg::OnMyMessageBox()
{
MessageBox("Kill me!");
}
//.h
afx_msg void OnMyMessageBox();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//.cpp
BEGIN_MESSAGE_MAP(CDialogMessageboxDlg, CDialog)
//{{AFX_MSG_MAP(CDialogMessageboxDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYMESSAGEBOX,OnMyMessageBox)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CDialogMessageboxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
..................
// TODO: Add extra initialization here
PostMessage(WM_MYMESSAGEBOX);
return TRUE; // return TRUE unless you set the focus to a control
}
void CDialogMessageboxDlg::OnMyMessageBox()
{
MessageBox("Kill me!");
}
#17
PostMessage heihei
#18
在OnInitDialog()中加入
MessageBox("");
就好了
MessageBox("");
就好了
#19
支持OnInitDialog()里写MessageBox的自己试试...
定时器也有问题,就是在规定时间内如果dialog都没有启动,那还不会先弹出MessageBox.本人比较赞同PostMessage...
定时器也有问题,就是在规定时间内如果dialog都没有启动,那还不会先弹出MessageBox.本人比较赞同PostMessage...
#20
根据fertiland(zero)的代码问题解决....
再次感谢大家的讨论!!!
再次感谢大家的讨论!!!
#21
mark
#22
太感谢了,提供这样的思路