MFC 学习之 多对话框及列表控件
2014-12-18 16:44
357 查看
MFC 在界面这块,不得不说比较难看,虽然如此,但是它的简洁性(当然,不是说它的代码,而是相对于程序员,减少了自己敲写代码的工作量)。
下面的例子是新建对话框,在新的对话框里添加列表控件,在列表控件里显示必要信息。
效果如图:
![](http://img.blog.csdn.net/20141218164905081)
新建 MFC 工程,命名为 Draw,添加对话框,新建类 MyPanel
下面的例子是新建对话框,在新的对话框里添加列表控件,在列表控件里显示必要信息。
效果如图:
新建 MFC 工程,命名为 Draw,添加对话框,新建类 MyPanel
<pre name="code" class="cpp">//CDrawDlg.h public: afx_msg void OnBnClickedBtStart(); afx_msg void Dlg2_Init(); public: MyPanel * panel;
//CDrawDlg.cpp UINT Func_Thread(LPVOID lpParam) { CDrawDlg * dlg = (CDrawDlg *)lpParam; Text_Show(lpParam); return 0; } void CDrawDlg::OnBnClickedBtStart() { // TODO: 在此添加控件通知处理程序代码 Dlg2_Init(); panel->ShowWindow(SW_SHOW); AfxBeginThread(Func_Thread, this); } void CDrawDlg::Dlg2_Init() { panel->Create(IDD_MY_DIALOG); }
MyPanel.h #pragma once #include "afxcmn.h" int Text_Show(LPVOID lpParam); // MyPanel 对话框 class MyPanel : public CDialogEx { DECLARE_DYNAMIC(MyPanel) public: MyPanel(CWnd* pParent = NULL); // 标准构造函数 virtual ~MyPanel(); // 对话框数据 enum { IDD = IDD_MY_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 //自己添加的,初始化Teechart virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() public: void OnTimer(UINT_PTR nIDEvent); void OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult ); public: CListCtrl m_List1; int count; afx_msg void OnBnClickedBtStart(); };
MyPanel.cpp BEGIN_MESSAGE_MAP(MyPanel, CDialogEx) ON_WM_TIMER() ON_NOTIFY ( NM_CUSTOMDRAW,IDC_LIST1, OnCustomdrawMyList ) ON_BN_CLICKED(IDC_BT_START, &MyPanel::OnBnClickedBtStart) END_MESSAGE_MAP() // Videodecode 消息处理程序 BOOL MyPanel::OnInitDialog() { CDialogEx::OnInitDialog(); count = 0; //整行选择;有表格线;表头;单击激活 DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE; //报表风格;单行选择;高亮显示选择行 //视频 m_List1.ModifyStyle(0,LVS_SINGLESEL|LVS_REPORT|LVS_SHOWSELALWAYS); m_List1.SetExtendedStyle(dwExStyle); m_List1.InsertColumn(0,"L0",LVCFMT_CENTER,60,0); m_List1.InsertColumn(1,"L1",LVCFMT_CENTER,60,0); m_List1.InsertColumn(2,"L2",LVCFMT_CENTER,60,0); m_List1.InsertColumn(3,"L3",LVCFMT_CENTER,70,0); m_List1.InsertColumn(4,"L4",LVCFMT_CENTER,60,0); return TRUE; } // MyPanel 消息处理程序 int Text_Show(LPVOID lpParam) { dlg = (CDrawDlg *)lpParam; return 0; } void MyPanel::OnTimer(UINT_PTR nIDEvent) { CString f_index; f_index.Format(_T("%d"),count++); //获取当前记录条数 int nIndex = m_List1.GetItemCount(); m_List1.InsertItem(nIndex,f_index); m_List1.SetItemText(nIndex, 1, "1"); m_List1.SetItemText(nIndex, 2, "2"); m_List1.SendMessage(WM_VSCROLL, SB_BOTTOM, NULL); } //ListCtrl加颜色 void MyPanel::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult ) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR ); // Take the default processing unless we set this to something else below. *pResult = CDRF_DODEFAULT; if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ) { *pResult = CDRF_NOTIFYITEMDRAW; } else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ) { *pResult = CDRF_NOTIFYSUBITEMDRAW; } else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage ) { COLORREF clrNewTextColor, clrNewBkColor; int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec ); CString strTemp = m_List1.GetItemText(nItem,1); //if(strTemp.Compare(_T("I"))==0) if(nItem%6 == 0) { clrNewTextColor = RGB(0,0,0); //Set the text clrNewBkColor = RGB(255,0,0); //背景设置成红色 } //else if(strTemp.Compare(_T("P"))==0) else if(nItem%6 == 2) { clrNewTextColor = RGB(0,0,0); clrNewBkColor = RGB(0,255,255); //背景设置成青色 } //else if(strTemp.Compare(_T("B"))==0) else if(nItem%6 == 4) { clrNewTextColor = RGB(0,0,0); clrNewBkColor = RGB(0,255,0); //背景设置成绿色 } else { clrNewTextColor = RGB(0,0,0); clrNewBkColor = RGB(255,255,255); } pLVCD->clrText = clrNewTextColor; pLVCD->clrTextBk = clrNewBkColor; *pResult = CDRF_DODEFAULT; } } void MyPanel::OnBnClickedBtStart() { // TODO: 在此添加控件通知处理程序代码 SetTimer(1, 1000, NULL); }
相关文章推荐
- MFC小白学习记录之对话框单击控件弹出button
- VS2013MFC对话框工程学习笔记五 - 了解窗口和窗口控件的属性并修改
- MFC控件编程:列表控件、树控件、属性页对话框 (未完)
- VS2010 C++ MFC框架学习笔记3 - 控件Tab顺序设置及模态对话框
- MFC学习笔记——CDialog(设置对话框控件的Tab顺序)
- MFC学习之 对话框设置背景颜色及控件透明的方法
- MFC编程学习之改变对话框和控件及文本颜色
- MFC学习日记之列表框控件
- MFC 学习之 模态对话框图片控件上作图
- MFC学习笔记之:7种访问对话框控件的方式
- MFC入门学习之控件(2)创建一个对话框窗口并在运行时显示
- VS2013MFC对话框工程学习笔记十一 - 动态改变一个控件标题
- MFC程序员的WTL指南: Part IV - 对话框与控件(二)
- 以 MFC 对话框的形式承载 Windows 窗体用户控件
- 用回车键实现MFC对话框中TAB键控制输入焦点在控件中跳转的效果
- [MFC]设置对话框所有控件字体为同一字体的简单方法
- MFC中的列表视图控件CListCtrl(转)
- MFC控件篇之对话框的应用
- MFC对话框添加透明的静态文本控件
- [学习]MFC对话框程序改为无模式对话框