MFC界面编程,m_pSet如何在弹出的对话框中正常使用呀???

菜地里的小草根 2013-05-16 11:30:21
void CFindPassWord1::OnKillfocusEDITAdminName()
{
int num;
char ch1[40],ch2[40];
m_EDIT_AdminName.GetWindowText(ch1,20);
num=atoi(ch1);
itoa(num,ch2,40);

if(m_pSet->IsOpen())
m_pSet->Close();
m_pSet->m_strFilter.Format("Name='%s'",ch2);
m_pSet->m_strSort="Name";
m_pSet->Open();
if(!m_pSet->IsEOF()||m_pSet->m_Identify!="Administer")
MessageBox("此用户名不合法!");

else
{
m_EDIT_strQuestion1=m_pSet->m_Question1;
m_EDIT_strQuestion2=m_pSet->m_Question2;
}
}
此函数为CPassWordDlg类的一个成员函数。
1.红色标注出来的部分的功能是获取编辑框中的字符串;
2.绿色标注出来的部分的功能是用来验证数据库中是否有与此字符串相同的用户名,并且此用户名所拥有的权限是否足够高....
3.m_pSet一般是在C**View的头文件中进行定义及在C**View.cpp中进行初始化的(我的这两个文件分别为CTestView.h和CTestView。cpp)。但当不在CPassWordDlg类中对m_pSet进行定义时,编译就会报错,所以我又在CPassWordDlg.cpp中给m_pSet进行了定义(CTestSet *m_pSet)。后面经过各种改错后,终于编译通过了。
4.如以上代码,此函数是一个弹出对话框中的一个编辑框在失去光标时要响应的函数。主要实现的是在弹出一个对话框后,向编辑框中输入用户名,然后在光标离开此编辑框之后要触发此函数,来验证此用户名是否是数据库中的合法用户,随意说就需要连接数据库(ODBC),进而也就需要m_pSet了。
问题来了:当我运行此程序时,在贯标离开编辑框之后,程序就会卡死并弹出一个报错窗口。经过单步运行,发现运行到if(m_pSet->IsOpen())
m_pSet->Close();这步时出的问题,此时,程序卡在了这里
在CTestView中用连接数据库,获取信息的程序都能正常使用,但惟独在弹出的对话框中出现了这种问题。
求大神们指导一下吧,这个问题弄了一天多了,真不知道怎么弄了,要崩溃了啦
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
亲们,为么子木人来给解答下啦,再等。。。。。
zgl7903 2013-05-18
  • 打赏
  • 举报
回复
非法地址访问 对话框里的 m_pSet 在DoModal前 需要赋值 //按你的提示 差不多这样 CXXxxView::DoDialog() { CXXXXDlg dlg; dlg.m_pSet = m_pSet; dlg.DoModal(); }

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