control id 中为什么???

解决方案 »

  1.   

    为什么没有呀出现在control id中。 有唯一的id。
      

  2.   

    可以自己添加消息映射阿!处理NM_CUSTOMDRAW消息,但是在class wizard中可能看不到这个消息,可以自己手动添加1.
    BEGIN_MESSAGE_MAP(CIHISSERVERView, CListView)
    //{{AFX_MSG_MAP(CIHISSERVERView)
    ON_NOTIFY_REFLECT(NM_DBLCLK, OnShowAlarm)
    ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
    ON_COMMAND(IDM_SHOWALARM, OnShowalarmDlg)
    ON_WM_CREATE()
    ON_COMMAND(IDM_FINDALARM, OnFindalarm)
    ON_COMMAND(IDM_SHOWALARMINFO, OnShowalarminfo)
    ON_COMMAND(IDM_PROCESSALARMINFO, OnProcessalarminfo)
    ON_COMMAND(IDM_CLEARALL, OnClearall)
    ON_WM_ERASEBKGND()
    ON_WM_HSCROLL()
    ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)  // 自己添加这行代码
    //}}AFX_MSG_MAP
    // Standard printing commands
    ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
    END_MESSAGE_MAP()2.
    void CIHISSERVERView::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
    {
    // Contains information specific to an NM_CUSTOMDRAW 
    // notification message sent by a list-view control.
    // mean:draw each item.set txt color,bkcolor....
    NMLVCUSTOMDRAW* pLVCD = (NMLVCUSTOMDRAW*)(pNMHDR); // Take the default processing unless we set this to something else below.
    *pResult = CDRF_NEWFONT; // First thing - check the draw stage. If it's the control's prepaint
    // stage, then tell Windows we want messages for every item.
    if ( pLVCD->nmcd.dwDrawStage==CDDS_PREPAINT)
    {
    *pResult = CDRF_NOTIFYITEMDRAW;
    }
    // This is the notification message for an item.  We'll request
    // notifications before each subitem's prepaint stage.
    else if ( pLVCD->nmcd.dwDrawStage==CDDS_ITEMPREPAINT ) 
    {
    COLORREF   m_crTextBk , m_clrText;
    int nItem = static_cast<int> (pLVCD->nmcd.dwItemSpec);

    CListCtrl &m_list = GetListCtrl();
    CString str1 = m_list.GetItemText(nItem ,15);

    bool bDBImplFail = false ;
    if (str1 == "信息不祥")
    {
    m_crTextBk = RGB(255, 255, 0) ;
    m_clrText  =  RGB(128, 0, 128) ;
    }
            else
    {
                 m_crTextBk =  RGB(150, 255, 255);
     m_clrText  =  RGB(12,26,234);
    }

    pLVCD->clrTextBk = m_crTextBk;
    pLVCD->clrText = m_clrText; *pResult = CDRF_DODEFAULT;
    }
    }3.
    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CIHISSERVERView)
    public:
    virtual void OnDraw(CDC* pDC);  // overridden to draw this view
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    protected:
    virtual void OnInitialUpdate(); // called first time after construct
    virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
    virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
    virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

    //}}AFX_VIRTUAL
         afx_msg void OnCustomDraw(NMHDR*, LRESULT*);