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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥20 SQL server表计算问题
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)