如何自动调用函数?

时间:2010-02-06 03:43:17

标签: c++ windows

我在MS Visual Studio 2008中重写了一个简单的MFC应用程序,现在它正在按我想要的方式工作。我唯一的问题是,我必须按一个按钮,我不想要。它应该自动工作。我还注意到该函数以某种方式自动调用。

在以下各项之后调用这些函数:

  CGetFileListDlg::CGetFileListDlg(CWnd* pParent /*=NULL*/)  
  void CGetFileListDlg::DoDataExchange(CDataExchange* pDX)  
  BEGIN_MESSAGE_MAP(CGetFileListDlg, CDialog)   
  BOOL CGetFileListDlg::OnInitDialog()   
  void CGetFileListDlg::OnPaint()   

我希望自动调用的函数是: void GetFileListDlg::OnBnClickedButtonGetFileList()。如果我从OnPaint(最后一次调用)调用我的函数,我的应用程序正在运行,但我什么也看不见,直到函数结束。 OnPaint被称为超过20次(我不知道为什么)。那么我该怎么做(如果有可能的话),OnPaint我的void CGetFileListDlg::OnBnClickedButtonGetFileList()函数应该自动被调用?

提前致谢!

kampi

编辑:

我的CGetFileListDlg :: OnBnClickedButtonGetFileList()函数的作用是:它查询文件列表的两个给定路径,然后比较它们。 OnPaint被调用超过20次,这就是为什么这对我不好的原因,因为当我在那里调用这个函数时,它将被调用超过20次,为什么它被称为OnPaint函数,不会结束了,这就是为什么我看不到数据。如果我在OnInintDialog中调用我的函数,那么它可以工作,几乎没问题,但之后它就结束了,我可以看到窗口。

2 个答案:

答案 0 :(得分:0)

根据你的函数(CGetFileListDlg::OnBnClickedButtonGetFileList())的作用(你应该添加到你的问题中),你可以重载其他一个窗口消息,比如WM_INITDIALOG(应该是'CGetFileListDlg: :代码中的OnInitDialog'并在那里添加任何初始化

答案 1 :(得分:0)

PostMessage(WM_COMMAND,MAKEWPARAM(IDC_BUTTON_GET_FILE_LIST,BN_CLICKED),0);这就是我需要的命令。这个命令会像点击它一样操纵我的按钮。

无论如何,谢谢你的帮助。

kampi