2010-02-10 67 views
0

這是我第一次使用我的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

回答

1

可以(只return TRUE;前)模擬OnInitDialog()函數內的按鈕,點擊您的按鈕:

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

注意:您可能需要以有窗刷新調用UpdateWindow()你的按鈕處理程序。

+0

嗨!它可能是一個dumm問題,但我應該在哪裏調用OnCreate()函數?這是我的第一個MFC應用程序,所以我不太瞭解你說的什麼:(你可以mybe發佈一些代碼,所以我可以理解它? – kampi

+0

相關的代碼添加。 – djeidot

+0

嗨!感謝您的代碼,現在我試圖理解你的方法幾乎可以正常工作,但是現在,我已經註釋了很多行,這是(我認爲),因爲我的函數在窗口創建之前被調用,所以我不能打印行,但是如果我可以打印,那麼我什麼也看不到,因爲當tge窗口被創建時,複製已經完成了,我是對的嗎?我只是在猜測。你知道一種方式調用我的函數,在窗口創建之後?再次感謝! – kampi

1

查找的覆蓋面板,當你在爲你的對話框代碼文件。爲OnInitDialog添加一個條目。如果你真的希望它在對話初始化的時候執行,那麼把所有的文件處理代碼放在那裏。

+0

嗨!如果我將我的代碼粘貼到OnInitDialog中,那麼它工作得很好,但是直到複製尚未完成時才顯示窗口。如果複製完成,則只會出現我的窗口。我應該創建另一個功能,僅用於複製並從其他地方撥打電話嗎? – kampi

1

您應該將所有的文件處理移動到它自己的方法中,然後您可以從任何需要的地方調用該方法。

這樣做的好處是你可以通過調用當按鈕被按下時的方法來測試代碼,然後一旦你很高興新方法正常工作,你可以從OnInitDialog或其他任何地方調用它適當。

+0

他已經說過他的文件處理代碼是在一個單獨的函數中。 **編輯** ack,他後來提到了函數名稱,我剛剛看到了。它是按鈕處理程序。哎呦! – Dave

相關問題