问题1:使用ado连接数据库,数据表中有几个时间字段,返回数据填充到CListCtrl,但是发现时间字段的数据前面都多了1900-01-01这个东西,变成例如1900-01-01 08:00之类,请问有什么方法得到正常的08:00?问题2:如何使基于对话框的应用程序的对话框也具有最小化和最大化按钮?问题3:如何使这个对话框以最大化方式运行?问题4:如何使CListCtrl的大小在对话框的大小发生改变的时候同时改变大小并充满整个客户区?

解决方案 »

  1.   

    1.增加判断时间是否大于0.等于0的不显示.
    2.在设置里选中minimize box 和maximize box.
    3.ShowWindow(SW_SHOWMAXIMIZED);
    4.GetClientRect() ;MoveWindow();
      

  2.   

    谢谢,2,3,4已好了。1还没好,按照你的提示,我加了判断后无法运行,可能是因为我在代码中已经把这几个时间字段的数据赋值给了CString类型,也无法转换为int,现在的问题是我想把1900-01-01 08:00变为08:00,CString类型有什么函数可以做到?
      

  3.   

    CTime tm;//你数据库中的日期数据。CString strText;
    strText.Format("%d:%d", tm.GetHour(), tm.GetMinute());
      

  4.   

    由于我参照了这篇文章:http://mag.vchelp.net/200312/ado_demo.html
    所以没有使用标准的ado方法,使用的是这里下载的一个Ado类:http://mag.vchelp.net/200312/images/adodemo/AdoDemo.rar还没有解决问题的代码如下:
    int j=0;
    COleDateTime tm;
    CString val="";
    while(!m_pRs.IsEOF())
    {
    m_List.InsertItem(j,val);
    for(int i=0;i<nCols;i++)
    {
    if(i>2 && i<6 )//数据表中的第3,4,5列是时间字段
    {
    m_pRs.GetFieldValue(i,tm);
    val.Format("%d:%d",tm.GetHour(),tm.GetMinute());
    m_List.SetItemText(j,i,val);
    }
    else
    {
    m_pRs.GetFieldValue(i,val);
    m_List.SetItemText(j,i,val);
    }
    }
    j++;
    m_pRs.MoveNext();
    }
    其中m_pRs是已经返回了数据表数据的数据集对象,m_List是CListCtrl控件变量。现在,1900-01-01这个东西是去掉了,但是新的问题又出现了,若是08:09这样的时间就会显示成8:9,看到这样的时间显示容易给人带来迷惑,该如何解决?
      

  5.   

    CString s ; COleDateTime time = COleDateTime::GetCurrentTime();
    s=time.Format("%H:%M:%S");          ASSERT(s == "18:45:38");
      

  6.   

    strText.Format("%02d:%02d", tm.GetHour(), tm.GetMinute());
      

  7.   

    我把:val.Format("%d:%d",tm.GetHour(),tm.GetMinute());
    替换为:val=tm.Format("%H:%M");
            ASSERT(val == "18:45");但是运行时出错:Debug Assertion Failed,怎么办呢?