2010-02-06 7 views
-1

MS Visual Studio 2008에서 간단한 MFC 응용 프로그램을 다시 쓸 수있게되었습니다. 이제는 원하는대로 작동하고 있습니다. 내 유일한 문제는, 버튼을 눌러야한다는 것입니다. 그리고 나는 싫어합니다. 자동으로 작동합니다. 나는 또한 함수가 어떻게 든 자동으로 호출된다는 것을 알았다. void GetFileListDlg::OnBnClickedButtonGetFileList() : 내가 자동으로 호출입니다 원하는함수를 자동으로 호출하는 방법?

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

내 기능 :

이 기능은 각 후라고합니다. 내가 마지막으로 호출 된 OnPaint에서 내 함수를 호출하면 내 응용 프로그램이 작동하지만 함수가 끝날 때까지 아무 것도 볼 수 없습니다. OnPaint은 20 번 이상 호출됩니다 (이유를 모르겠습니다). 그래서 어떻게해야합니까 (어떻게 든 가능하다면), 그 후 OnPaint 내 공백 CGetFileListDlg::OnBnClickedButtonGetFileList() 함수를 호출해야합니까?

미리 감사드립니다.

kampi

편집 :

무엇 내 CGetFileListDlg :: OnBnClickedButtonGetFileList() 함수가하는 것은 이것이다 : 그것은 파일 목록에 대한이 개 주어진 경로를 쿼리 한 다음를 비교합니다. OnPaint는 20 번 이상 호출됩니다. 그 이유는이 함수가 나에게 좋지 않은 이유입니다. 왜냐하면이 함수를 호출 할 때 20 번 이상 호출되고 OnPaint 함수라고 불리는 이유가 ' t가 끝나고 그 이유는 내가 데이터를 볼 수 없습니다. OnInintDialog에서 함수를 호출하면 거의 정상적으로 작동하지만 이전에 끝나면 창을 볼 수 있습니다.

답변

0

PostMessage (WM_COMMAND, MAKEWPARAM (IDC_BUTTON_GET_FILE_LIST, BN_CLICKED), 0); 이것은 제가 필요한 명령입니다. 이 명령은 클릭 한 것처럼 내 버튼을 조작합니다.

어쨌든 도움 주셔서 감사합니다.

kampi

0

질문에 추가해야하는 기능 (CGetFileListDlg::OnBnClickedButtonGetFileList())에 따라 WM_INITDIALOG (코드에 'CGetFileListDlg :: OnInitDialog'이어야 함)과 같은 다른 Windows 메시지 중 하나를 과부하 할 수 있습니다. 초기화를 거기에 추가하십시오.

+0

안녕하세요! 나는 나의 질문을 편집했다. 지금 내가 뭘하고 싶은지 이해하길 바래. 내가 제대로 생각한다면, 당신이 제안한 것보다, OnInitDialog 함수에서 함수를 호출해야하지만, 이것은 내가 원한 것이 아니었다. – kampi

관련 문제