一个简单的SDI程序,有多个视图。第一个视图上面有几个按钮控件,分别可以打开其他几个视图(通过调用CMainFrame里的一个函数SwitchToView),子视图上面有一个ListCtrl控件。我想在响应第一个视图上面按钮的单击事件时,将ListCtrl的内容更新为数据库中的内容。
    我的问题是,如果把更新ListCtrl的函数写在On_BN_Click的话,如何才能得到ListCtrl得指针,来调用其中的InsertItem等函数呢?因为在点击按钮时,子视图还没有被创建,我不知道要怎样得到ListCtrl的指针了。希望高手帮帮忙!!!
    或者是,不需要用ListCtrl的指针,如果能有其他的办法可以实现我的功能需求,那也希望大哥大姐们指教一下。

解决方案 »

  1.   

    你应该创建ListCtrl的视图,只不过点击第一个视图的按钮的时候,获取ListCtrl的视图,然后得到ListCtrl*,然后就可以InsertItem插入数据了..
      

  2.   

    或者是,不需要用ListCtrl的指针,如果能有其他的办法可以实现我的功能需求,那也希望大哥大姐们指教一下。
    =================================
    在没有创建的时候你也得不得指针啊,是不是可以在子视图初始化时更新数据呢?
      

  3.   

    你首先要把所有的子视图都创建出来,这样指针就齐全了,至于添加数据你可以用两种方案:一、在子视图初始化时把 ListCtrl 控件的指针传递给 MainFrame ,这样不管在那里都可以调用 ListCtrl 指针了;二、用消息机制把你要的数据传递给子视图,如果你的程序中实现了多线程,那么这个方案是唯一可行的。需要说明的是消息传递必须采用 PostMessage ,SendMessage 会阻塞线程,多线程还是会导致挂掉。
      

  4.   

    楼上说的太专业,呵呵,小弟水平不够啊,太惭愧!我重载了OnUpdate函数,倒是实现了我的功能。现在又有一个新的问题,我在包含列表控件的窗口上,有一个按钮,点击之后弹出来一个对话框,在上面输入一些信息之后,点击确定,可以把这些信息写入数据库,我现在想调用OnUpdate函数,来把更新写入列表中。该如何实现???