MFC文档感悟代码

 1 // sd.h : main header file for the SD application
 2 //
 3 
 4 #if !defined(AFX_SD_H__DB621B01_7480_4661_A977_D2FC564CCA3C__INCLUDED_)
 5 #define AFX_SD_H__DB621B01_7480_4661_A977_D2FC564CCA3C__INCLUDED_
 6 
 7 #if _MSC_VER > 1000
 8 #pragma once
 9 #endif // _MSC_VER > 1000
10 
11 #ifndef __AFXWIN_H__
12     #error include 'stdafx.h' before including this file for PCH
13 #endif
14 
15 #include "resource.h"       // main symbols
16 
17 /////////////////////////////////////////////////////////////////////////////
18 // CSdApp:
19 // See sd.cpp for the implementation of this class
20 //
21 
22 class CSdApp : public CWinApp
23 {
24 public:
25     CSdApp();
26 
27 // Overrides
28     // ClassWizard generated virtual function overrides
29     //{{AFX_VIRTUAL(CSdApp)
30     public:
31     virtual BOOL InitInstance();
32     //}}AFX_VIRTUAL
33 
34 // Implementation
35 
36 public:
37     //{{AFX_MSG(CSdApp)
38     afx_msg void OnAppAbout();
39         // NOTE - the ClassWizard will add and remove member functions here.
40         //    DO NOT EDIT what you see in these blocks of generated code !
41     //}}AFX_MSG
42     DECLARE_MESSAGE_MAP()
43 };
44 
45 
46 /////////////////////////////////////////////////////////////////////////////
47 
48 //{{AFX_INSERT_LOCATION}}
49 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
50 
51 #endif // !defined(AFX_SD_H__DB621B01_7480_4661_A977_D2FC564CCA3C__INCLUDED_)
  1 // sd.cpp : Defines the class behaviors for the application.
  2 //
  3 
  4 #include "stdafx.h"
  5 #include "sd.h"
  6 
  7 #include "MainFrm.h"
  8 
  9 #ifdef _DEBUG
 10 #define new DEBUG_NEW
 11 #undef THIS_FILE
 12 static char THIS_FILE[] = __FILE__;
 13 #endif
 14 
 15 /////////////////////////////////////////////////////////////////////////////
 16 // CSdApp
 17 
 18 BEGIN_MESSAGE_MAP(CSdApp, CWinApp)
 19     //{{AFX_MSG_MAP(CSdApp)
 20     ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
 21         // NOTE - the ClassWizard will add and remove mapping macros here.
 22         //    DO NOT EDIT what you see in these blocks of generated code!
 23     //}}AFX_MSG_MAP
 24 END_MESSAGE_MAP()
 25 
 26 /////////////////////////////////////////////////////////////////////////////
 27 // CSdApp construction
 28 
 29 CSdApp::CSdApp()
 30 {
 31     // TODO: add construction code here,
 32     // Place all significant initialization in InitInstance
 33 }
 34 
 35 /////////////////////////////////////////////////////////////////////////////
 36 // The one and only CSdApp object
 37 
 38 CSdApp theApp;
 39 
 40 /////////////////////////////////////////////////////////////////////////////
 41 // CSdApp initialization
 42 
 43 BOOL CSdApp::InitInstance()
 44 {
 45     CMainFrame* pFrame = new CMainFrame;
 46     m_pMainWnd = pFrame;//主窗口地址必须记录
 47 //CWnd::CreateEx(...)
 48     pFrame->LoadFrame(IDR_MAINFRAME,
 49         WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
 50         NULL);
 51 
 52     pFrame->ShowWindow(SW_MAXIMIZE);
 53     pFrame->UpdateWindow();
 54 
 55     return TRUE;//必须返回TRUE;
 56 }
 57 
 58 /////////////////////////////////////////////////////////////////////////////
 59 // CSdApp message handlers
 60 
 61 
 62 
 63 
 64 
 65 /////////////////////////////////////////////////////////////////////////////
 66 // CAboutDlg dialog used for App About
 67 
 68 class CAboutDlg : public CDialog
 69 {
 70 public:
 71     CAboutDlg();
 72 
 73 // Dialog Data
 74     //{{AFX_DATA(CAboutDlg)
 75     enum { IDD = IDD_ABOUTBOX };
 76     //}}AFX_DATA
 77 
 78     // ClassWizard generated virtual function overrides
 79     //{{AFX_VIRTUAL(CAboutDlg)
 80     protected:
 81     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
 82     //}}AFX_VIRTUAL
 83 
 84 // Implementation
 85 protected:
 86     //{{AFX_MSG(CAboutDlg)
 87         // No message handlers
 88     //}}AFX_MSG
 89     DECLARE_MESSAGE_MAP()
 90 };
 91 
 92 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
 93 {
 94     //{{AFX_DATA_INIT(CAboutDlg)
 95     //}}AFX_DATA_INIT
 96 }
 97 
 98 void CAboutDlg::DoDataExchange(CDataExchange* pDX)
 99 {
100     CDialog::DoDataExchange(pDX);
101     //{{AFX_DATA_MAP(CAboutDlg)
102     //}}AFX_DATA_MAP
103 }
104 
105 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
106     //{{AFX_MSG_MAP(CAboutDlg)
107         // No message handlers
108     //}}AFX_MSG_MAP
109 END_MESSAGE_MAP()
110 
111 // App command to run the dialog
112 void CSdApp::OnAppAbout()
113 {
114     CAboutDlg aboutDlg;
115     aboutDlg.DoModal();
116 }
117 
118 /////////////////////////////////////////////////////////////////////////////
119 // CSdApp message handlers
 1 #if !defined(AFX_MAINVIEW_H__A232082F_2230_4E08_97EA_73538F012DBE__INCLUDED_)
 2 #define AFX_MAINVIEW_H__A232082F_2230_4E08_97EA_73538F012DBE__INCLUDED_
 3 
 4 #if _MSC_VER > 1000
 5 #pragma once
 6 #endif // _MSC_VER > 1000
 7 // MainView.h : header file
 8 //
 9 
