比如使用AppWizard创建了一个SDI程序,在对话框中增加一个按钮,然后当单击这个按钮,想在窗口中显示一串字符串就行,该如何做?使用GetDlgItem不论返回CWnd指针也好,返回CWoView*(一个程序中CView派生类)也好,都不行;我也试过手工在CWoView中用对话框那个按钮的ID进行消息映射以及控制函数,根本不行,该用什莫方法??还有,为什莫在CWoView中对对话框里面的按钮手动进行消息映射以及控制函数不行呢(就是把这个按钮的所有映射和控制函数都放到CWoView中去)??谢谢大虾了。

解决方案 »

  1.   

    我使用过SendMessage,发送WM_PAINT消息给CView,但是还是不行,该如何做??
      

  2.   

    是获得视图对象的指针,还是获得句柄?我本来想在那个按钮的控制函数里面加入SendMessage(WM_PAINT,0,0),然后到CWoView加入OnPaint的消息映射,但是一运行,那个字符串已经显示在上面了,我该如何做?代码的话,我只是用AppWizard做的一个SDI程序。
      

  3.   

    SendMessage(WM_PAINT,0,0)?
    当然不行
    SendMessage(pview->m_hWnd,WM_PAINT,0,0);
    pview是你的view指针
      

  4.   

    我帮你找了一个下午,好像没有找到如何在对话框(CDialog)中获得视图的函数,
    但我想了个办法:
      在CDialog的按钮中事件中加入一个发送消息的函数,但消息不是直接发送到视图,而是发送到框架上(CMainFram)
       AfxGetApp()->m_pMainWnd->PostMessage(CCCP,0,0);
      ////CCCP是自己定义的消息
      #define CCCP (WM_USER+2) 
      然后在框架中加入响应CCCP的代码
    1。在.h中 加入afx_msg void cccp();///在//}}AFX_MSG后
    2 在.cpp中
       ON_MESSAGE(CCCP,cccp)////在//}}AFX_MSG_MAP后
    3.定义cccp()函数;
      这样消息在cccp()中作处理
    然后在cccp()向视图发送消息:
      GetActiveView( )->PostMessage()....
    这样就可以
      

  5.   

    但是就算没有SendMessage(pview->m_hWnd,WM_PAINT,0,0),只要在CView中定义了OnPaint函数以后,不按我自己设计的那个按钮,视图上已经存在着东西了。
    这是我的OnPaint代码:
    CPaintDC dc(this);
    dc.TextOut(0,0,"ss");或者不用SendMessage,还有其他的办法?