VC 中 非模态对话框 按钮返回值 问题 80
我在头文件中申明了2个对话框指针如下:(都是子窗口)public:CDialogGUIDE*GUIDE;CDialogCARD*CARD;我在OnInitDialog函数...
我在头文件中申明了2个对话框指针如下:(都是子窗口)
public:
CDialogGUIDE *GUIDE;
CDialogCARD *CARD;
我在OnInitDialog函数中分配空间并生产对话框,如下:
//生成界面
GUIDE=new CDialogGUIDE();
GUIDE->Create(IDD_DIALOG_GUIDE);
GUIDE->ShowWindow(SW_HIDE);
CARD=new CDialogCARD();
CARD->Create(IDD_DIALOG_CARD);
CARD->ShowWindow(SW_HIDE);
现在,我在主窗口中的菜单中单击选项,产生如下操作:(问题出在这里)
void CTechnologyCenterDlg::OnMenuitemDevice()
{
// TODO: Add your command handler code here
GUIDE->ShowWindow(SW_HIDE);
GUIDE->ShowWindow(SW_SHOW);
//数据库操作
// CARD->ShowWindow(SW_HIDE);
// CARD->ShowWindow(SW_SHOW);
}
因为我产生的是非模态对话框,所以我在非模态对话框中点击 确定 按钮没有任何反应(除了对话框隐藏之外)。
而我需要的是:当我点击按钮之后,代码能够在void CTechnologyCenterDlg::OnMenuitemDevice()中续续运行。
因为我要动态的在GUIDE中设置一些参数,所以无法把GUIDE设置成模态对话框。
所以,现在我的问题是:如何在非模态对话框中点击按钮,我在主函数的菜单项中继续操作
你好,二楼,谢谢你的回答,不过,我要说明一点是,我是主对话框调用非模态对话框。两个对话框时不同的,所以你的那个直接OnBtnOK()可能无法用 展开
public:
CDialogGUIDE *GUIDE;
CDialogCARD *CARD;
我在OnInitDialog函数中分配空间并生产对话框,如下:
//生成界面
GUIDE=new CDialogGUIDE();
GUIDE->Create(IDD_DIALOG_GUIDE);
GUIDE->ShowWindow(SW_HIDE);
CARD=new CDialogCARD();
CARD->Create(IDD_DIALOG_CARD);
CARD->ShowWindow(SW_HIDE);
现在,我在主窗口中的菜单中单击选项,产生如下操作:(问题出在这里)
void CTechnologyCenterDlg::OnMenuitemDevice()
{
// TODO: Add your command handler code here
GUIDE->ShowWindow(SW_HIDE);
GUIDE->ShowWindow(SW_SHOW);
//数据库操作
// CARD->ShowWindow(SW_HIDE);
// CARD->ShowWindow(SW_SHOW);
}
因为我产生的是非模态对话框,所以我在非模态对话框中点击 确定 按钮没有任何反应(除了对话框隐藏之外)。
而我需要的是:当我点击按钮之后,代码能够在void CTechnologyCenterDlg::OnMenuitemDevice()中续续运行。
因为我要动态的在GUIDE中设置一些参数,所以无法把GUIDE设置成模态对话框。
所以,现在我的问题是:如何在非模态对话框中点击按钮,我在主函数的菜单项中继续操作
你好,二楼,谢谢你的回答,不过,我要说明一点是,我是主对话框调用非模态对话框。两个对话框时不同的,所以你的那个直接OnBtnOK()可能无法用 展开
5个回答
展开全部
当我点击按钮之后,代码能够在void CTechnologyCenterDlg::OnMenuitemDevice()中续续运行。
这句是什么意思?代码继续运行?非模态对话框不关闭?还是什么?
不是很理解你要表达的意思
大概的提示是这样的:
如果要通过修改非模态对话框中的选项来改变主函数中的某些值的话,在非模态对话框中添加函数,点击确定按钮时,函数返回一个值,然后主函数调用这个函数,判断是否修改值。例如:
if(GUIDE->OnBtnOK() == 1)//OnBtnOK()为自定义的返回函数
{
a = GUIDE.a;
...
}
-----------------------------------------------------------------
GUIDE->OnBtnOK() 是调用非模态对话框的成员函数,跟主对话框没有任何关系
OnBtnOK()是自定义的函数
这句是什么意思?代码继续运行?非模态对话框不关闭?还是什么?
不是很理解你要表达的意思
大概的提示是这样的:
如果要通过修改非模态对话框中的选项来改变主函数中的某些值的话,在非模态对话框中添加函数,点击确定按钮时,函数返回一个值,然后主函数调用这个函数,判断是否修改值。例如:
if(GUIDE->OnBtnOK() == 1)//OnBtnOK()为自定义的返回函数
{
a = GUIDE.a;
...
}
-----------------------------------------------------------------
GUIDE->OnBtnOK() 是调用非模态对话框的成员函数,跟主对话框没有任何关系
OnBtnOK()是自定义的函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然是非模态就不能这样用
你可以让这个非模态对话框发送自定义消息到主对话框继续执行嘛
或者加一个线程 设置等待事件 这个似乎大才效用了 还是上面那种方法吧
我怎么写例子呀? 代码那么多 又很分散 你看看怎么接受自定义消息 不难的
你可以让这个非模态对话框发送自定义消息到主对话框继续执行嘛
或者加一个线程 设置等待事件 这个似乎大才效用了 还是上面那种方法吧
我怎么写例子呀? 代码那么多 又很分散 你看看怎么接受自定义消息 不难的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得主要是问题是父窗口没有获取子窗口的句柄,不可以对他进行操作;
我也做过类似的项目,我是这样做的:
设置全局变量 extern bool IsHide;//当然2个要做2个变量了哦;在父窗口的按钮事件设置IsHide值
//为true 就隐藏,false为现实;
那么,怎么对子窗口进行设置呢
1.在子窗口添加Timer()
2.添加ontimer函数
{
if(IsHide) this->ShowWindow(SW_HIDE);
else this->ShowWindow(SW_SHOW);
}
oK 了。
楼主不要忘记给分哦!
我也做过类似的项目,我是这样做的:
设置全局变量 extern bool IsHide;//当然2个要做2个变量了哦;在父窗口的按钮事件设置IsHide值
//为true 就隐藏,false为现实;
那么,怎么对子窗口进行设置呢
1.在子窗口添加Timer()
2.添加ontimer函数
{
if(IsHide) this->ShowWindow(SW_HIDE);
else this->ShowWindow(SW_SHOW);
}
oK 了。
楼主不要忘记给分哦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当我点击按钮之后,代码能够在void
CTechnologyCenterDlg::OnMenuitemDevice()中续续运行。
这句是什么意思?代码继续运行?
CTechnologyCenterDlg::OnMenuitemDevice()中续续运行。
这句是什么意思?代码继续运行?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询