这是我的第一个我的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
答案 0 :(得分:1)
当您在对话框的代码文件中时,查找覆盖面板。添加OnInitDialog的条目。如果您确实希望在初始化对话框后执行它,请将所有文件处理代码放在那里。
答案 1 :(得分:1)
您应该将所有文件处理移动到自己的方法中,然后您可以从任何需要的地方调用该方法。
这样做的好处是,您可以通过在按下按钮时调用方法来测试代码,然后一旦您对新方法正常工作感到满意,您可以从OnInitDialog或其他任何看似合适的方法调用它
答案 2 :(得分:1)
您可以在OnInitDialog()
功能(return TRUE;
之前)模拟按钮的按键点击次数:
PostMessage(WM_COMMAND, MAKEWPARAM(IDC_BUTTON_GET_FILE_LIST, BN_CLICKED), 0);
注意:您可能需要在按钮处理程序上调用UpdateWindow()
才能刷新窗口。