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
原创粉丝点击