定義你自己的類,繼承clistctrl類,然後過載drawitem
函式,並保證在屬性中有lvs_ownerdrawfixed
風格.exp:
clistctrlext m_listctrl;
m_listctrl.modifystyle(0,lvs_ownerdrawfixed,0);
void clistctrlext::drawitem(lpdrawitemstruct lpdis)
else
lv_column lvc;
lvc.mask=lvcf_fmt|lvcf_width;
rccol.right = rccol.left;
for(int ncol=0; getcolumn(ncol,&lvc); ncol++)
pdc->restoredc(nolddcmode);
}
在實現自畫功能的時候, 注意要畫的時候只能對乙個crect 裡面來描畫, 也就是說對乙個item 所佔的格仔進行描畫, 不能同時畫這個區域,drawitem 函式當畫面有什麼變化時都會自動呼叫.
// 機能:drawitem 関數のオーバーライドので、リストビューの自畫ことができる。
void cdiameterlogwndone::drawitem(lpdrawitemstruct lpdrawitemstruct)
// 機能:シーケンスウインドウには各訊號の訊號名と訊號タイプを表示する。
void cdiameterlogwndone::drawtext(cdc *pdc, clistctrl &m_listctrl, int nitem, int ncount, int dw)
else
//sendipport の下縦線を描畫する
if(nitem > 1)
for(int i = 0 ; i < ncount ; i ++)
//recvipport の下縦線を描畫する
if(nitem > 1)
}if(dw == itemcolor_change)
else
// commandname の描畫領域計算
m_listctrl.getsubitemrect(nitem,1,lvir_label,rectthr);
cstring stexttwo = m_listctrl.getitemtext ( nitem, 1);
//commandname の文字の描畫
if(!stexttwo.isempty() && stexttwo.getlength() != 0)
pdc->setbkcolor(color);
pdc->settextcolor(rgb(0,0,0));}
// 機能:マウスにて左クリックした際に、パラメータウインドウには選択した訊號名の內容を表示する。
void cdiameterlogwndone::onclick(nmhdr* pnmhdr, lresult* presult) */
/*// 方法 二
position pos = thectrl.getfirstselecteditemposition();
int m_nindex = thectrl.getnextselecteditem(pos); // get the item be selected
*/// 方法 三
pt.x-=rect.left;
pt.y-=rect.top;
//listctrl 中で選中item を確認する
i= thectrl.hittest(cpoint(pt));
cmainframe* pframe = (cmainframe*)afxgetmainwnd();
cdiameterlogwndtwo *pview = (cdiameterlogwndtwo *)pframe->m_wndsplitter.getpane(1, 0);
int ncount = m_allcommandname.size();
for(int k = 0 ; k < ncount ; k ++)
}if(flag == 0)
flag = 0;
//m_clicknumber.push_back((k+1) * 4);}}
// ソーティングする
for(k = 0 ; k < m_clicknumber.size(); k ++)}}
}最後在儲存到html 裡面, 注意
語法是用於儲存txt 裡面的內容原封不動的放到html 裡面, 還要注意用: 來控制畫面的大小通過處理nm_customdraw ,可以實現你的功能!但是nm_customdraw 在class wizard 中有可能看不到,不用管他,直接按照小麵的方法新增處理過程即可!
1. 在訊息對映表中
begin_message_map(cihisserverview, clistview)
//}afx_msg_map
// standard printing commands
end_message_map()
2. 在標頭檔案中
afx_msg void oncustomdraw(nmhdr*, lresult*);
3. 在cpp 檔案中
void cihisserverview::oncustomdraw(nmhdr* pnmhdr, lresult* presult)
// 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 )
else
plvcd->clrtextbk = m_crtextbk;
plvcd->clrtext = m_clrtext;
*presult = cdrf_dodefault; }}
CListCtrl用法 收藏
1。先來介紹report型別的clistctrl 首先使用下面的語句設定clistctrl的style dword setextendedstyle dword dwnewstyle 其中lvs ex checkboxes 表示新增checkbox lvs ex fullrowselect 表示選擇...
CListCtrl控制項應用
常用操作 1 新增列標題頭 insertcolumn 2 獲取與設定列寬 getcolumnwidth setcolumnwidth 3 新增一行 insertitem setitemtext 4 獲取與設定單元文字 getitemtext setitemtext 5 允許多行選中時,獲取選中的行數...
列表控制項CListCtrl
clistctrl m listdevice 設定listctrl 風格及擴充套件風格 m listdevice.setextendedstyle m listdevice.getextendedstyle lvs ex gridlines lvs ex fullrowselect dwstyle ...