看了孙鑫大大的第三课视频,在VS2008上操作的时候怎么不能实现!!在MFC工程Draw中的View类中添加一个按钮!
首先就是添加变量private的 CButton m_btn;  然后添加函数OnCreate(LPCREATESTRUCT lpCreateStruct);
最后按书上的操作在CDrawView类中是这样的
int CDrawView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(CView::OnCreate(lpCreateStruct)==-1)
return -1;
m_btn.Create(_T("AnNiu"),WS_CHILD|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123);
m_btn.ShowWindow(SW_SHOWNORMAL);
return 0;
}但是在执行的时候却始终没有按钮出现求解啊

解决方案 »

  1.   

    不是添加函数ONcreate(),在框架类CMainfrain里面有个oncreate(),在初始化的时候系统会自动调用,不然你自己随便添加个新函数,系统不认识,根本就没办法调用
      

  2.   

    OnCreate是一个虚函数吧,应该在类视图的右边,点那个黑点,打开虚函数加的。
      

  3.   

    说错了,刚才看了一下,不是虚函数,在类属性中的消息中添加WM_CREATE消息的处理函数就行了。
      

  4.   

    加一句m_btn.ShowWindow(SW_SHOW);试试
      

  5.   

    m_btn.Create(_T("AnNiu"),WS_CHILD|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123);
    this
    ->
    GetParent()
      

  6.   

    就是在类视图里有好多类,有个CMainFrain类,打开看。里面有OnCreate();双击打开,里面有很多初始化用的代码,找个位置添加m_btn.Create(_T("AnNiu"),WS_CHILD|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123);
    m_btn.ShowWindow(SW_SHOWNORMAL);
      

  7.   

    如果想学习MFC,建议把第三章多看几遍,每个类的作用你要知道,第一章也需要多看几遍
      

  8.   

    你的意思是在view类里面添加一个消息映射吗?我明白了,你可以直接在View.cpp中找到
    BEGIN_MESSAGE_MAP(CTest1View, CView)
    // Standard printing commands
    ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CTest1View::OnFilePrintPreview)
    ON_WM_CONTEXTMENU()
    ON_WM_RBUTTONUP()
    END_MESSAGE_MAP();
    添加一行ON_WM_CREATE();
    再在view.h中
    afx_msg void OnFilePrintPreview();
    afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
    afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
    DECLARE_MESSAGE_MAP()
    public:
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);//加这一行
    };
    还有m_btn必须是view类的成员CButton类型的
      

  9.   

    添加WM_CREATE的消息响应,VS2008添加时没有6.0那种的类向导,可以在“属性”框中点击“消息”,找到WM_CREATE,并为其添加消息响应函数即可,当然,也可以手动添加,三个部分:声明,消息映射宏,实现代码.
      

  10.   

    int Cself_2View::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CView::OnCreate(lpCreateStruct) == -1)
    return -1; // TODO:  Add your specialized creation code here
    btn.Create("按钮",BS_PUSHBUTTON,CRect(10,10,100,30),this,1);
    btn.ShowWindow(SW_SHOWNORMAL);
    return 0;
    }没问题,感觉是你创建的文档有问题,是否创建的是单文档应用程序?以及一些设置是否正确
      

  11.   

    楼主你不应该添加函数.而是在属性里面去相应WM_CREATE函数.你对CDrawView类右键属性.在属性里不是有"事件""消息""重写"么.你去消息里去找WM_CREATE然后选择添加OnCreate