GridCtrl使用詳解

2022-02-07 03:46:51 字數 3677 閱讀 8007

步驟一 初始化

在cview類的.h標頭檔案中包含檔案:

#include "gridctrl.h"

並且手寫加入如下的成員函式: 

cgridctrl * m_pgridctrl;

步驟二 構造與析構

建構函式中: 

m_pgridctrl = null;

析構函式中:

if(m_pgridctrl)

delete m_pgridctrl;

步驟三 如果需要列印功能的話新增同名列印函式**

在cview類的onbeginprinting()函式中新增如下**:

if(m_pgridctrl)

m_pgridctrl->onbeginprinting(pdc,pinfo); //簡單吧,這就是類的好處

其它兩個列印函式也一樣的做法.

步驟四 在oninitaupdate()函式中或者你自己新增的要顯示grid的訊息函式中如下初始化:

//建立非模式對話方塊

cdlg *dlg;

dlg=new cdlg();

dlg->create(idd_dlg,this);

//初始化gridctrl控制項

if(m_pgridctrl!=null)

if (m_pgridctrl == null)

catch (cmemoryexception* e)

//填充列標題

int row=0;

for(int col=0;col<4;col++)

else if(col==1)

else if(col==2)

m_pgridctrl->setitem(&item);

}// fill rows/cols with text

for (row = 1; row < k; row++)

for (col = 0; col < h; col++)

else if(col==1)else if(col==2)

m_pgridctrl->setitem(&item);

}m_pgridctrl->autosize();

//--------------設定行列距------------------

for(int a=1;asetrowheight(a,21); //設定各行高

m_pgridctrl->setrowheight(0,24); //設定0行高

m_pgridctrl->setcolumnwidth(1,110); //設定2列寬

m_pgridctrl->setcolumnwidth(2,160); //設定3列寬

m_pgridctrl->setcolumnwidth(3,100); //設定4列寬

}

上例取自實際工程,稍有修改!

部分注釋: 

void setvirtualmode(true)

//設為虛模式

bool setrowcount(int nrows) 

//設定總的行數。

bool setfixedrowcount(int nfixedrows = 1)

//設定固定的行資料

bool setcolumncount(int ncols) 

//設定列數

bool setfixedcolumncount(int nfixedcols = 1)

//設定固定的列數

步驟五: 新增wm_size訊息,調整控制項的介面佔螢幕大小

if(m_pgridctrl->getsafehwnd())

在對話方塊中的使用方法

步驟一 建立資料顯示**對話方塊

在資源管理器中新建立乙個對話方塊,假設為cdlgtestreportbox。 從工具箱中加入custom control,就是人頭像的那個,將其區域拉伸至要顯示資料**的大小,充滿整個對話方塊。

在cdlgtestreportbox類的標頭檔案中:

#include "gridctrl.h"

再定義成員變數:

cgridctrl* m_pgrid;

新增onshowwindow()訊息處理函式如下:

void cdlgtestreportbox::onshowwindow(bool bshow, uint nstatus) 

if(m_pgrid==null)

catch (cmemoryexception* e)

for (int row = 0; row < m_pgrid->getrowcount(); row++)

for (int col = 0; col < m_pgrid->getcolumncount(); col++)

else if (row < 1) //設定0行表頭顯示

else if (col < 1) //設定0列表頭顯示

}else

m_pgrid->setitem(&item);

}m_pgrid->invalidate();

}//--------------設定行列距------------------

for(int a=0;agetrowcount();a++)

m_pgrid->setrowheight(a,16); //設定各行高

m_pgrid->setcolumnwidth(0,58); //設定0列寬

for(int b=1;bgetcolumncount();b++)

m_pgrid->setcolumnwidth(b,59); //設定各列寬

}

步驟二 嵌入上面的對話方塊 顯示資料

在你需要顯示資料的對話方塊上的標頭檔案中,假設為cdlgtest,加入

#include "gridctrl.h"

cdlgtestreportbox* m_ptestreportbox;

將資料顯示對話方塊放入你的對話方塊相應位置上,在cdlgtest::oninitdialog() 中:

if(!m_ptestreportbox)

m_ptestreportbox->create(idd_dlgtestreportbox,this);

//定義區域變數

crect rectdraw;

getdlgitem(idc_aerareport)->getwindowrect(rectdraw);

screentoclient(&rectdraw); //動態測試資料顯示區域rectdraw

//將對應的對話方塊放到指定區域

m_ptestreportbox->movewindow(rectdraw);

m_ptestreportbox->showwindow(sw_show);

自定義填充資料的函式:cdlgtest::fillgrid() 如下:

cgridctrl* pgrid=m_ptestreportbox->m_pgrid;

for (int row = pgrid->getrowcount()-1; row >= pgrid->getrowcount()-3; row--)

else

}pgrid->setitem(&item); //提交資料

if(row==0||col==0)

}//迴圈結束

pgrid->invalidate();

}

GridCtrl使用詳解

在單文件中的使用方法 步驟一 初始化 在cview類的.h標頭檔案中包含檔案 include gridctrl.h 並且手寫加入如下的成員函式 cgridctrl m pgridctrl 步驟二 構造與析構 建構函式中 m pgridctrl null 析構函式中 if m pgridctrl de...

Regmon使用詳解

新近安裝foxmail 5.0正式版,卻發現只能收取而不能傳送郵件。經過一番檢查確定,網路正常,foxmail設定也正確。那麼究竟是 何方神聖 在暗中搗鬼呢?甭急,咱先請來個 福爾摩斯 regmon幫忙查出 真兇 regmon v6.12小檔案 軟體版本 6.12 軟體大小 82 kb 軟體性質 免...

FCKeditor使用詳解

fckeditor 的.net 2.0核心庫 說明 fckeditor2.6.3.zip是其最新的檔案和什麼的 fckeditor.net.zip是asp.net呼叫的dll在裡面。2.分別解壓後把fckeditor2.6.3.zip裡的fckeditor目錄整個複製到 中。3.解壓fckedito...