10 /////////////////////////////////////////////////////////////////////////////
11 // CMainView view
12 #include <afxcview.h>
13 class CMainView : public CListView
14 {
15 protected:
16     CMainView();           // protected constructor used by dynamic creation
17     DECLARE_DYNCREATE(CMainView)
18 
19 // Attributes
20 public:
21 
22 // Operations
23 public:
24 
25 // Overrides
26     // ClassWizard generated virtual function overrides
27     //{{AFX_VIRTUAL(CMainView)
28     public:
29     virtual void OnInitialUpdate();
30     protected:
31     virtual void OnDraw(CDC* pDC);      // overridden to draw this view
32     //}}AFX_VIRTUAL
33 
34 // Implementation
35 protected:
36     virtual ~CMainView();
37 #ifdef _DEBUG
38     virtual void AssertValid() const;
39     virtual void Dump(CDumpContext& dc) const;
40 #endif
41 
42     // Generated message map functions
43 protected:
44     //{{AFX_MSG(CMainView)
45     afx_msg void OnEditAdd();
46     afx_msg void OnEditDel();
47     afx_msg void OnEditMod();
48     //}}AFX_MSG
49     DECLARE_MESSAGE_MAP()
50 };
51 
52 /////////////////////////////////////////////////////////////////////////////
53 
54 //{{AFX_INSERT_LOCATION}}
55 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
56 
57 #endif // !defined(AFX_MAINVIEW_H__A232082F_2230_4E08_97EA_73538F012DBE__INCLUDED_)
  1 // MainView.cpp : implementation file
  2 //
  3 
  4 #include "stdafx.h"
  5 #include "sd.h"
  6 #include "MainView.h"
  7 
  8 #ifdef _DEBUG
  9 #define new DEBUG_NEW
 10 #undef THIS_FILE
 11 static char THIS_FILE[] = __FILE__;
 12 #endif
 13 
 14 /////////////////////////////////////////////////////////////////////////////
 15 // CMainView
 16 
 17 IMPLEMENT_DYNCREATE(CMainView, CListView)
 18 
 19 CMainView::CMainView()
 20 {
 21 }
 22 
 23 CMainView::~CMainView()
 24 {
 25 }
 26 
 27 
 28 BEGIN_MESSAGE_MAP(CMainView, CListView)
 29     //{{AFX_MSG_MAP(CMainView)
 30     ON_COMMAND(ID_EDIT_ADD, OnEditAdd)
 31     ON_COMMAND(ID_EDIT_DEL, OnEditDel)
 32     ON_COMMAND(ID_EDIT_MOD, OnEditMod)
 33     //}}AFX_MSG_MAP
 34 END_MESSAGE_MAP()
 35 
 36 /////////////////////////////////////////////////////////////////////////////
 37 // CMainView drawing
 38 
 39 void CMainView::OnDraw(CDC* pDC)
 40 {
 41     CDocument* pDoc = GetDocument();
 42     // TODO: add draw code here
 43 }
 44 
 45 /////////////////////////////////////////////////////////////////////////////
 46 // CMainView diagnostics
 47 
 48 #ifdef _DEBUG
 49 void CMainView::AssertValid() const
 50 {
 51     CListView::AssertValid();
 52 }
 53 
 54 void CMainView::Dump(CDumpContext& dc) const
 55 {
 56     CListView::Dump(dc);
 57 }
 58 #endif //_DEBUG
 59 
 60 /////////////////////////////////////////////////////////////////////////////
 61 // CMainView message handlers
 62 
 63 void CMainView::OnInitialUpdate() 
 64 {//类似于对话框的OnInitDialog,在没有显示之前
 65     CListView::OnInitialUpdate();
 66 
 67     CListCtrl &list = this->GetListCtrl();
 68     list.ModifyStyle(0,LVS_REPORT);
 69     list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
 70     list.InsertColumn(0,"工号",0,180);
 71     list.InsertColumn(1,"姓名",0,180);
 72     list.InsertColumn(2,"部门",0,180);
 73     
 74 }
 75 #include "AddDlg.h"
 76 void CMainView::OnEditAdd() 
 77 {
 78     // TODO: Add your command handler code here
 79     CAddDlg dlg;
 80     if(dlg.DoModal() == IDCANCEL)
 81         return;
 82     CListCtrl &list = this->GetListCtrl();
 83     int i = list.GetItemCount();
 84     list.InsertItem(i,dlg.m_szNumb);
 85     list.SetItemText(i,1,dlg.m_szName);
 86     list.SetItemText(i,2,dlg.m_szDept);
 87     
 88 
 89 }
 90 
 91 void CMainView::OnEditDel() 
 92 {
 93     // TODO: Add your command handler code here
 94     
 95 }
 96 
 97 void CMainView::OnEditMod() 
 98 {
 99     // TODO: Add your command handler code here
100     
101 }
 1 // MainFrm.h : interface of the CMainFrame class
 2 //
 3 /////////////////////////////////////////////////////////////////////////////
 4 
 5 #if !defined(AFX_MAINFRM_H__9ECFA6B6_6F97_4C85_9DD5_396FF8608530__INCLUDED_)
 6 #define AFX_MAINFRM_H__9ECFA6B6_6F97_4C85_9DD5_396FF8608530__INCLUDED_
 7 
 8 #if _MSC_VER > 1000
 9 #pragma once
