vs 2019-MFC取付

31037 ワード

title:vs 2019インストール構成MFC time:2019年8月27日22:55:57
vs2019 MFC
MFCのインストール
  • vsインストーラ
  • を開く
  • c++デスクトップ開発
  • を選択
  • Visual Studio拡張開発
  • を選択
  • (迅速に構成する場合)C++MFC生成ツール(x 86およびx 64)を選択して
  • をインストール.
  • 修正を選択し、インストールを待つ
  • .
  • 新規プロジェクトを作成し、MFCアプリケーション
  • を選択
    空のプロジェクト構成MFC快速構築
  • 新規ヘッダファイル
  •   #include//mfc   
      //     CWinApp,  MyAPP ,     (  )
      class MyApp : public CWinApp
      {
      public:
      	//      (  ),     
      	//MFC       
      	virtual BOOL InitInstance();
      };//       ;
    
      class MyFrame:public CFrameWnd
      {
      public:
      	MyFrame();	//    
    
      };
    
  • 新規ソースファイル
    #include "mfc.h"
    
    MyApp myapp;
    
    //            
    MyFrame::MyFrame() {
    	//    
    	Create(NULL, TEXT("     MFC  "));
    
    }
    
    //      
    BOOL MyApp::InitInstance() {
    	//1、       
    	MyFrame* myframe = new MyFrame; //          
    	//2、    
    	myframe->ShowWindow(SW_SHOWNORMAL);
    	//3、    
    	myframe->UpdateWindow();
    	//4、         
    	m_pMainWnd = myframe;
    
    	return TRUE;//     ,  true
    }
    
  • プロジェクト----属性----配置属性----高級------MFCの使用は共有DLLでMFC
  • を使用するとする.
  • 運転
  • 解析できない外部シンボル_main、この記号は関数「int__cdeclinvoke_main(void)」でエラーを報告します
  • プロジェクト----属性----構成属性----リンク----システム----サブシステムウィンドウWindows
  • に設定

    メッセージ・マッピング
  • はマクロを宣言し、書いた.h中
    //       ,       (        )
    DECLARE_MESSAGE_MAP();
    
  • 境界マクロ
    BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)//  
        
    END_MESSAGE_MAP()//  
    
  • メッセージマクロを探して、境界マクロの中間
    //   
    //     ,       
    BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)//  
    	ON_WM_LBUTTONDOWN()//      
    	ON_WM_CHAR()//  
    	ON_WM_PAINT()//  
    END_MESSAGE_MAP()//  
    
  • に置く.
  • 関数の原型を探して、声明は書きます.h中
    //     
    
    	//  
    	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    	//  
    	afx_msg void OnChar(UINT, UINT, UINT);
    	//  
    	afx_msg void OnPaint();
    
  • 関数の実現について、書く.cpp中
    void MyFrame::OnLButtonDown(UINT nFlags, CPoint point)
    {
    	//     
    	/*TCHAR b[1024];
    	wsprintf(b, TEXT("x = %d,y = %d"), point.x, point.y);
    	MessageBox(b);*/
    
    	//mfc     ,CString
    	CString str;
    	str.Format(TEXT("x  :%d,y  :%d"), point.x, point.y);
    	MessageBox(str);
    
    }
    
    void MyFrame::OnChar(UINT key, UINT, UINT)
    {
    	CString str;
    	str.Format(TEXT("   %c  "), key);
    	MessageBox(str);
    
    }
    
    void MyFrame::OnPaint()
    {
    	CPaintDC dc(this);
    	char str[1024] = TEXT("Inifited");//   String
    		
    	dc.TextOutA(100, 100, str);
    	dc.TextOutA(100, 200, TEXT("harder"));
    	
    	dc.Ellipse(100, 100, 200, 200);
    	
    }
    
  • ヘッダファイル
    #include//mfc   
    
    //     CWinApp,  MyAPP ,     (  )
    class MyApp : public CWinApp
    {
    public:
    	//      (  ),     
    	//MFC       
    	virtual BOOL InitInstance();
    };//       ;
    
    class MyFrame:public CFrameWnd
    {
    public:
    	MyFrame();	//    
    
    	//       ,       (        )
    	DECLARE_MESSAGE_MAP();
    	//     
    
    	//  
    	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    	//  
    	afx_msg void OnChar(UINT, UINT, UINT);
    	//  
    	afx_msg void OnPaint();
    
    };
    
    
  • ソースファイル
    #include "mfc.h"//     
    
    MyApp myapp;
    
    //            
    MyFrame::MyFrame() {
    	//    
    	Create(NULL, TEXT("     MFC  "));
    
    }
    //   
    //     ,       
    BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)//  
    	ON_WM_LBUTTONDOWN()//      
    	ON_WM_CHAR()//  
    	ON_WM_PAINT()//  
    END_MESSAGE_MAP()//  
    
    
    void MyFrame::OnLButtonDown(UINT nFlags, CPoint point)
    {
    	//     
    	/*TCHAR b[1024];
    	wsprintf(b, TEXT("x = %d,y = %d"), point.x, point.y);
    	MessageBox(b);*/
    
    	//mfc     ,CString
    	CString str;
    	str.Format(TEXT("x  :%d,y  :%d"), point.x, point.y);
    	MessageBox(str);
    
    
    }
    
    void MyFrame::OnChar(UINT key, UINT, UINT)
    {
    	CString str;
    	str.Format(TEXT("   %c  "), key);
    	MessageBox(str);
    
    }
    
    void MyFrame::OnPaint()
    {
    	CPaintDC dc(this);
    	char str[1024] = TEXT("Inifited");
    		
    	dc.TextOutA(100, 100, str);
    	dc.TextOutA(100, 200, TEXT("harder"));
    	
    	dc.Ellipse(100, 100, 200, 200);
    	
    }
    
    //      
    BOOL MyApp::InitInstance() {
    	//1、       
    	MyFrame* myframe = new MyFrame; //          
    	//2、    
    	myframe->ShowWindow(SW_SHOWNORMAL);
    	//3、    
    	myframe->UpdateWindow();
    	//4、         
    	m_pMainWnd = myframe;
    
    	return TRUE;//     ,  true
    }
    
    
  • Windows文字セット
  • c++のstring動作
    #include
    #include 
    
    using namespace std;
    int main() {
    
    	//  string   #include 
    	string s = "hello";
    	cout << s << endl;
    	const char* c = s.c_str();//string      char  ,      const
    	cout << c << endl;//  c       
    	cout << *c << endl;//  c          
    	cout << *(c + 1) << endl;//  c          
    	cout << *c + 1 << endl;//  c             ASCII    
    	cout << char(*c + 1) << endl;// ascii     
    
    	//   "const char *"             "char *"      
    	//    ->  ->C/C++->  ->    :   
    
    	//        
    	char* ch = "helloWorld";
    	int num = strlen(ch);
    	cout << num << endl;
    
    
    	//           
    	wchar_t* wc = L"start";
    	int num2 = wcslen(wc);
    	cout << num2 << endl;
    
    		return 0;
    }
    
  • マルチバイト文字列拡大バイトL
    //   Unicode,   , “aaa”    ,     ,   aaa   L,     
    	MessageBox(L"baa");
    
  • ワイドバイト文字列wchar_を宣言t
    wchar_t* wc = L"start";
    
  • 統計ワイドバイト文字列wcslen
    int num2 = wcslen(wc);
    
  • Textは適応符号化変換
    //   Text  ,        
    	MessageBox(TEXT("aaa"));
    
    	//TChar()           。   mfc     TChar()   Char
    
    
  • を行った.
  • char*とCStringの変換
    //char*  CString     
    
    	//1、char* CString
    	char* p = "right";
    	CString cs = CString(p);//        。 
    
    	//2、CString char*
    	CStringA csa = cs;
    	char* ps = csa.GetBuffer();
    
    	//  string CString  ,    string   char*   char* CString  
    
    
  • vsウィザードによるmfcの作成
  • プロセス
  • 単一文書
  • MFC standard
  • 完了
  • ビュー
  • クラスビュー
  • マウス、キーボード、図面を追加
  • フレームウィンドウは、フレームウィンドウの親ウィンドウであり、フレームウィンドウの上に開口部が覆われているため、ウィンドウにメッセージ
  • を追加する.
  • CMFCViewのプロパティを右クリックし、メッセージをクリックし、自分の必要なaddを選択すればいい