MFC下面一段程序是一个对话框上OK按钮的消息处理函数
这个OK按钮点过后会出现一个子对话框来显示结果,但是我在Dioalog中并没找到这个子对话框的资源什么回事?它是通过什么方式来显示子对话框的voidCOpenDlg::O...
这个OK按钮点过后会出现一个子对话框来显示结果,但是我在Dioalog中并没找到这个子对话框的资源什么回事?它是通过什么方式来显示子对话框的
void COpenDlg::OnOK()
{
CString filterPrefix;
VERIFY(filterPrefix.LoadString(IDS_FILTER_PREFIX));
UpdateData(TRUE);
TrimPaths();
m_pathsType = GetPairComparability(m_strLeft, m_strRight);
if (m_pathsType == DOES_NOT_EXIST)
{
AfxMessageBox(IDS_ERROR_INCOMPARABLE, MB_ICONSTOP);
return;
}
m_strRight = paths_GetLongPath(m_strRight);
m_strLeft = paths_GetLongPath(m_strLeft);
// Add trailing '\' for directories if its missing
if (m_pathsType == IS_EXISTING_DIR)
{
if (!paths_EndsWithSlash(m_strLeft))
m_strLeft += '\\';
if (!paths_EndsWithSlash(m_strRight))
m_strRight += '\\';
}
UpdateData(FALSE);
KillTimer(IDT_CHECKFILES);
m_strExt.TrimLeft();
m_strExt.TrimRight();
// If prefix found from start..
if (m_strExt.Find(filterPrefix, 0) == 0)
{
// Remove prefix + space
m_strExt.Delete(0, filterPrefix.GetLength());
if (!theApp.m_globalFileFilter.SetFilter(m_strExt))
{
// If filtername is not found use default *.* mask
theApp.m_globalFileFilter.SetFilter(_T("*.*"));
m_strExt = _T("*.*");
}
mf->m_options.SaveOption(OPT_FILEFILTER_CURRENT, m_strExt);
}
else
{
BOOL bFilterSet = theApp.m_globalFileFilter.SetFilter(m_strExt);
if (!bFilterSet)
m_strExt = theApp.m_globalFileFilter.GetFilterNameOrMask();
mf->m_options.SaveOption(OPT_FILEFILTER_CURRENT, m_strExt);
}
SaveComboboxStates();
theApp.WriteProfileInt(_T("Settings"), _T("Recurse"), m_bRecurse);
CDialog::OnOK();
} 展开
void COpenDlg::OnOK()
{
CString filterPrefix;
VERIFY(filterPrefix.LoadString(IDS_FILTER_PREFIX));
UpdateData(TRUE);
TrimPaths();
m_pathsType = GetPairComparability(m_strLeft, m_strRight);
if (m_pathsType == DOES_NOT_EXIST)
{
AfxMessageBox(IDS_ERROR_INCOMPARABLE, MB_ICONSTOP);
return;
}
m_strRight = paths_GetLongPath(m_strRight);
m_strLeft = paths_GetLongPath(m_strLeft);
// Add trailing '\' for directories if its missing
if (m_pathsType == IS_EXISTING_DIR)
{
if (!paths_EndsWithSlash(m_strLeft))
m_strLeft += '\\';
if (!paths_EndsWithSlash(m_strRight))
m_strRight += '\\';
}
UpdateData(FALSE);
KillTimer(IDT_CHECKFILES);
m_strExt.TrimLeft();
m_strExt.TrimRight();
// If prefix found from start..
if (m_strExt.Find(filterPrefix, 0) == 0)
{
// Remove prefix + space
m_strExt.Delete(0, filterPrefix.GetLength());
if (!theApp.m_globalFileFilter.SetFilter(m_strExt))
{
// If filtername is not found use default *.* mask
theApp.m_globalFileFilter.SetFilter(_T("*.*"));
m_strExt = _T("*.*");
}
mf->m_options.SaveOption(OPT_FILEFILTER_CURRENT, m_strExt);
}
else
{
BOOL bFilterSet = theApp.m_globalFileFilter.SetFilter(m_strExt);
if (!bFilterSet)
m_strExt = theApp.m_globalFileFilter.GetFilterNameOrMask();
mf->m_options.SaveOption(OPT_FILEFILTER_CURRENT, m_strExt);
}
SaveComboboxStates();
theApp.WriteProfileInt(_T("Settings"), _T("Recurse"), m_bRecurse);
CDialog::OnOK();
} 展开
3个回答
展开全部
我也没看出来你这个代码里面哪个是显示对话框的。我也没全理解你要表达的意思。不过我猜测了下你的意思
我的理解::你想按ok按钮,然后弹出来一个对话框,这个对话框里面显示一些你需要他显示的内容,比如说显示一个加法的结果数据。
如果是我所说的那样。
一:建立一个新的dialog对话框。设定好模型。添加控件。在控件里面设置你需要的功能按钮等。编辑代码,让其可以再你点击主dialog的时候可以弹出来想要的效果。
二:在主dialog中关联你新设定的dialog,在ok按钮中直接写一个弹出显示新建立的dialog的函数。SHOW(XXX);
我觉得这样应该可以达到效果。
我的理解::你想按ok按钮,然后弹出来一个对话框,这个对话框里面显示一些你需要他显示的内容,比如说显示一个加法的结果数据。
如果是我所说的那样。
一:建立一个新的dialog对话框。设定好模型。添加控件。在控件里面设置你需要的功能按钮等。编辑代码,让其可以再你点击主dialog的时候可以弹出来想要的效果。
二:在主dialog中关联你新设定的dialog,在ok按钮中直接写一个弹出显示新建立的dialog的函数。SHOW(XXX);
我觉得这样应该可以达到效果。
追问
这是一个原程序的OK按钮,举个例子吧:我这个软件的名字是WinMerge原本的功能是输入两个文本的路径,然后用不同的颜色显示出两个文本不同的部分,我现在添加的文本对话框是想显示重复率。我已经找到了比较部分的函数,却没能找输原来他程序出结果的对话框,所以我的静态文本框不知该画在哪里。我想他这个对话框应该是由代码直接生成的,可是我MFC知道的不多,这个又急用,你能帮我吗,这对高手应该不难,有用一定给您加分
展开全部
从代码中并未发现和显示对话框有关的内容,大部分像是和文件有关的字符串的操作。
怀疑你所说的对话框,是在SaveComboboxStates中出现的。
怀疑你所说的对话框,是在SaveComboboxStates中出现的。
追问
你好,SaveComboboxStates的函数是这样的该怎么理解?
void COpenDlg::SaveComboboxStates()
{
m_ctlLeft.SaveState(_T("Files\\Left"));
m_ctlRight.SaveState(_T("Files\\Right"));
m_ctlExt.SaveState(_T("Files\\Ext"));
}
追答
我无能为力了,没看出哪一句和显示对话框有关。
你应该不是指那个MessageBox的消息框吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从代码来看,应该是 mf->m_options.SaveOption这个函数中出现,你可以看看这个函数如何实现的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询