ËÄ¡¢Ö÷Ó¦ÓóÌÐòÀà×öʲô
Ö÷Ó¦ÓóÌÐòÀàÊdzÌÐòµÄÈë¿Ú£¬ÆäËü¸÷¸öÀà¶¼ÊÇÔÚÕâ¶ù¼¯³ÉµÄ¡£Õâ¸öÀà³ý¹¹Ô캯ÊýÖ®Í⣬ΨһҪעÒâµÄ¾ÍÊdzõʼ»¯º¯Êý¡£Õâ¸öÀàÒ»°ã²»Ð޸ġ£
µ¥Îĵµ Ctest2App() ¹¹Ô캯Êý ¶Ô»°¿ò Ctest2App() ¹¹Ô캯Êý ³õʼ»¯³ÉInitInstance() ³õʼ»¯³ÉÔ±º¯Êý InitInstance() Ô±º¯Êý OnAppAbout() Óɲ˵¥·¢³öµÄÏûÏ¢ ´¦Àíº¯Êý µ¥Îĵµ BOOL Ctest2App::InitInstance() { InitCommonControls(); CWinApp::InitInstance(); if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } { ¶Ô»°¿ò BOOL Ctest3App::InitInstance() InitCommonControls(); CWinApp::InitInstance(); AfxEnableControlContainer(); SetRegistryKey(_T(\Ó¦ÓóÌÐòÏòµ¼Éú³ÉµÄ±¾µØÓ¦ÓóÌÐò\)); //¼ÓÔØ±ê×¼ INI ÎļþÑ¡Ïî(°üÀ¨ AfxEnableControlContainer(); SetRegistryKey(_T(\Ó¦ÓóÌÐòÏòµ¼Éú³ÉµÄ±¾µØÓ¦ÓóÌÐò\)); //ÉÏÃæÄÚÈݲ»ÓÃÌ«¹Ø×¢£¬ÒÔÏÂÊÇÖØMRU) LoadStdProfileSettings(4); //ÉÏÃæÄÚÈݲ»ÓÃÌ«¹Ø×¢£¬ÒÔÏÂÊÇÖØµã µã //×¢²áÓ¦ÓóÌÐòµÄÎĵµÄ£°å¡£ÎĵµÄ£ Ctest3Dlg dlg; m_pMainWnd = &dlg; °å //½«ÓÃ×÷Îĵµ¡¢¿ò¼Ü´°¿ÚºÍÊÓͼ֮¼ä INT_PTR nResponse = dlg.DoModal(); µÄÁ¬½Ó //ÏÂÃæµÄ³ÌÐò×¢Ò⣺¶Ô»°¿ò´°¿ÚÒÑ CSingleDocTemplate* pDocTemplate; ¾±»¹Ø±Õ pDocTemplate = new CSingleDocTemplate( if (nResponse == IDOK) IDR_MAINFRAME, RUNTIME_CLASS(Ctest2Doc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(Ctest2View)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); { // TODO: ÔÚ´Ë·ÅÖô¦ÀíºÎʱÓá°È·¶¨¡±À´¹Ø±Õ //¶Ô»°¿òµÄ´úÂë } else if (nResponse == IDCANCEL) { //·ÖÎö±ê×¼Íâ¿ÇÃüÁî¡¢DDE¡¢´ò¿ªÎļþ // TODO: ÔÚ´Ë·ÅÖô¦ÀíºÎʱÓòÙ×÷µÄÃüÁîÐÐ CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); ¡°È¡Ïû¡±À´¹Ø±Õ //¶Ô»°¿òµÄ´úÂë } //µ÷¶ÈÔÚÃüÁîÐÐÖÐÖ¸¶¨µÄÃüÁî¡£Èç¹û //Óà /RegServer¡¢/Register¡¢ // ÓÉÓÚ¶Ô»°¿òÒѹرգ¬ËùÒÔ½«·µ»Ø /Unregserver FALSE ÒÔ±ãÍ˳öÓ¦ÓóÌÐò£¬ //»ò /Unregister Æô¶¯Ó¦ÓóÌÐò£¬ // ¶ø²»ÊÇÆô¶¯Ó¦ÓóÌÐòµÄÏûÏ¢Ôò·µ»Ø FALSE¡£ ±Ã¡£ if (!ProcessShellCommand(cmdInfo)) return FALSE; } return FALSE; //ΨһµÄÒ»¸ö´°¿ÚÒѳõʼ»¯£¬Òò´ËÏÔ Ê¾Ëü²¢¶ÔÆä½øÐиüРm_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); //½öµ±´æÔÚºó׺ʱ²Åµ÷Óà DragAcceptFiles£¬ //ÔÚ SDI Ó¦ÓóÌÐòÖУ¬ÕâÓ¦ÔÚ ProcessShellCommand //Ö®ºó·¢Éú return TRUE; } 04Õ ³ÌÐòµÄÖ´ÐÐÁ÷³Ì
Ò»¡¢WinMain()º¯ÊýÔÚÄĶù
ÒòΪ¿´²»µ½WinMain()º¯Êý£¬Ðí¶à³õѧÕß²»ÖªµÀ³ÌÐò¾¿¾¹´ÓÄĶù¿ªÊ¼£¬±à³Ì´ÓÄĶùÏÂÊÖ£¬±àдµÄ´úÂëºÎʱÔËÐеȵȣ¬ÁíÍ⣬»¹Óкܶ࿴²»¶®µÄÓï¾ä£¬×î´óµÄÀ§ÄÑ¿ÖÅ»¹ÊÇMFCµÄ±à³Ì˼Ï벻̫Àí½â¡£¸÷λ¼ÈȻѡÔñСÑŵĽ̳ÌÀ´Ñ§Ï°MFC£¬Ð¡ÑžÍÓÐÔðÈν«Ã¿Ò»¸öÄã²»Ã÷°×µÄµØ·½ÆÊÎöÇå³þ£¬ÒòΪСÑÅ×Ô¼ºÒ²ÔøÎª´Ë¶ø·³ÄÕÁ˼¸Äê¡£²»¹ý£¬·¹»¹µÃÒ»¿ÚÒ»¿ÚµØ³Ô£¬×îºÃµÄ°ì·¨ÊÇÏÈÕÕºù«»Æ°£¬´ÓÈÝÒ×µÄÈëÊÖ£¬ÔÙÒ»²½Ò»²½µØÉîÈë¡£
MFC°ÑǧƪһÂɵÄWinMain()º¯ÊýдÔÚ¢Ùcrtexec.cÖУ¬ÔÚ±àÒëÍêºóÁ´½Óʱ²Å×é×°µ½ÄãµÄexe³ÌÐòÖС£ÔËÐÐʱ£¬Õâ¸öWinMain()º¯Êýµ÷ÓÃMFCµÄÈ«¾Öº¯ÊýAfxWinMain()£¬Õâ¸öÈ«¾Öº¯ÊýAfxWinMain()ÊÇдÔÚ¢Úappmodul.cppÖеġ£ÔÚAfxWinMain()º¯ÊýÖÐ×öÈý¼þÊ£¬¢Û×¢²á´°¿ÚÀà¡¢¢Üµ÷ÓÃÓ¦ÓóÌÐòÀàµÄ³õʼ»¯º¯ÊýInitInstance()¡¢¢Ýµ÷ÓÃÓ¦ÓóÌÐòÀàµÄRun()º¯Êý(ʵ¼ÊÉÏÊǸ¸ÀàµÄ¸¸ÀàCWinThreadµÄRun()³ÉÔ±º¯Êý)¡£
ÉÏÃæÕâ¸öRun()º¯ÊýÖаüº¬ÏûϢѻ·£¬¶øInitInstance()º¯ÊýÓÖ½«¿ò¼ÜÀà¡¢ÎĵµÀà¡¢ÊÓͼÀà½áºÏÔÚÒ»Æð£¬ÓÚÊÇËùÓеÄÀàÈ«²¿¼¯³ÉÆðÀ´ÁË¡£±à³ÌµÄÖØµãÔÚÎĵµÀàºÍÊÓͼÀ࣬ʲôÑùµÄÏûÏ¢£¬Ö´ÐÐʲôÑùµÄ´¦Àíº¯Êý£¬ÕâÑù¾ÍÓÐЧµØ½«Êý¾ÝºÍ¿ØÖÆ·ÖÀ뿪À´¡£
¶þ¡¢ÏûÏ¢´¦Àí
ÏûÏ¢´¦ÀíµÄ»Øµ÷º¯ÊýÔÚmfc70d.dllÖеÄCWnd::WindowProc(...)£¬ÓÉÉÏÃæ½²µÄRun()º¯Êýµ÷Óã¬È»ºóÔÚÖ÷Ó¦ÓóÌÐòÀà¡¢¿ò¼ÜÀà¡¢ÎĵµÀà¡¢ÊÓͼÀàÀïÃæ½ÓÊÜÕâЩÏûÏ¢²¢´¦Àí¡£ÎÊÌâÊÇ£ºÄ³Ò»ÏûÏ¢¾¿¾¹ÔÚÄĸöÀàÀïÃæ´¦Àí£¿
Óë´°¿ÚÓйصÄÏûÏ¢£¨¼´ÒÔ¡°WM_¡±¿ªÍ·µÄÏûÏ¢£©£¬Ö»ÄÜÔÚ¿ò¼ÜÀàºÍÊÓͼÀàÖд¦Àí£»À´×Բ˵¥»ò¹¤¾ßÌõµÄÃüÁîʼþ£¬Ôò¿ò¼ÜÀà¡¢ÊÓͼÀà¡¢Ö÷Ó¦ÓóÌÐòÀà¡¢ÎĵµÀàÈ«²¿¿ÉÒÔ´¦Àí£¬¾¿¾¹ÔÚÄĸöÀàÖд¦Àí£¬¸ù¾Ý¾ßÌåÇé¿öÔÙ¾ö¶¨ÔÚÄĸöÀàÖд¦Àí¡£ÕâÆäÖÐÓÐÓÅÏȼ¶±ð¸ßµÍµÄÎÊÌ⣬һ¸öÀà½ÓÊܵ½ÃüÁîÏûϢʱ£¬ÏÈ´«¸ø±È×Ô¼º¼¶±ð¸ßµÄÀ࣬Èç¹ûδ´¦ÀíÔÙ×Ô¼º´¦Àí¡£Èç¹û×Ô¼ºÒ²²»´¦Àí£¬Ôò´«¸ø±È×Ô¼º¼¶±ðµÍµÄÀà¡£
Õâ¸öÓÅÏȼ¶±ðÊÇ£ºÊÓͼÀà>ÎĵµÀà>ÎĵµÄ£°åÀà>¿ò¼ÜÀà>Ö÷Ó¦ÓóÌÐòÀà¡£ÀýÈ磬¿ò¼ÜÀàÊÕµ½¡°±à¼¡±²Ëµ¥µÄ¡°Clear All¡±ÃüÁîÏûϢʱ£¬Ê×ÏÈ´«¸øÊÓͼÀ࣬Èç¹ûÊÓͼÀà´¦Àí±ã½áÊø£¬·ñÔò¾Í´«¸øÎĵµÀà¡£Èç¹ûÎĵµÀà´¦Àí±ã½áÊø£¬·ñÔò¾Í´«¸øÎĵµÄ£°åÀà¡£Èç¹ûÎĵµÄ£°åÀà´¦ÀíÔò½áÊø£¬·ñÔò¾Í»Øµ½ÁË¿ò¼ÜÀà¡£Èç¹û¿ò¼ÜÀà´¦ÀíÔò½áÊø£¬·ñÔò¾Í´«¸øÖ÷Ó¦ÓóÌÐòÀà¡£Èç¹ûÖ÷Ó¦ÓóÌÐòÀ໹²»´¦Àí£¬¾Í»Øµ½MFCȱʡµÄ´¦Àí³ÌÐòÖС£
Èý¡¢Ìí¼Ó¡¢É¾³ýÏûÏ¢´¦Àí
Ìí¼ÓÒ»¸öÏûÏ¢´¦Àí£¬Ò»°ãÒª¸Ä¶¯Èý¸öµØ·½£¬ÒÔ
WM_LBUTTONDOWNÏûϢΪÀý£¬¢ÙÔÚÊÓͼÀàµÄ¶¨Òå(test2View.h)
ÖÐÌí¼ÓÒ»¸ö³ÉÔ±º¯Êý£¬¢ÚÔÚÊÓͼÀà(test2View.c)ÖÐÌí¼ÓÒ»ÌõÏûÏ¢Ó³É䣬¢ÛÔÚÊÓͼÀà(test2View.c)ÖÐʵÏÖÏûÏ¢´¦ÀíµÄ³ÉÔ±º¯Êý¡£
// test2View.h : Ctest2View ÀàµÄ½Ó¿Ú ......(Ê¡ÂÔ) // Éú³ÉµÄÏûÏ¢Ó³É亯Êý protected: DECLARE_MESSAGE_MAP() public: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); }; ......(Ê¡ÂÔ) // test2View.cpp : Ctest2View ÀàµÄʵÏÖ // #include \ #include \ #include \ #include \ #include \ #ifdef _DEBUG #define new DEBUG_NEW #endif // Ctest2View IMPLEMENT_DYNCREATE(Ctest2View, CView) BEGIN_MESSAGE_MAP(Ctest2View, CView) // ±ê×¼´òÓ¡ÃüÁî ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() ......(Ê¡ÂÔ) // Ctest2View ÏûÏ¢´¦Àí³ÌÐò void Ctest2View::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: ÔÚ´ËÌí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂëºÍ/»òµ÷ÓÃĬÈÏÖµ AfxMessageBox(\È°Ñ§Íø http://www.quanxue.cn/\, MB_OK); CView::OnLButtonDown(nFlags, point); } ÉÏÃæËäÈ»ºÜ¼òµ¥£¬µ«²»½¨ÒéÊÖ¶¯Ìí¼Ó£¬Ó¦¸ÃÔÚ¡°ÀàÊÓͼ¡±ÖÐÑ¡ÖС°Ctest2View¡±£¬ÔÙÔÚ¡°ÊôÐÔ¡±¹¤¾ßÖÐÑ¡Ôñ¡°WM_LBUTTONDOWN¡±ÏûÏ¢£¬Í¬Ê±Ñ¡ÉÏ¡°OnLButtonDown¡±ºó»Ø³µ¾Í¿ÉÒÔÁË¡£
ÓÃͬÑù·½·¨ÔÚ¡°ÊôÐÔ¡±¹¤¾ßÖÐɾ³ý¡°WM_LBUTTONDOWN¡±ÏûϢʱ£¬Ç°ÃæÌí¼ÓµÄÈý´¦´úÂ뽫±»Óá°//¡±×¢ÊÍÔÚÄǶù£¬³ÉÁË¡°À¬»ø¡±´úÂë¡£Õâʱ×îºÃÊÖ¶¯É¾³ýÒ»ÏÂÕâÈý´¦¡°À¬»ø¡±´úÂë¡£
ËÄ¡¢³ÌÐòµÄÈë¿Ú
ѧ¹ýC++ÓïÑÔ»òJavaÓïÑÔµÄÈ˶¼Ã÷°×£¬ÀàÏ൱ÓÚ×Ô¶¨ÒåµÄÊý¾ÝÀàÐÍ£¬Èç¹ûûÓÐʵÀý£¬×ÔÉíÊDz»»áÔËÐеġ£ÄÇô£¬ÉÏÃæÒ»Ö±ÔÚ½â˵Õâ4¸öÀ࣬µ±Ç°Éú³ÉµÄ5¸ö.cppÎļþÖУ¬WinMainÆô¶¯ºó¾¿¾¹ÏÈÔËÐÐʲôÓï¾ä£¬ºóÔËÐÐʲôÓï¾ä£¿
ÒªÃ÷°×MFCµÄϸ½Ú£¬³ýÁËC++µÄ»ù´¡Ö®Í⣬×îºÃѧһµãSDK±à³Ì£¬Á˽âWin32±à³ÌÖеĻù±¾ÄÚÈÝ¡£Ð¡ÑÅÔÚSDK½Ì³ÌÖеĵÚ1Õµ½µÚ3ÕµÄÄÚÈÝÇë²Î¿¼¡£MFCÉú³ÉµÄ4¸öÀàÖУ¬Ö÷Ó¦ÓóÌÐòÀàÊÇ´ÓCWinAppÀà¼Ì³ÐµÄ£¬×÷ÓÃÏ൱ÓÚWinMain³ÌÐò£»CMainFrameÊÇ´ÓCFrameWndÀà¼Ì³ÐµÄ£¬Æä×÷ÓÃÏ൱ÓÚWndProc³ÌÐò¡£Ò²¾ÍÊÇ˵£¬ÏûÏ¢Ê×ÏÈÓÉ¿ò¼ÜÀà½ÓÊÜ£¬È»ºó°´ÓÅÏÈ˳Ðò´«¸øÆäËüµÄÀà¡£ÎĵµÀàºÍÊÓͼÀàÓÉÏûÏ¢À´Çý¶¯£¨ÊÓͼÀàµÄPreCreateWindow()³ýÍ⣩¡£
Ö÷Ó¦ÓóÌÐòÀàµÄ³ÌÐòtest2.cppÖУ¬Ìø¹ýÏûÏ¢Ó³ÉäÒÔ¼°ÀàµÄ¹¹Ô캯Êý¡¢³ÉÔ±º¯Êýºó£¬Êµ¼ÊֻʣÏÂ1ÌõÓï¾ä£¬¼´¡°Ctest2App theApp;¡±£¬Õâ±ãÊÇÕû¸öÓ¦ÓóÌÐòµÄ×ÜÈë¿Ú¡£MFCµÄcrtexec.cµÄWinMain()º¯Êýµ÷ÓÃtest2.cppÖеġ°Ctest2App theApp;¡±¡£theAppÊÇÀàµÄʵÀý£¬×ÔȻҲÊDZØÈ»Òªµ÷ÓÃÖ÷Ó¦ÓóÌÐòÀàµÄ¹¹Ô캯Êý£¬°üÀ¨¸¸ÀàµÄ¹¹Ô캯Êý£¬
Ïà¹ØÍÆ¼ö£º