有几件事情我不知道的:MFC基本结构问题
当您使用MFC应用程序向导创建一个基本的SDI(姑且称之为TestMfc)你:
4大类:
CTestMfcApp
CTestMfcView
CTestMfcDoc
CMainFrame
我注意到的是,CTestMfcApp有这些声明
ON_COMMAND(ID_APP_ABOUT, &CTestMfcApp::OnAppAbout)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
while CTestMfcView has those :
BEGIN_MESSAGE_MAP(CTestMfcView, CEditView)
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, &CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CEditView::OnFilePrintPreview)
END_MESSAGE_MAP()
我不明白为w hy MFC是否创建了这种分离? 我看不出为什么应用程序类需要声明处理事件的函数......是不是视图的工作?如果例如几乎没有窗户,它甚至变得更清晰。
其次,如何调用这些事件?我知道应该有WINPROC功能的人应该得到MSG并调用正确的处理程序。是ON_COMMAND宏设置某种类型的指针函数谁以后可用于WINPROC函数。 为什么ON_COMMAND没有得到一个WINDOWS句柄...如果例如程序中有另一个WINDOW具有相同的ID?
第三也是最后一点,假设我想将某个窗口的线程更改为警戒状态。 要做到这一点,我想改变主循环(它不断调用getmessage/dispatchmessage etc ..并插入waitformultipleonject函数。其中是winmain函数?当appwizard为我完成所有工作时找不到它。
谢谢!
我仍然不明白ONCOMMAND宏如何知道哪些窗口句柄指定处理函数。 我的第三个担心是为了使用APC,我必须插入我的线程以提醒状态以获得那些......所以,除了使用waitformultipleobjects之外,我如何去做这些,这似乎对我来说是正确的 – Idan 2009-12-24 13:50:15
Idan,I已经添加了一些更多的信息的问题。对于另一个问题,最好单独询问。 – peterchen 2009-12-24 20:27:46