救命呀:)怎样在一个类中的按钮点击,去执行另一个类中的函数命令

ponder781017 2010-02-28 01:39:07
各位大侠,我开发了一个程序有上下两个视图类,上面的CFormView视图类名称叫topview 下面的CHtmlView视图类叫 rightview

我是想在topview 里 加个按钮,点击之后,去执行 rightview 里的Onfillcontent()函数,这个函数是用来在rightview中,将打开的网页里的表单填内容的:)

就是不知道如何实现跨类执行?或者是用消息发送SendMessage()实现吗?或者是在topview中取得rightview指针执行吗?

哪位高人指点一下呀,能说的具体点么? 最好给个例子呀:)
...全文
169 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
我在发送消息的类中的头文件中TopView.h中 #define WM_MY_MESSAGE (WM_USER+100)


在发送消息的类中的TopView.cpp中要先添加:#include "MainFrm.h"

然后在按钮响应消息中这样写:


void CTopView::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//MessageBox("");
CMainFrame* pmf=(CMainFrame*)AfxGetApp()->m_pMainWnd; //先通过获取当前框架指针
CView * active = pmf->GetActiveView();//才能获取当前视类指针
if(active != NULL) //获取了当前视类指针才能发送消息
active->PostMessage(WM_MY_MESSAGE,0,0); //使用PostMessage发送消息
}



下面在接受消息的类中的RightView.h中,也要定义#define WM_MY_MESSAGE (WM_USER+100)


  并定义消息映射函数-OnMyMessage()
  protected:
  //{{AFX_MSG(CMessageTestView)
  afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
  //}}AFX_MSG
  DECLARE_MESSAGE_MAP()


  在其RightView.cpp中,
  声明响应消息:
  BEGIN_MESSAGE_MAP(CMessageTestView, CEditView)
  //{{AFX_MSG_MAP(CMessageTestView)
  ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
  //}}AFX_MSG_MAP


  再添加消息响应的函数实现:
  LRESULT CRightView::OnMyMessage(WPARAM wParam, LPARAM lParam)
  {
  MessageBox("OnMyMessage!");
  return 0;
  }


可是我在测试编译后,打开软件,点击上面的TopView中的那个按钮 还是一点反应都没有 请问给我大侠 是这么回事?

















ponder781017 2010-02-28
  • 打赏
  • 举报
回复
请教自定义的消息是在那个类中定义呀,是在框架类中定义吗?还是就是在topview类中定义呢?
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
VC++ 2005 自定义消息 我试过 老是出错,请指点一下是跟vc6.0区别很大的,请给个例子呀
xuzirui3 2010-02-28
  • 打赏
  • 举报
回复
我也想知道哦!——————————————————————————
jameshooo 2010-02-28
  • 打赏
  • 举报
回复
当然可以,自定义一个消息,向rightview窗口发送这个消息,rightview响应这个消息,在响应函数里直接调用onfillcontent
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
请问用发消息的方法能不能使用 例如 SendMessage(rightview句柄,Onfillcontent()) 意思就是向rightview发个消息,告诉rightview执行Onfillcontent函数命令?
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
请问用发消息的方法能不能使用 例如 SendMessage(rightview句柄,Onfillcontent()) 意思就是向rightview发个消息,告诉rightview执行Onfillcontent函数命令?

有没有这样的方法,有的话给个代码参考呀:)
cnzdgs 2010-02-28
  • 打赏
  • 举报
回复
topview中GetDocument()->UpdateAllViews(this, ……
rightview在OnUpdate中调用Onfillcontent。
lrqsf 2010-02-28
  • 打赏
  • 举报
回复
方法很多,不知道你的框架怎么做的不太好说。比较简单的写一个HTML类的静态函数就可以解决。
WizardK 2010-02-28
  • 打赏
  • 举报
回复
引用楼主 ponder781017 的回复:
各位大侠,我开发了一个程序有上下两个视图类,上面的CFormView视图类名称叫topview 下面的CHtmlView视图类叫 rightview

我是想在topview 里 加个按钮,点击之后,去执行 rightview 里的Onfillcontent()函数,这个函数是用来在rightview中,将打开的网页里的表单填内容的:)

就是不知道如何实现跨类执行?或者是用消息发送SendMessage()实现吗?或者是在topview中取得rightview指针执行吗?

哪位高人指点一下呀,能说的具体点么? 最好给个例子呀:)


你不是已经都说出来了,一种是发消息,另一种是获取你所创建的rightview实例的指针,在topview中操作。
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
我顶飞,没人帮忙吗 各位大侠
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
我顶,没人帮忙吗 各位大侠

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