VC对话框控件基本操作1
来源:互联网 发布:成都 大数据 招聘 编辑:程序博客网 时间:2024/05/20 12:49
本文以一个简单的例子实现对话框控件的基本操作。
新建对话框应用程序,然后添加相关变量
首先我们来看看效果,然后再看看如何实现的
点击报时按钮
下拉框选择
进度条开始
进度条完成
实现如上功能的源码
头文件
// dialogDlg.h : header file//#if !defined(AFX_DIALOGDLG_H__5B0C76BA_3564_43A4_ABE2_7F9B54BCE0A9__INCLUDED_)#define AFX_DIALOGDLG_H__5B0C76BA_3564_43A4_ABE2_7F9B54BCE0A9__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////// CDialogDlg dialogclass CDialogDlg : public CDialog{// Constructionpublic:CImageList m_imageList;CDialogDlg(CWnd* pParent = NULL);// standard constructor// Dialog Data//{{AFX_DATA(CDialogDlg)enum { IDD = IDD_DIALOG_DIALOG };// NOTE: the ClassWizard will add data members here//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CDialogDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected:HICON m_hIcon;// Generated message map functions//{{AFX_MSG(CDialogDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnButtonStart();afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);afx_msg void OnButtonTime();//}}AFX_MSGDECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_DIALOGDLG_H__5B0C76BA_3564_43A4_ABE2_7F9B54BCE0A9__INCLUDED_)
源文件
// dialogDlg.cpp : implementation file//#include "stdafx.h"#include "dialog.h"#include "dialogDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CDialogDlg dialogCDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/): CDialog(CDialogDlg::IDD, pParent){//{{AFX_DATA_INIT(CDialogDlg)// NOTE: the ClassWizard will add member initialization here//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CDialogDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDialogDlg)// NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CDialogDlg, CDialog)//{{AFX_MSG_MAP(CDialogDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_VSCROLL()ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)ON_WM_HSCROLL()ON_BN_CLICKED(IDC_BUTTON_TIME, OnButtonTime)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CDialogDlg message handlersBOOL CDialogDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);// Set big iconSetIcon(m_hIcon, FALSE);// Set small icon// TODO: Add extra initialization here//-------------------------------------------spin----------------------------------------------CSpinButtonCtrl*pSin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1);pSin->SetRange(0,100);pSin->SetPos(50);pSin->GetBuddy()->SetWindowText("5.0");//-------------------------------------------spin----------------------------------------------//-------------------------------------------progress------------------------------------------CProgressCtrl*pProg = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg->SetRange(0,100);pProg->SetPos(50);//-------------------------------------------progress------------------------------------------//-------------------------------------------slider--------------------------------------------CString strTextl;CSliderCtrl*pSlidel = (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);pSlidel->SetRange(0,100);pSlidel->SetPos(50);strTextl.Format("%d",pSlidel->GetPos());SetDlgItemText(IDC_STATIC_SLIDER,strTextl);//-------------------------------------------slider--------------------------------------------//--------------------------------------date time picker---------------------------------------CDateTimeCtrl *pDT = (CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER1);CString formatStr = _T("'今天是:'yyyy'/'MM'/'dd");pDT->SetFormat(formatStr);//--------------------------------------date time picker---------------------------------------//-----------------------------------------list control----------------------------------------HICON hIcon[8];int n;m_imageList.Create(16,16,0,8,8);hIcon[0] = AfxGetApp()->LoadIcon(IDI_ICON_BLACK);hIcon[1] = AfxGetApp()->LoadIcon(IDI_ICON_BLUE);hIcon[2] = AfxGetApp()->LoadIcon(IDI_ICON_GRAY);hIcon[3] = AfxGetApp()->LoadIcon(IDI_ICON_GREEN);hIcon[4] = AfxGetApp()->LoadIcon(IDI_ICON_ORANGE);hIcon[5] = AfxGetApp()->LoadIcon(IDI_ICON_PURPLE);hIcon[6] = AfxGetApp()->LoadIcon(IDI_ICON_RED);hIcon[7] = AfxGetApp()->LoadIcon(IDI_ICON_YELLOW);for(n=0; n<8; n++){m_imageList.Add(hIcon[n]);}static char *color[] = {"black","blue","gray","green","orange","purple","red","yellow"};CListCtrl *pList = (CListCtrl *)GetDlgItem(IDC_LIST1);pList->SetImageList(&m_imageList,LVSIL_SMALL);for(n=0; n<8; n++){pList->InsertItem(n,color[n],n);}pList->SetBkColor(RGB(255,255,255));pList->SetTextBkColor(RGB(255,0,255));//-----------------------------------------list control----------------------------------------//-----------------------------------------tree control----------------------------------------CTreeCtrl *pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE1);pTree->SetImageList(&m_imageList,TVSIL_NORMAL);TV_INSERTSTRUCT tvinsert;tvinsert.hParent = NULL;tvinsert.hInsertAfter = TVI_LAST;tvinsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;tvinsert.item.hItem = NULL;tvinsert.item.state = 0;tvinsert.item.stateMask = 0;tvinsert.item.cchTextMax = 6;tvinsert.item.iSelectedImage = 1;tvinsert.item.cChildren = 0;tvinsert.item.lParam = 0;tvinsert.item.iImage = 2;tvinsert.item.pszText = "father";HTREEITEM hDad = pTree->InsertItem(&tvinsert);tvinsert.item.pszText = "mother";HTREEITEM hMom = pTree->InsertItem(&tvinsert);tvinsert.hParent = hDad;tvinsert.item.iImage = 6;tvinsert.item.pszText = "son";pTree->InsertItem(&tvinsert);tvinsert.item.pszText = "daughter";pTree->InsertItem(&tvinsert);tvinsert.hParent = hMom;tvinsert.item.iImage = 4;tvinsert.item.pszText = "son";pTree->InsertItem(&tvinsert);tvinsert.item.pszText = "daughter";pTree->InsertItem(&tvinsert);tvinsert.item.pszText = "cartoon";HTREEITEM hOther = pTree->InsertItem(&tvinsert);tvinsert.hParent = hOther;tvinsert.item.iImage = 7;tvinsert.item.pszText = "Tom";pTree->InsertItem(&tvinsert);tvinsert.item.pszText = "Jerry";pTree->InsertItem(&tvinsert);//-----------------------------------------tree control----------------------------------------//--------------------------------------extended combo box-------------------------------------CComboBoxEx *pComboEx = (CComboBoxEx*)GetDlgItem(IDC_COMBOBOXEX1);pComboEx->SetImageList(&m_imageList);COMBOBOXEXITEM comboItem;comboItem.mask = CBEIF_IMAGE | CBEIF_INDENT | CBEIF_SELECTEDIMAGE | CBEIF_TEXT;for(int i=0; i<3; i++){comboItem.iItem = i;comboItem.iImage = i;comboItem.iSelectedImage = i;comboItem.iIndent = i;comboItem.pszText = color[i];pComboEx->InsertItem(&comboItem);}//--------------------------------------extended combo box-------------------------------------return TRUE; // return TRUE unless you set the focus to a control}void CDialogDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CDialogDlg::OnPaint() {if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CDialogDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CDialogDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) //spin----------------------------{// TODO: Add your message handler code here and/or call defaultif(pScrollBar->GetDlgCtrlID() == IDC_SPIN1){CString strValue;strValue.Format("%3.1f",(double)nPos/10.0);((CSpinButtonCtrl*)pScrollBar)->GetBuddy()->SetWindowText(strValue);}CDialog::OnVScroll(nSBCode, nPos, pScrollBar);}void CDialogDlg::OnTimer(UINT nIDEvent) //progress----------------------------------------------------------{// TODO: Add your message handler code here and/or call defaultif(nIDEvent == 1000){CProgressCtrl*pProg = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg->SetPos(pProg->GetPos()+1);if(pProg->GetPos()>=100){KillTimer(nIDEvent);AfxMessageBox("进行完毕");}}CDialog::OnTimer(nIDEvent);}void CDialogDlg::OnButtonStart() //button------------------------------------------------------------------{// TODO: Add your control notification handler code hereCProgressCtrl*pProg = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg->SetPos(0);SetTimer(1000,100,NULL);}void CDialogDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) //slider-----------------------{// TODO: Add your message handler code here and/or call defaultif(pScrollBar->GetDlgCtrlID() == IDC_SLIDER1){CSliderCtrl*pSlide = (CSliderCtrl*)pScrollBar;CString strText;strText.Format("%d",pSlide->GetPos());SetDlgItemText(IDC_STATIC_SLIDER,strText);}CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}void CDialogDlg::OnButtonTime() //date time picker-----------------------------------------------{// TODO: Add your control notification handler code hereCDateTimeCtrl *pDT = (CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER1);CTime t;pDT->GetTime(t);CString s = t.Format("%A,%B %d,%Y %H:%M:%S");AfxMessageBox(s);}
源码下载
0 0
- VC对话框控件基本操作1
- VC对话框控件基本操作2
- vc对话框控件一些操作
- vc对话框控件一些操作
- VC控件的基本操作
- VC编辑控件Edit基本操作
- VC++基本控件使用1
- VC++对话框(控件)
- VC 对话框 控件 随对话框大小改变
- VC控件(对话框一)
- CListCtrl控件(1)基本操作
- CListCtrl控件基本操作(1)
- DataGridView控件基本操作1
- CListCtrl控件(1)基本操作
- Android 基本控件 Dialog 对话框
- VC++中对话框资源操作
- VC ADO 基本操作
- VC 基本操作
- 黑马程序员_日记56_Map概述和简单方法
- 随机目录,文件夹,文件名
- RSPEC中Expect和should表达式的示例
- 第六周 项目6-3 复数类模板
- 配置spring的配置list,map,set,props集合属性
- VC对话框控件基本操作1
- 【《软件设计模式与体系结构》学习笔记】软件设计模式概论
- 4 Facts About Decision Making That Will Improve Conversion Rate Optimization
- break语句的用法总结
- 《C语言及程序设计》实践参考——大奖赛计分(续一)
- Java反射机制详解
- 还原数据库_简单粗暴
- 《C语言及程序设计》实践参考——打豆豆
- cardio扫描信用卡