Как вызвать функцию автоматически? - PullRequest
0 голосов
/ 06 февраля 2010

Я переписал простое приложение MFC в MS Visual Studio 2008, и теперь оно работает так, как я хотел. Моя единственная проблема в том, что я должен нажать кнопку, а я не хочу. Это должно работать автоматически. Я также заметил, что функция как-то вызывается автоматически.

Эти функции вызываются после:

  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 голосов
/ 14 февраля 2010

PostMessage (WM_COMMAND, MAKEWPARAM (IDC_BUTTON_GET_FILE_LIST, BN_CLICKED), 0); Это команда, что мне нужно. Эта команда будет манипулировать моей кнопкой, как если бы она была нажата.

Спасибо за вашу помощь в любом случае.

Kampi

0 голосов
/ 06 февраля 2010

В зависимости от того, что делает ваша функция (CGetFileListDlg::OnBnClickedButtonGetFileList()) (которую вы должны добавить к своему вопросу), вы можете просто перегрузить одно из других сообщений Windows, например WM_INITDIALOG (которое должно быть 'CGetFileListDlg :: OnInitDialog' в ваш код) и добавьте туда любую инициализацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...