比如使用AppWizard创建了一个SDI程序,在对话框中增加一个按钮,然后当单击这个按钮,想在窗口中显示一串字符串就行,该如何做?使用GetDlgItem不论返回CWnd指针也好,返回CWoView*(一个程序中CView派生类)也好,都不行;我也试过手工在CWoView中用对话框那个按钮的ID进行消息映射以及控制函数,根本不行,该用什莫方法??还有,为什莫在CWoView中对对话框里面的按钮手动进行消息映射以及控制函数不行呢(就是把这个按钮的所有映射和控制函数都放到CWoView中去)??谢谢大虾了。
当然不行
SendMessage(pview->m_hWnd,WM_PAINT,0,0);
pview是你的view指针
但我想了个办法:
在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()....
这样就可以
这是我的OnPaint代码:
CPaintDC dc(this);
dc.TextOut(0,0,"ss");或者不用SendMessage,还有其他的办法?