MFC程序带参数运行实例

8 篇文章 0 订阅


      鱼老大需要让两子程序带参数运行,于是仔细找找了,原来MFC中自带有一个成员变量m_lpCmdLine保存有参数。以下是自己学习的心得,其中包含MFC源码介绍及DEMO:

 

      1、该参数在MFC源码中的位置如下,打开AFXWIN.H,可以找到:

 

 

[cpp]  view plain  copy
 print ?
  1. class CWinApp : public CWinThread  
  2. {  
  3.     DECLARE_DYNAMIC(CWinApp)  
  4. public:  
  5.   
  6. // Constructor  
  7.     CWinApp(LPCTSTR lpszAppName = NULL);     // app name defaults to EXE name  
  8.   
  9. // Attributes  
  10.     // Startup args (do not change)  
  11.     HINSTANCE m_hInstance;  
  12.     HINSTANCE m_hPrevInstance;  
  13.     LPTSTR m_lpCmdLine;  
  14.     int m_nCmdShow;  
  15.   
  16.     // Running args (can be changed in InitInstance)  
  17.     LPCTSTR m_pszAppName;  // human readable name  
  18.                                 //  (from constructor or AFX_IDS_APP_TITLE)  
  19.     LPCTSTR m_pszRegistryKey;   // used for registry entries  
  20.     CDocManager* m_pDocManager;  
  21.   
  22.     // Support for Shift+F1 help mode.  
  23.     BOOL m_bHelpMode;           // are we in Shift+F1 mode?  
  24.   
  25.     ......  
  26. }  

 

      2、新建一个MFC对话框程序,其中下面两个函数中添加的源代码如下:

 

[cpp]  view plain  copy
 print ?
  1. BOOL CB1App::InitInstance()  
  2. {  
  3.     AfxEnableControlContainer();  
  4.   
  5.     // Standard initialization  
  6.     // If you are not using these features and wish to reduce the size  
  7.     //  of your final executable, you should remove from the following  
  8.     //  the specific initialization routines you do not need.  
  9.   
  10. #ifdef _AFXDLL  
  11.     Enable3dControls();         // Call this when using MFC in a shared DLL  
  12. #else  
  13.     Enable3dControlsStatic();   // Call this when linking to MFC statically  
  14. #endif  
  15.   
  16.     if((m_lpCmdLine[0] == _T('/0')) || (lstrcmp(m_lpCmdLine, _T("b1")) != 0))     
  17.     {     
  18.         m_bCmdRet=TRUE;  
  19.     }   
  20.     else  
  21.         m_bCmdRet=FALSE;  
  22.   
  23.     ......  
  24. }  

 

 

[cpp]  view plain  copy
 print ?
  1. /  
  2. // CB1Dlg message handlers  
  3. BOOL CB1Dlg::OnInitDialog()  
  4. {  
  5.     CDialog::OnInitDialog();  
  6.   
  7.     // 判断参数是否正确,否则退出  
  8.     // 参数在App类初始函数中  
  9.     if(m_bCmdRet)  
  10.     {  
  11.         //MessageBox("参数错误!");  
  12.         EndDialog(0);  
  13.     }  
  14.     // Add "About..." menu item to system menu.  
  15.   
  16.     // IDM_ABOUTBOX must be in the system command range.  
  17.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);  
  18.     ASSERT(IDM_ABOUTBOX < 0xF000);  
  19.   
  20.     ......  
  21. }  

 

       3、程序运行截图:

 

       MFC运行参数 "b1.exe b1"

 

       4、总结,再次深入了解MFC这个框架部分结构。(PS:有人说MFC已经过时了,有人说MFC是一坨屎,,,,,,当然不同的领域、不同的需求当然说法也是人云亦云了,正如“小马过河”的典故,自己脚下的路才是真实!)

 

 

       5、VC源码及DEMO下载地址:

 

      鱼老大需要让两子程序带参数运行,于是仔细找找了,原来MFC中自带有一个成员变量m_lpCmdLine保存有参数。以下是自己学习的心得,其中包含MFC源码介绍及DEMO:

 

      1、该参数在MFC源码中的位置如下,打开AFXWIN.H,可以找到:

 

 

[cpp]  view plain  copy
 print ?
  1. class CWinApp : public CWinThread  
  2. {  
  3.     DECLARE_DYNAMIC(CWinApp)  
  4. public:  
  5.   
  6. // Constructor  
  7.     CWinApp(LPCTSTR lpszAppName = NULL);     // app name defaults to EXE name  
  8.   
  9. // Attributes  
  10.     // Startup args (do not change)  
  11.     HINSTANCE m_hInstance;  
  12.     HINSTANCE m_hPrevInstance;  
  13.     LPTSTR m_lpCmdLine;  
  14.     int m_nCmdShow;  
  15.   
  16.     // Running args (can be changed in InitInstance)  
  17.     LPCTSTR m_pszAppName;  // human readable name  
  18.                                 //  (from constructor or AFX_IDS_APP_TITLE)  
  19.     LPCTSTR m_pszRegistryKey;   // used for registry entries  
  20.     CDocManager* m_pDocManager;  
  21.   
  22.     // Support for Shift+F1 help mode.  
  23.     BOOL m_bHelpMode;           // are we in Shift+F1 mode?  
  24.   
  25.     ......  
  26. }  

 

      2、新建一个MFC对话框程序,其中下面两个函数中添加的源代码如下:

 