10 #endif // _MSC_VER > 1000
11 
12 #include "ChildView.h"
13 #include "MainView.h"
14 class CMainFrame : public CFrameWnd//SDI外框架
15 {
16     
17 public:
18     CMainFrame();
19 protected: 
20     DECLARE_DYNAMIC(CMainFrame)
21 
22 // Attributes
23 public:
24 
25 // Operations
26 public:
27 
28 // Overrides
29     // ClassWizard generated virtual function overrides
30     //{{AFX_VIRTUAL(CMainFrame)
31     virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
32     virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
33     //}}AFX_VIRTUAL
34 
35 // Implementation
36 public:
37     virtual ~CMainFrame();
38 #ifdef _DEBUG
39     virtual void AssertValid() const;
40     virtual void Dump(CDumpContext& dc) const;
41 #endif
42 
43 protected:  // control bar embedded members
44     CStatusBar  m_wndStatusBar;
45     CToolBar    m_wndToolBar;
46     //CChildView    m_wndView;
47     CMainView *m_pMainView;
48 
49 // Generated message map functions
50 protected:
51     //{{AFX_MSG(CMainFrame)
52     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
53     afx_msg void OnSetFocus(CWnd *pOldWnd);
54     afx_msg BOOL OnEraseBkgnd(CDC* pDC);
55     //}}AFX_MSG
56     DECLARE_MESSAGE_MAP()
57 };
58 
59 /////////////////////////////////////////////////////////////////////////////
60 
61 //{{AFX_INSERT_LOCATION}}
62 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
63 
64 #endif // !defined(AFX_MAINFRM_H__9ECFA6B6_6F97_4C85_9DD5_396FF8608530__INCLUDED_)
  1 // MainFrm.cpp : implementation of the CMainFrame class
  2 //
  3 
  4 #include "stdafx.h"
  5 #include "sd.h"
  6 
  7 #include "MainFrm.h"
  8 
  9 #ifdef _DEBUG
 10 #define new DEBUG_NEW
 11 #undef THIS_FILE
 12 static char THIS_FILE[] = __FILE__;
 13 #endif
 14 
 15 /////////////////////////////////////////////////////////////////////////////
 16 // CMainFrame
 17 
 18 IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
 19 
 20 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
 21     //{{AFX_MSG_MAP(CMainFrame)
 22     ON_WM_CREATE()
 23     ON_WM_SETFOCUS()
 24     ON_WM_ERASEBKGND()
 25     //}}AFX_MSG_MAP
 26 END_MESSAGE_MAP()
 27 
 28 static UINT indicators[] =
 29 {
 30     ID_SEPARATOR,           // status line indicator
 31     ID_INDICATOR_CAPS,
 32     ID_INDICATOR_NUM,
 33     ID_INDICATOR_SCRL,
 34 };
 35 
 36 /////////////////////////////////////////////////////////////////////////////
 37 // CMainFrame construction/destruction
 38 
 39 CMainFrame::CMainFrame()
 40 {
 41     // TODO: add member initialization code here
 42     m_pMainView = NULL;
 43     
 44 }
 45 
 46 CMainFrame::~CMainFrame()
 47 {
 48 }
 49 #include "MainView.h"
 50 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 51 {
 52     if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
 53         return -1;
 54     // create a view to occupy the client area of the frame
 55     /*
 56     if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
 57         CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
 58     {
 59         TRACE0("Failed to create view window\n");
 60         return -1;
 61     }//内部视图
 62     */
 63 
 64     //将VIEW和FRAME紧密联系在一起
 65     CCreateContext cc;
 66     cc.m_pNewViewClass =RUNTIME_CLASS(CMainView);
 67 
 68     m_pMainView  = ( CMainView* )CreateView(&cc);
 69     
 70 
 71 
 72     if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
 73         | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
 74         !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
 75     {
 76         TRACE0("Failed to create toolbar\n");
 77         return -1;      // fail to create
 78     }//工具栏创建
 79 
 80     if (!m_wndStatusBar.Create(this) ||
 81         !m_wndStatusBar.SetIndicators(indicators,
 82           sizeof(indicators)/sizeof(UINT)))
 83     {
 84         TRACE0("Failed to create status bar\n");
 85         return -1;      // fail to create
 86     }//状态栏支持
 87     m_wndToolBar.SetWindowText("标准工具栏");//在浮动之前设置标题
 88     // TODO: Delete these three lines if you don't want the toolbar to
 89     //  be dockable
 90     m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
 91     EnableDocking(CBRS_ALIGN_ANY);
 92     DockControlBar(&m_wndToolBar);//工具栏停靠
 93     //FloatControlBar(&m_wndToolBar,CPoint(200,200));//工具栏飘起来
 94     
 95     return 0;
 96 }
 97 
 98 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
 99 {
100     if( !CFrameWnd::PreCreateWindow(cs) )
101         return FALSE;
102     // TODO: Modify the Window class or styles here by modifying
103     //  the CREATESTRUCT cs
104 
105     cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
106     cs.lpszClass = AfxRegisterWndClass(0);
107     return TRUE;
108 }
109 
110 /////////////////////////////////////////////////////////////////////////////
111 // CMainFrame diagnostics
112 
113 #ifdef _DEBUG
114 void CMainFrame::AssertValid() const
115 {
116     CFrameWnd::AssertValid();
117 }
118 
119 void CMainFrame::Dump(CDumpContext& dc) const
120 {
121     CFrameWnd::Dump(dc);
122 }
123 
124 #endif //_DEBUG
125 
126 /////////////////////////////////////////////////////////////////////////////
127 // CMainFrame message handlers
128 void CMainFrame::OnSetFocus(CWnd* pOldWnd)
129 {
130     // forward focus to the view window
131 //    m_wndView.SetFocus();//当框架得到焦点的时候,立即把焦点给视图
132 }
133 
134 BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
135 {
136     // let the view have first crack at the command
137 //    if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))//命令转发
138 //        return TRUE;
139     if (m_pMainView->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))//消息分发机制
140         return TRUE;
141     // otherwise, do default handling
142     return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
143 }
144 
145 
146 BOOL CMainFrame::OnEraseBkgnd(CDC* pDC) 
147 {
148     // TODO: Add your message handler code here and/or call default
149     
150     //return CFrameWnd::OnEraseBkgnd(pDC);
151     //CRect rect;
152     //GetClientRect(rect);//获取客户区域
153 
154     //pDC ->FillSolidRect(rect,GetSysColor(COLOR_BTNSHADOW));
155     return TRUE;
156 }
 1 #if !defined(AFX_ADDDLG_H__CDC10284_A9B4_4155_904F_F0C87E1A0A9D__INCLUDED_)
 2 #define AFX_ADDDLG_H__CDC10284_A9B4_4155_904F_F0C87E1A0A9D__INCLUDED_
 3 
 4 #if _MSC_VER > 1000
 5 #pragma once
 6 #endif // _MSC_VER > 1000
 7 // AddDlg.h : header file
 8 //
 9 
