怎样对父窗口进行数据更新

anufa 2004-05-07 10:03:02
请问大家,我对父窗口进行数据更新该如何做啊,又遇到问题了。
我是在FormView中动态的创建CPropertySheet,我现在想点击属性页上的按钮后刷新FormView上的CListCtrl控件数据,可要出现IsWindow()问题,我该怎么做才能更新父窗口的CListCtrl控件数据。

////下面是我的错误做法,可有ISWINDOW(),
void CBasicPage::OnBtModify()
{
COwnBasicInfoView *parentView;
parentView = (COwnBasicInfoView *)GetParent();
parentView->RefreshData();
}

void COwnBasicInfoView::RefreshData()
{
m_list.DeleteAllItems();
}
...全文
61 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
anufa 2004-05-09
  • 打赏
  • 举报
回复
大家帮我看看,该如何使用消息,
oxeyer 2004-05-08
  • 打赏
  • 举报
回复
MSDN search
GetParent()
ygzdev 2004-05-08
  • 打赏
  • 举报
回复
哈哈,楼上的你这样说他还是不懂的,建议还是找本书或原吗认真研究,毕竟这个在VC中太重要了
UDX协议 2004-05-08
  • 打赏
  • 举报
回复

既然是父窗口
GetParent()->PostMessage(WM_XXXXXFRESHLIST,0,0);


case WM_XXXXXFRESHLIST:
{
//刷新。...
}

ygzdev 2004-05-08
  • 打赏
  • 举报
回复
呵呵,那你要找本书来好好看看了,这个你一定要掌握,掌握了这个你就会发现好多问题很简单了
anufa 2004-05-08
  • 打赏
  • 举报
回复
我怎么用消息就是不能成功呢?
帮我看看我上面使用消息问题出在哪里?
tjucruiser 2004-05-08
  • 打赏
  • 举报
回复
CPropertySheet实际很类似于CDialog类,所以要从这个类中得到视图类的指针,必须先得到主框架类的指针,再得到视图类的指针,你可以试试下面的方法
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
COwnBasicInfoView *parentView = (COwnBasicInfoView *) pFrame->GetActiveView();
parentView ->Invalidate(true);

当然,我很同意上面说道用发消息的几位老大的方法。
anufa 2004-05-08
  • 打赏
  • 举报
回复
我这样做是哪里的问题
我在Resorce.h中定义 #define WM_MSG_REFRESH 61448

映射函数:
afx_msg void RefreshData();
WM_MSG_REFRESH(IDC_LIST1,RefreshData) //IDC_LIST1 IS Clistctrl ID

调用:
GetParent()->PostMessage(WM_MSG_REFRESH,0,0);

////////////////////
error C2064: term does not evaluate to a function
ygzdev 2004-05-08
  • 打赏
  • 举报
回复
GetParent()是返回上一级窗口的句柄,在你的程序第一次GetParent()只能得到FORMVIEW,一次也可以,那你就要到视图类里面处理这条消息了!如果没有书的话,你就看你用classwizard给控件加消息函数的时候文件里面多了些什么东西,然后你就可以定义自己的消息
#define WM_MYMSG WM_USER+100

其他的过程你就照着classwizard做的一样做吧
anufa 2004-05-08
  • 打赏
  • 举报
回复
( parentView = (COwnBasicInfoView *)(GetParent()->GetParent());
///是怎么个道理,为什么要两次GetParent()?这样就行?

不过大家能给我讲讲这个消息是在哪里定义,又在哪里编辑处理等等吗?
这种思路,向上面说的,很重要,应该更灵活,用途更广
可现在我还找不到哪里学啊
我的硬盘太小了,MSDN也没装

anufa 2004-05-08
  • 打赏
  • 举报
回复
呵呵,就是就是啊,要学的太多了,
不过现在我只好向大家即学急用了,
这个消息是在哪里定义,又在哪里编辑处理?
anufa 2004-05-07
  • 打赏
  • 举报
回复
方法对我来说真是新颖。有种茅塞顿开的感觉。
不过我从用过自己定义消息,
怎样进行自定义消息?有该如何给父窗口发送消息?
菜牛 2004-05-07
  • 打赏
  • 举报
回复
parentView = (COwnBasicInfoView *)(GetParent()->GetParent());
thundenet 2004-05-07
  • 打赏
  • 举报
回复
严重同意二位,先自定义一个消息,然后再编写消息处理函数(在其中填写你要实现的代码),通过发送消息调用该函数就可以了!
ygzdev 2004-05-07
  • 打赏
  • 举报
回复
最好也是最简单的方法就是发送消息,不知道该发什么消息就对FormView发自定义消息,在自定义消息的处理函数里面处理,想干什么就干什么,何止数据更新
暗黑帝国 2004-05-07
  • 打赏
  • 举报
回复
用发送消息可能更合理一些,在父窗口中定义一个自定义消息和处理函数专门用来更新你的CListCtrl,然后在点击属性页上的按钮时发这个自定义消息给父窗口就行了.

16,548

社区成员

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

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

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