小弟在vckbase上下了一个例子自己实现了一遍,但是出现了问题?哪位大虾帮我看看呀。

bobshi 2003-07-23 05:40:28
哪位大虾有空把邮箱留下帮我调试一下。并指出错误原因。谢谢。
已出现的问题:1.toolbar上的bitmaps不能显示。
       2.申请证书时会出现错误。

3x!!!
...全文
87 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
richie_cn 2003-07-23
  • 打赏
  • 举报
回复
做得好!
escout 2003-07-23
  • 打赏
  • 举报
回复
还有,你说又出现了新问题,正好可以自己试试,看能不能发现什么问题。你说这是vckbase上下的一个例子,应该没有大问题。所以,一个好机会。
当然,找到问题所在了,别忘了在这里发出来,和大家共享你的努力成果-:)
escout 2003-07-23
  • 打赏
  • 举报
回复
我这里只能给你大致的说一下,更详细的可以看这方面的书籍,不过最好的方法,我觉得还是多实践,多调试几次就知道了。
说一下这次的第二个问题:
我首先用DEBUG编译,这样才有调试信息。然后按F5,调试运行,到中间有ASSERT出现,选择重试,这样VC就会定位在当前有问题的代码那一行,这个时候你可以看看这一段代码,就知道是那里可能有问题了。还有,可以借助一下,callstack这个窗口,看看出现这个问题的调用堆栈,因为有时候问题可能不是出现在当前一个子程序,而是上面,这是你就可以往上看,知道找到为止。我就是这样发现void CInputCertView::OnButtonApply() 中有问题的。

还有一些技术,比如ASSERT,VERYFY的应用,断点的设置,步进等都很有用。一般是先用上面的方法找到大致的有问题的代码段,然后用断点,步进,单部执行等调试。

只能简单的说这些,更多的还是要自己看。我觉得,最重要的,是多实践,遇到问题,自己试着调试。学会调试了,你的VC也一定很精通了。因为,有时候,你需要很了解MFC那一套机制,这样才能很快找到问题的所在。
希望这些对你有所帮助
bobshi 2003-07-23
  • 打赏
  • 举报
回复
to: escout(侦察兵) 谢谢你的帮助。这两个问题已经解决了,但是又出现新的问题。我想问一下
一般出现这种情况应该怎样调试,小弟初学,请赐教!谢谢!!!
dzqsuper 2003-07-23
  • 打赏
  • 举报
回复
dzqsuper@sohu.com
escout 2003-07-23
  • 打赏
  • 举报
回复
不知还有没有别的问题。如果只有这两个问题,其实可以很好在调试状态发现的,可以自己多试试调试,可以学到很多东东。
escout 2003-07-23
  • 打赏
  • 举报
回复
第二个问题,我发现了一个。
void CInputCertView::OnButtonApply()
{
// TODO: Add your control notification handler code here
CString str1;
GetDlgItem(IDC_EDIT1)->GetWindowText(str1);
if (str1=="") return;
CString strsn;
GetDlgItem(IDC_EDIT2)->GetWindowText(strsn);
if (strsn=="")
{
MessageBox("*为必添项!");
return;
}

CInputInfoDlg dlg;
dlg.DoModal();

GetDlgItem(IDC_EDIT1)->GetWindowText(str[0]);
str[1]="证书序号";

SYSTEMTIME tm;
GetLocalTime(&tm);
CString timebegin,timeend;
timebegin.Format(_T("%d年-%d月-%d日"),tm.wYear,tm.wMonth,tm.wDay);
str[2]=timebegin;//录入日期

for (int i=0; i<21; i++)//修改纪录
{
GetDlgItem(10003+i)->GetWindowText(str[i+3]);
}
str[25]=dlg.m_strinfo[2];//由谁产生
str[26]=dlg.m_strinfo[3];//证书类型
str[27]=dlg.m_strinfo[4];//存储介质
int num = ((CRaclientApp*)AfxGetApp())->GetRand(100,999);
str[28].Format("%d",num);//内部序号
str[29]=dlg.m_strinfo[1];//证书级别
num=((CRaclientApp *)AfxGetApp())->GetRand(1000,9999);
str[30].Format("%d",num);//持有者id
str[31]=dlg.m_strinfo[0];//有效期
str[32]=timebegin;
///////// timeend.Format(_T("%d年-%d月-%日"),tm.wYear+1,tm.wMonth,tm.wDay);
timeend.Format(_T("%d年-%d月-%d日"),tm.wYear+1,tm.wMonth,tm.wDay);
str[33]=timeend;//"证书有效终止日期"
str[34]="1";//"证书状态"
str[35]="1";//"内部表示"

((CRaChildFrame *)GetParentFrame())->Msg("录入成功,内部序号为"+str[28]);
GetDlgItem(IDC_EDIT1)->EnableWindow(true);
GetDlgItem(IDC_EDIT1)->SetWindowText("");

for (i=0; i<21; i++)
{
GetDlgItem(10003+i)->SetWindowText("");
}

CString strOper;
timebegin.Format(_T("%d年-%d月-%d日 %d:%d:%d"),tm.wYear ,tm.wMonth ,tm.wDay ,tm.wHour ,tm.wMinute ,tm.wSecond );
strOper=timebegin+"录入了证书"+"内部序号为"+str[28];
GetDlgItem(IDC_EDIT16)->SetWindowText("中国");

}


只要把
timeend.Format(_T("%d年-%d月-%日"),tm.wYear+1,tm.wMonth,tm.wDay);
该为
timeend.Format(_T("%d年-%d月-%d日"),tm.wYear+1,tm.wMonth,tm.wDay);
就可以了。
escout 2003-07-23
  • 打赏
  • 举报
回复
看到了,第一个问题已经解决。你没有给toolbar上的button相应函数,用class wizard添加上下面几个函数,就可以了。
void CMainFrame::OnButton32771()
{
// TODO: Add your command handler code here

}

void CMainFrame::OnButton32772()
{
// TODO: Add your command handler code here

}

void CMainFrame::OnButton32773()
{
// TODO: Add your command handler code here

}

void CMainFrame::OnButton32775()
{
// TODO: Add your command handler code here

}

void CMainFrame::OnButton32774()
{
// TODO: Add your command handler code here

}

void CMainFrame::OnButton32776()
{
// TODO: Add your command handler code here

}
bobshi 2003-07-23
  • 打赏
  • 举报
回复
to:zcb3603@163.com。
已发过去了,请注意查收!谢谢。
escout 2003-07-23
  • 打赏
  • 举报
回复
发给我看看吧,zcb3603@163.com。

16,471

社区成员

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

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

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