posts - 54, comments - 32, trackbacks - 0, articles - 0

创建虚拟列表ClistCtrl(MFC)&&ListView(API)

Posted on 2007-04-04 10:46 宋鹏 阅读(5229) 评论(4)  编辑 收藏 引用 所属分类: Evc Debug Code

ClistCtrl(MFC)

BOOL CTest::OnInitDialog() 
{
 CDialog::OnInitDialog();
 
 
// TODO: Add extra initialization here

 
//SP-A1.用工具栏画一个CListCtrl控件
 
//SP-A2.插入栏(列)到控件
 ((CListCtrl *)GetDlgItem(IDC_LIST1))->InsertColumn(0, _T("Name"), LVCFMT_LEFT);
 ((CListCtrl 
*)GetDlgItem(IDC_LIST1))->InsertColumn(1, _T("Scores"), LVCFMT_LEFT);
 

 
//SP-A3.设置各个栏的宽度
 ((CListCtrl *)GetDlgItem(IDC_LIST1))->SetColumnWidth(0,50);
 ((CListCtrl 
*)GetDlgItem(IDC_LIST1))->SetColumnWidth(1,50);

 
//SP-23插入栏,并制定高度
 
//或((CListCtrl *)GetDlgItem(IDC_LIST1))->InsertColumn(1, _T("Scores"), LVCFMT_LEFT,50);

// int nColumnCount = ((CListCtrl *)GetDlgItem(IDC_LIST1))->GetHeaderCtrl()->GetItemCount();

 
//SP-A4.1.插入行1
 LV_ITEM lvitem;   //LVITEM结构体

 lvitem.mask
=LVIF_TEXT; //指出对成员中的哪些数据进行设置
 lvitem.pszText=L"vv"//将文本设为vv
 lvitem.iItem=0;   //索引值为0
 lvitem.iSubItem=0;  //没有子项
 
 ((CListCtrl 
*)GetDlgItem(IDC_LIST1))->InsertItem(&lvitem);
 
//SP-A4.2.插入行2
 
//((CListCtrl *)GetDlgItem(IDC_LIST1))->SetItemText(0,0,L"aa");
 
//((CListCtrl *)GetDlgItem(IDC_LIST1))->SetItemText(0,1,L"bb");



 
return TRUE;  // return TRUE unless you set the focus to a control
               
// EXCEPTION: OCX Property Pages should return FALSE
}



ListView(API)   这是工程文件 下载
//----------------------------------------------------------------------
// DoCreateMain - Process WM_CREATE message for window.
//
LRESULT DoCreateMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
                      LPARAM lParam) 
{
    HWND hwndCB;

    
int nHeight;
    HWND hwndLV;
    LPCREATESTRUCT lpcs;

    
// Create a command bar.
    hwndCB = CommandBar_Create (hInst, hWnd, IDC_CMDBAR);

    
// Add exit button to command bar.
    CommandBar_AddAdornments (hwndCB, 00);

    
//SP-A1转换LPARAM
    
// Convert lParam into pointer to create structure.
    lpcs = (LPCREATESTRUCT) lParam;

    
//SP-A2创建列表查看控件
    
//
    
// Create the list view control.
    
//
    hwndLV = CreateWindowEx (0, WC_LISTVIEW, TEXT (""),
                             LVS_REPORT 
| LVS_SINGLESEL |
                             LVS_OWNERDATA 
| WS_VISIBLE | WS_CHILD |
                             WS_VSCROLL, 
0, nHeight, lpcs->cx,
                             lpcs
->cy - nHeight, hWnd,
                             (HMENU)IDC_LISTVIEW,
                             lpcs
->hInstance, NULL);
    
//SP-A3增加列
    
// Add columns.
    {
        LVCOLUMN lvc;

        lvc.mask 
= LVCF_TEXT | LVCF_WIDTH | LVCF_FMT | LVCF_SUBITEM;
        lvc.fmt 
= LVCFMT_LEFT;
        lvc.cx 
= 150;
        lvc.pszText 
= TEXT ("Name");
        lvc.iSubItem 
= 0;
        SendMessage (hwndLV, LVM_INSERTCOLUMN, 
0, (LPARAM)&lvc);

        lvc.mask 
|= LVCF_SUBITEM;
        lvc.pszText 
= TEXT ("Type");
        lvc.cx 
= 100;
        lvc.iSubItem 
= 1;
        SendMessage (hwndLV, LVM_INSERTCOLUMN, 
1, (LPARAM)&lvc);

        lvc.mask 
|= LVCF_SUBITEM;
        lvc.pszText 
= TEXT ("Size");
        lvc.cx 
= 100;
        lvc.iSubItem 
= 2;
        SendMessage (hwndLV, LVM_INSERTCOLUMN, 
2, (LPARAM)&lvc);
    }


    
return 0;
}


//SP-A4改变窗口大小,显示列表查看控件
//----------------------------------------------------------------------
// DoSizeMain - Process WM_SIZE message for window.
//
LRESULT DoSizeMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam){
    HWND hwndLV;
    RECT rect;

    hwndLV 
= GetDlgItem (hWnd, IDC_LISTVIEW);

    
// Adjust the size of the client rect to take into account
    
// the command bar height.
    GetClientRect (hWnd, &rect);
    rect.top 
+= CommandBar_Height (GetDlgItem (hWnd, IDC_CMDBAR));

    SetWindowPos (hwndLV, NULL, rect.left, rect.top,
                  rect.right 
- rect.left, rect.bottom - rect.top,
                  SWP_NOZORDER);
    
return 0;
}

Feedback

# re: 创建虚拟列表ClistCtrl(MFC)&&ListView(API)  回复  更多评论   

2007-04-04 11:04 by 宋鹏
菜鸟上手之用,呵呵

# re: 创建虚拟列表ClistCtrl(MFC)&&ListView(API)  回复  更多评论   

2007-04-04 11:24 by 张志强
失败!
失败!
失败!没有明确提到两个关键点,估计普通人看了更糊涂

# re: 创建虚拟列表ClistCtrl(MFC)&&ListView(API)  回复  更多评论   

2007-04-04 11:37 by 宋鹏
是哪两个关键点呢,还望明示

# re: 创建虚拟列表ClistCtrl(MFC)&&ListView(API)  回复  更多评论   

2007-08-24 11:49 by 巧克力
谢谢!你写的文章对我很有帮助,以后要经常来,嘿嘿

加油++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理