作者:samiensfe_663 | 来源:互联网 | 2023-06-26 17:29
MFC用ListControl实现表格停靠窗口1.建立Dialog1.1类视图-新建Dialog,ID修改为DAILOG_DATA1.2属性border-No
MFC 用List Control 实现表格停靠窗口 1.建立Dialog
1.1 类视图->新建Dialog,ID修改为DAILOG_DATA 1.2属性 border->None,Style->Child 1.3对话框添加控件工具->List Control ,属性->view->report 1.4控件关联变量名m_list 1.4右击对话框,添加MFC类CDataDlg,基类CDialogEx 1.5调整控件大小位置,适应Dialog 2.建立停靠窗口 2.1类导向->添加MFC类->类名CDataView,基类CDockablePan 2.2MainFrm.h中添加 pubilc成员 :CDataView m_wndDataView; 2.3类视图->CMainFrame->消息WM_Create,在// 启用增强的窗口管理对话框
语句前添加
if ( ! m_wndDataView. Create ( _T ( "数据窗" ) , this , CRect ( 0 , 0 , 200 , 200 ) , TRUE, 2000 , WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI) ) { TRACE0 ( "Failed to create Class View window\n" ) ; return FALSE; } m_wndDataView. EnableDocking ( CBRS_ALIGN_ANY) ; DockPane ( & m_wndDataView) ;
3.关联对话框和停靠窗口 3.1 CDataView.h中添加pubilic成员CDataDlg DATA;(头文件"CDataDlg.h") 3.2CDataView->OnCreate中添加
DATA. Create ( DIALOG_DATA, this ) ; DATA. ShowWindow ( SW_SHOW) ;
3.3 此时对话框已挂载在停靠窗但边框不适配 CDataView->OnSize函数中添加 (消息WM_SIZE)
if ( DATA. GetSafeHwnd ( ) ) { CRect rect; GetClientRect ( & rect) ; DATA. MoveWindow ( rect) ; }
4.初始化表格 CDataDlg->重写OnInitDialog,添加初始化
m_list. SetExtendedStyle ( m_list. GetExtendedStyle ( ) | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES) ; CString field[ ] &#61; { _T ( "商品ID" ) , _T ( "商品名称" ) , _T ( "商品价格" ) , _T ( "库存数量" ) } ; for ( int i &#61; 0 ; i < sizeof ( field) / sizeof ( field[ 0 ] ) ; &#43;&#43; i) { m_list. InsertColumn ( i, field[ i] , LVCFMT_CENTER, 90 ) ; }