[cpp]  view plain  copy
 print ?
  1. BOOL CB1App::InitInstance()  
  2. {  
  3.     AfxEnableControlContainer();  
  4.   
  5.     // Standard initialization  
  6.     // If you are not using these features and wish to reduce the size  
  7.     //  of your final executable, you should remove from the following  
  8.     //  the specific initialization routines you do not need.  
  9.   
  10. #ifdef _AFXDLL  
  11.     Enable3dControls();         // Call this when using MFC in a shared DLL  
  12. #else  
  13.     Enable3dControlsStatic();   // Call this when linking to MFC statically  
  14. #endif  
  15.   
  16.     if((m_lpCmdLine[0] == _T('/0')) || (lstrcmp(m_lpCmdLine, _T("b1")) != 0))     
  17.     {     
  18.         m_bCmdRet=TRUE;  
  19.     }   
  20.     else  
  21.         m_bCmdRet=FALSE;  
  22.   
  23.     ......  
  24. }  

 

 

[cpp]  view plain  copy
 print ?
  1. /  
  2. // CB1Dlg message handlers  
  3. BOOL CB1Dlg::OnInitDialog()  
  4. {  
  5.     CDialog::OnInitDialog();  
  6.   
  7.     // 判断参数是否正确,否则退出  
  8.     // 参数在App类初始函数中  
  9.     if(m_bCmdRet)  
  10.     {  
  11.         //MessageBox("参数错误!");  
  12.         EndDialog(0);  
  13.     }  
  14.     // Add "About..." menu item to system menu.  
  15.   
  16.     // IDM_ABOUTBOX must be in the system command range.  
  17.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);  
  18.     ASSERT(IDM_ABOUTBOX < 0xF000);  
  19.   
  20.     ......  
  21. }  

 

       3、程序运行截图:

 

       MFC运行参数 "b1.exe b1"

 

       4、总结,再次深入了解MFC这个框架部分结构。(PS:有人说MFC已经过时了,有人说MFC是一坨屎,,,,,,当然不同的领域、不同的需求当然说法也是人云亦云了,正如“小马过河”的典故,自己脚下的路才是真实!)

 

 

       5、VC源码及DEMO下载地址:

 

       http://download.csdn.net/source/1536508


http://blog.csdn.net/wangningyu/article/details/4399039

   转自:   http://download.csdn.net/source/1536508

      鱼老大需要让两子程序带参数运行,于是仔细找找了,原来MFC中自带有一个成员变量m_lpCmdLine保存有参数。以下是自己学习的心得,其中包含MFC源码介绍及DEMO:

 

      1、该参数在MFC源码中的位置如下,打开AFXWIN.H,可以找到:

 

 

[cpp]  view plain  copy
 print ?
  1. class CWinApp : public CWinThread  
  2. {  
  3.     DECLARE_DYNAMIC(CWinApp)  
  4. public:  
  5.   
  6. // Constructor  
  7.     CWinApp(LPCTSTR lpszAppName = NULL);     // app name defaults to EXE name  
  8.   
  9. // Attributes  
  10.     // Startup args (do not change)  
  11.     HINSTANCE m_hInstance;  
  12.     HINSTANCE m_hPrevInstance;  
  13.     LPTSTR m_lpCmdLine;  
  14.     int m_nCmdShow;  
  15.   
  16.     // Running args (can be changed in InitInstance)  
  17.     LPCTSTR m_pszAppName;  // human readable name  
  18.                                 //  (from constructor or AFX_IDS_APP_TITLE)  
  19.     LPCTSTR m_pszRegistryKey;   // used for registry entries  
  20.     CDocManager* m_pDocManager;  
  21.   
  22.     // Support for Shift+F1 help mode.  
  23.     BOOL m_bHelpMode;           // are we in Shift+F1 mode?  
  24.   
  25.     ......  
  26. }  

 

      2、新建一个MFC对话框程序,其中下面两个函数中添加的源代码如下:

 