10 /////////////////////////////////////////////////////////////////////////////
11 // CAddDlg dialog
12 
13 class CAddDlg : public CDialog
14 {
15 // Construction
16 public:
17     CAddDlg(CWnd* pParent = NULL);   // standard constructor
18 
19 // Dialog Data
20     //{{AFX_DATA(CAddDlg)
21     enum { IDD = IDD_ADD_DLG };
22     CString    m_szDept;
23     CString    m_szName;
24     CString    m_szNumb;
25     //}}AFX_DATA
26 
27 
28 // Overrides
29     // ClassWizard generated virtual function overrides
30     //{{AFX_VIRTUAL(CAddDlg)
31     protected:
32     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
33     //}}AFX_VIRTUAL
34 
35 // Implementation
36 protected:
37 
38     // Generated message map functions
39     //{{AFX_MSG(CAddDlg)
40         // NOTE: the ClassWizard will add member functions here
41     //}}AFX_MSG
42     DECLARE_MESSAGE_MAP()
43 };
44 
45 //{{AFX_INSERT_LOCATION}}
46 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
47 
48 #endif // !defined(AFX_ADDDLG_H__CDC10284_A9B4_4155_904F_F0C87E1A0A9D__INCLUDED_)
 1 // AddDlg.cpp : implementation file
 2 //
 3 
 4 #include "stdafx.h"
 5 #include "sd.h"
 6 #include "AddDlg.h"
 7 
 8 #ifdef _DEBUG
 9 #define new DEBUG_NEW
