如何避免在MFC应用程序中使用按钮?

时间:2010-02-10 13:39:36

标签: c windows mfc

这是我的第一个我的MFC应用程序,不幸的是我不明白,它是如何工作的。我找到了一个简单的MFC应用程序,它获取给定路径的文件列表。我根据自己的需要修改了这段代码,但现在我遇到了一个问题。我的应用程序应该做的是以下内容。它从文件中读取两个驱动器号。然后获取两个驱动器的文件列表,然后比较它们。如果主驱动器的文件不在辅助驱动器上,则会自动复制。我做了所有这些,但现在我希望我的应用程序在没有用户交互的情况下运行。它应该只显示数据。不幸的是,当我按下按钮时,原始的MFC应用程序启动了。我想把它拿出来,我不应该按任何按钮,它只是自动复制新文件。所以我的问题如下。我应该在哪里调用我的功能,所以我不需要按一个按钮。我想我应该在这里打电话:

BEGIN_MESSAGE_MAP(CGetFileListDlg, CDialog)  
ON_WM_PAINT()  
ON_WM_QUERYDRAGICON()  
//}}AFX_MSG_MAP  
ON_BN_CLICKED(IDC_BUTTON_GET_FILE_LIST, &CGetFileListDlg::OnBnClickedButtonGetFileList)  //this is the original  
//call my function here
END_MESSAGE_MAP() 

但我不知道,我应该使用哪个事件。我在CGetFileListDlg :: OnBnClickedButtonGetFileList()函数中做了我需要的所有更改,所以这就是我想调用它的原因。我不知道这是否重要,但在复制过程中我想显示我目前正在复制哪个文件。

请有人帮助我!

提前致谢!

kampi

3 个答案:

答案 0 :(得分:1)

当您在对话框的代码文件中时,查找覆盖面板。添加OnInitDialog的条目。如果您确实希望在初始化对话框后执行它,请将所有文件处理代码放在那里。

答案 1 :(得分:1)

您应该将所有文件处理移动到自己的方法中,然后您可以从任何需要的地方调用该方法。

这样做的好处是,您可以通过在按下按钮时调用方法来测试代码,然后一旦您对新方法正常工作感到满意,您可以从OnInitDialog或其他任何看似合适的方法调用它

答案 2 :(得分:1)

您可以在OnInitDialog()功能(return TRUE;之前)模拟按钮的按键点击次数:

PostMessage(WM_COMMAND, MAKEWPARAM(IDC_BUTTON_GET_FILE_LIST, BN_CLICKED), 0);

注意:您可能需要在按钮处理程序上调用UpdateWindow()才能刷新窗口。