Ewenyee 2015-09-02 15:03 采纳率: 50%
浏览 2901
已结题

MFC中用Clist列表框的控件来显示数据库的问题

各位高手大神,你们好:
我现在有一个问题:利用ADO读取一个文件(其实本质上是ACCSESS数据库),但是在读取的过程中,比如通过判断“状态”这个字段的值(其实这个字段只保存了两个不同的字符,不是‘E’就是‘N’),来决定这一行(不是一个单元格)显示的背景颜色,这个功能如何实现?
通过消息NM-CUSTOMDRAW?
本人菜鸟一个,不知道有没有说清楚,希望水平高的程序员帮我解解惑,不胜感激!
贴上部分代码:
在类内最开始的位置定义了一个全局变量 int型的flag=1,读取数据库的代码如下
while(!m_pRecordset->adoEOF)
{ m_Grid.InsertItem(0,"");
CString str= (char*)(_bstr_t)m_pRecordset->GetCollect("valid");

        if("E"==str)
        {
            str="有效";
            flag=1;
        }
        else
        {
            str="无效";
            flag=0;
        }

        m_Grid.SetItemText(0,0,str);//设置无效和有效
        }


        消息响应函数的代码如下:

        void CDBDlg::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)

{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR );

// Take the default processing unless we set this to something else below.
*pResult = 0;

// First thing - check the draw stage. If it's the control's prepaint
// stage, then tell Windows we want messages for every item.
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
    {
    *pResult = CDRF_NOTIFYITEMDRAW;
    }
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
    {


            switch (flag)
            {                           
            case 0:
                //MessageBox("3");
                pLVCD->clrTextBk=RGB(0,0,100);
                pLVCD->clrText=RGB(100,0,0);
                    break;

            case 1:
            //  MessageBox("2");
                pLVCD->clrTextBk=RGB(100,0,0);
                pLVCD->clrText=RGB(0,100,0);
                break;
            }
        *pResult = CDRF_DODEFAULT;
    }

}
代码运行的结果显示flag恒为1,不知道为什么

  • 写回答

5条回答

  • threenewbee 2015-09-02 15:05
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