我想通过写代码的办法,而不是拖的办法。
  void CBut3Dlg::OnOK() 
{
// TODO: Add extra validation here
CRect b=new CRect(0,0,300,200);   //指定控件位置、大小 CButton a;
a.Create("tt",WS_VISIBLE|WS_DISABLED,b,this,130);
// CDialog::OnOK();
}  create是按照msdn里提示的,130好像是产生的控件ID号。运行
无错误,但按OK键,无反映,这是怎么回事?

解决方案 »

  1.   

    declare CButton a in header files
    .h
    CButton a;
    .cpp
    a.create
      

  2.   

    yes  jennyvenus(脑白金,你再不倒闭对不起人民对不起
      

  3.   

    CButton a;必须是类成员变量,这样就ok了
      

  4.   

    void CDddDlg::OnOK() 
    {
       HWND hWnd ;
       hWnd = CreateWindow("BUTTON",
                  "haha",
                           WS_CHILD | WS_VISIBLE,
                           100,
                     100,
         150,
                       50,
                           AfxGetMainWnd()->m_hWnd , 
           NULL,
           AfxGetApp()-m_hInstance,
           NULL);
       ::ShowWindow(hWnd,SW_SHOW) ;
    }
      

  5.   

    你在栈上定义的变量,在函数退出时就消亡了,怎么可能看到他?你这样new 了,不delete怎么行?看看书关于变量的生存期部分。
      

  6.   

    void CBut3Dlg::OnOK() 
    {
    // TODO: Add extra validation here
    CRect b=new CRect(0,0,300,200);   //指定控件位置、大小 CButton a;
    a.Create("tt",WS_VISIBLE|WS_DISABLED,b,this,130);
    // CDialog::OnOK();
    }
    是完全可行的可能 你的ID不对 随便写个id比如 12345拉之类的
      

  7.   

    当BUTTON创建后,必须将其选入DC,调用CDC:SelectObject();
      

  8.   

    dg115(蛤蟆) :选入DC干啥,Button只是子窗口,又不是GDI对象
      

  9.   

    我刚才试了一下,在.h里声名一下确实解决了。但我还是不理解,这个问题好像只和OnOk函数有关,所以把它声名成局部变量就行了。我知道我说得不对,谁能告诉我错在哪里?以后,哪些变量要声名成局部变量,哪些是整个cpp文件里的变量,要到相应的 .h文件里去声名?
      

  10.   

    若是只想在OnOk中声明,就用New,用完再delete
      

  11.   

    同意dizzo(被mm害惨了) 
    new也不行
    除非不delete