我的第一个MFC HelloWord程序

学习了一段时间的标准C++基础。
发现自己真的白白浪费了大学几年的大好时光。
-----
记录一下自己的第一段MFC HelloWord程序。
真的用心学起来,发现无论是C++还是MFC也并不难,为什么大学几年都没有兴趣来摸一下?后悔中。

 

 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ /*
 2  MFC 中创建窗口程序的过程:
 3  1:创建一个继承自CWinApp的应用程序类,并创建该类的全局实例。
 4  2:创建继承自WFrameWnd的窗口类
 5  3: 在窗口类中声明消息处理过程及声明消息映射
 6  4:  定义应用程序类,在其入口函数中指定应用程序主窗口。
 7  5: 定义窗口类,在其构造函数中创建窗口自身,并创建相关的控件。
 8  6: 在消息映射中加入需要处理的事件
 9  6: 实现窗口类的消息处理函数
10
11  而通过WINDOWS API创建的过程为:
12   设计一个窗口类;
13   注册窗口类;
14   创建窗口;
15   显示及更新窗口。
16*/

17 #include  < afxwin.h >
18 #define  IDB_BUTTON 101   // 定义BUTTON的ID
19 // 应用程序
20 class  CHelloApp: public  CWinApp
21 ExpandedBlockStart.gifContractedBlock.gif {
22public:
23    virtual BOOL InitInstance();
24}
;
25
26 // 将调用CHelloApp的缺省构造函数,而该函数会调用InitInstance函数
27 // InitInstance 是一个应用程序开始执行时要调用的可重载函数。
28 // 相当于WinMain
29 CHelloApp helloApp;
30
31 class  CHelloWnd: public  CFrameWnd
32 ExpandedBlockStart.gifContractedBlock.gif {
33    CStatic* cs;
34    CButton* btn;
35public:
36    CHelloWnd();
37    //消息处理函数
38    //使用afx_msg明确标识为一个消息处理函数
39    //消息处理函数返回值为空,且不能有参数
40    //这是不同于WndProc的
41    afx_msg void HandleButtonClicked();
42    //消息映射
43    DECLARE_MESSAGE_MAP() //注意是没有分号的
44}
;
45
46 // 消息映射
47 BEGIN_MESSAGE_MAP(CHelloWnd,CFrameWnd)
48 ON_BN_CLICKED(IDB_BUTTON,HandleButtonClicked)
49 END_MESSAGE_MAP()
50 // 指定应用程序主窗口,也就是注册一个窗口类
51 BOOL CHelloApp::InitInstance()
52 ExpandedBlockStart.gifContractedBlock.gif {
53    //m_pMainWnd是一个CWnd*类型变量 ,指向当前应用程序的主窗口对象实例。
54    this->m_pMainWnd=new CHelloWnd();
55    this->m_pMainWnd->ShowWindow(this->m_nCmdShow);
56    this->m_pMainWnd->UpdateWindow();
57    return true;
58}

59 void  CHelloWnd::HandleButtonClicked()
60 ExpandedBlockStart.gifContractedBlock.gif {
61    int a=MessageBox(TEXT("你点击了BTN"),TEXT("警告"),4);
62    //cs->MoveWindow(50,20,100,100,true);
63}

64 CHelloWnd::CHelloWnd()
65 ExpandedBlockStart.gifContractedBlock.gif {
66    //六个基本的控件:
67    //CStatic CButton CEdit CScrollBar CComboBox CList
68
69    //CRect(0,0,200,200)
70    //是一个临时的对象,因此,它必须传递给常量引用
71    //而在Create的原型中,可以看到RECT参数定义:const RECT& rect = rectDefault,
72    //归根结底,原因是,生成的临时对象变量是const的    
73    Create(NULL,L"Hello World",WS_OVERLAPPEDWINDOW,CRect(10,10,200,200));
74    cs=new CStatic();
75    cs->Create(L"我的第一个MFC",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_RIGHT,CRect(50,50,150,150),this);
76
77    btn=new CButton();
78    btn->Create(TEXT("点击我"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(50,100,150,150),this,IDB_BUTTON);
79}

80

转载于:https://www.cnblogs.com/McJeremy/archive/2009/04/28/1445510.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值