程序一启动就触发了OnUpdate(),怎么解决?在线等

he8311 2009-06-17 11:59:08
我将一个窗口分割成两个窗口A、B
在A中设定了一个void CMyView::OnClick()鼠标点击函数,调用UpdateAllViews(this);
希望当点击鼠标键后,在B窗口显示信息
void CMyView2::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{AfxMessageBox(“你好!”);}

但按ctrl+f5,程序编译启动后,首先就会先弹出提示窗口,显示“你好!”。!”。(这不是我要的结果)
然后运行程序,点击后,也会弹出提示窗口,显示“你好!”。(这是我要的结果)
这是怎么回事?怎么避免第一种情况?
...全文
91 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlmzhuanjia 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 The_facE 的回复:]
messagebox换地方吧。

可以让view1在OnClick时发个消息给view2,然后view2响应消息,弹出messagebox。

或者直接在view1里给messagebox传递view2的句柄,让其owner属于view2。

如果根本不计较messagebox的owner,干脆让OnClick弹出。
[/Quote]up
tgh621 2009-06-17
  • 打赏
  • 举报
回复
自己写个函数来处理吧
yayafu 2009-06-17
  • 打赏
  • 举报
回复
自己判断第1次或换个地方显示你好
The_facE 2009-06-17
  • 打赏
  • 举报
回复
messagebox换地方吧。

可以让view1在OnClick时发个消息给view2,然后view2响应消息,弹出messagebox。

或者直接在view1里给messagebox传递view2的句柄,让其owner属于view2。

如果根本不计较messagebox的owner,干脆让OnClick弹出。
killbug2004 2009-06-17
  • 打赏
  • 举报
回复
view显示前会调用一次OnUpdate,第一次不显示只有自己加条件判断了
softist 2009-06-17
  • 打赏
  • 举报
回复
第一次,第二次的做法很痛苦。为什么?试想一下 如果你在5,6各View之间,谁是“第一次”?哈哈。
softist 2009-06-17
  • 打赏
  • 举报
回复
稍微“正规”的做法是

void CMyView::OnClick()
{
CMyView2* pView2 = GetView2();
if (pView2)
pView2->xxxxxx();
}

我想你一定会写 GetView2()函数;

至于xxxxxx()的内容,“正规”的做法是 用WM_USER或WM_APP,进行窗口间的消息传递。
或 直接调用 CMyView2的成员函数也中啊。

俺认为“正规”,其实不一定哟!
  • 打赏
  • 举报
回复
可以加个标识 区分是否是第一次调用
na_he 2009-06-17
  • 打赏
  • 举报
回复
opUpdate()中不适合做你说的那个动作,客户区发生变化的时候就会触发这个函数的调用了。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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