[cpp]  view plain  copy
 print ?
  1. BOOL CB1App::InitInstance()  
  2. {  
  3.     AfxEnableControlContainer();  
  4.   
  5.     // Standard initialization  
  6.     // If you are not using these features and wish to reduce the size  
  7.     //  of your final executable, you should remove from the following  
  8.     //  the specific initialization routines you do not need.  
  9.   
  10. #ifdef _AFXDLL  
  11.     Enable3dControls();         // Call this when using MFC in a shared DLL  
  12. #else  
  13.     Enable3dControlsStatic();   // Call this when linking to MFC statically  
  14. #endif  
  15.   
  16.     if((m_lpCmdLine[0] == _T('/0')) || (lstrcmp(m_lpCmdLine, _T("b1")) != 0))     
  17.     {     
  18.         m_bCmdRet=TRUE;  
  19.     }   
  20.     else  
  21.         m_bCmdRet=FALSE;  
  22.   
  23.     ......  
  24. }  

 

 

[cpp]  view plain  copy
 print ?
  1. /  
  2. // CB1Dlg message handlers  
  3. BOOL CB1Dlg::OnInitDialog()  
  4. {  
  5.     CDialog::OnInitDialog();  
  6.   
  7.     // 判断参数是否正确,否则退出  
  8.     // 参数在App类初始函数中  
  9.     if(m_bCmdRet)  
  10.     {  
  11.         //MessageBox("参数错误!");  
  12.         EndDialog(0);  
  13.     }  
  14.     // Add "About..." menu item to system menu.  
  15.   
  16.     // IDM_ABOUTBOX must be in the system command range.  
  17.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);  
  18.     ASSERT(IDM_ABOUTBOX < 0xF000);  
  19.   
  20.     ......  
  21. }  

 

       3、程序运行截图:

 

       MFC运行参数 "b1.exe b1"

 

       4、总结,再次深入了解MFC这个框架部分结构。(PS:有人说MFC已经过时了,有人说MFC是一坨屎,,,,,,当然不同的领域、不同的需求当然说法也是人云亦云了,正如“小马过河”的典故,自己脚下的路才是真实!)

 

 

       5、VC源码及DEMO下载地址:

 

       http://download.csdn.net/source/1536508

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "MFC Windows程序设计"是一本非常经典的MFC(Microsoft Foundation Classes)框架的Windows程序设计教材,提供了一套完整的学习和实践的指导。在这本书中,读者可以学习到关于MFC框架的重要概念和基础知识,以及如何利用MFC进行Windows应用程序的开发。 这本书的PDF版本有书签功能,这是一项非常实用和方便的功能。书签功能可以帮助读者快速定位到所需的章节、节或特定的内容。当读者打开这本书的PDF时,可以通过点击书签列表中的各个项,快速跳转到相应的位置。 这本书的书签功能的应用范围非常广泛。对于初学者而言,可以通过书签直接跳转到所感兴趣的概念、代码示例或问题解答。对于具有一定经验的开发者来说,书签功能可以帮助他们快速检索和回顾需要的知识点,提高开发效率。 除了方便的定位功能之外,这本书的PDF版本还提供了一些其他的特点。比如,书签可以根据读者的需要自定义,并且可以添加和删除书签项。此外,书签的显示方式也可以调整,比如可以以树形结构或平铺视图的方式显示书签列表。 总的来说,有书签的"MFC Windows程序设计" PDF版本是一份非常方便的学习和参考资料,它通过书签功能提供了便捷的导航和获取所需信息的途径,使得读者能够更加高效地学习和应用MFC框架进行Windows程序开发。 ### 回答2: MFC(Microsoft Foundation Classes)是一种Microsoft Windows平台上的编程框架,用于开发图形用户界面(GUI)应用程序MFC提供了一系列的类和函数,以及许多常用的控件,使得开发者能够更容易地创建Windows操作系统上的应用程序MFC Windows程序设计PDF书签的意思是,希望找到一本关于MFC Windows程序设计的电子书,并且该电子书拥有书签功能。 对于这个需求,可以在互联网上搜索MFC Windows程序设计的相关电子书。一些常见的电子书网站,如豆瓣读书、知网、百度文库等,往往会提供PDF格式的电子书下载服务。用户可以根据关键词搜索“MFC Windows程序设计PDF”,然后在搜索结果中查找有书签功能的电子书。 选择电子书时,可以根据自己的需要和水平选择合适的难度和内容的图书。一些经典的MFC Windows程序设计书籍,如《MFC窗口程序设计经典实例》、《MFC程序设计实例解析与经典源码》等,不仅介绍了MFC的基本概念和使用方法,还提供了实例代码供读者参考和学习。 一旦找到合适的电子书,可以下载到本地计算机的硬盘上,并使用支持书签功能的PDF阅读器打开。在阅读器中,用户可以利用书签功能,将自己常用或感兴趣的章节添加为书签,以便于日后查找和阅读。 总之,要找到一本MFC Windows程序设计的PDF电子书,并使其有书签功能,用户可以在网上搜索并选择一本合适的电子书,然后下载到本地并使用支持书签功能的PDF阅读器进行阅读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值