10 #undef THIS_FILE
11 static char THIS_FILE[] = __FILE__;
12 #endif
13 
14 /////////////////////////////////////////////////////////////////////////////
15 // CAddDlg dialog
16 
17 
18 CAddDlg::CAddDlg(CWnd* pParent /*=NULL*/)
19     : CDialog(CAddDlg::IDD, pParent)
20 {
21     //{{AFX_DATA_INIT(CAddDlg)
22     m_szDept = _T("");
23     m_szName = _T("");
24     m_szNumb = _T("");
25     //}}AFX_DATA_INIT
26 }
27 
28 
29 void CAddDlg::DoDataExchange(CDataExchange* pDX)
30 {
31     CDialog::DoDataExchange(pDX);
32     //{{AFX_DATA_MAP(CAddDlg)
33     DDX_Text(pDX, IDC_DEPT, m_szDept);
34     DDX_Text(pDX, IDC_NAME, m_szName);
35     DDX_Text(pDX, IDC_NUMB, m_szNumb);
36     //}}AFX_DATA_MAP
37 }
38 
39 
40 BEGIN_MESSAGE_MAP(CAddDlg, CDialog)
41     //{{AFX_MSG_MAP(CAddDlg)
42         // NOTE: the ClassWizard will add message map macros here
43     //}}AFX_MSG_MAP
44 END_MESSAGE_MAP()
45 
46 /////////////////////////////////////////////////////////////////////////////
47 // CAddDlg message handlers

 

posted @ 2017-03-14 23:49  smile带着你  阅读(199)  评论(0编辑  收藏  举报