当前位置:网站首页>Vs2019 first MFC Application

Vs2019 first MFC Application

2022-07-06 11:24:00 imxlw00

Create project

The creation of the project is the same as before , Only the suffix of the source file this time is .cpp, because MFC By C++ Compiling , To write MFC The program needs to contain **#include <afxwin.h>** The header file .

Write code

 Insert picture description here

mfc.h

#pragma once
#include <afxwin.h>

class MyApp :public CWinApp//CWinApp Application class 
{
    
public:
	// Program entrance 
	virtual BOOL InitInstance();

};
class MyFrame :public CFrameWnd
{
    
public :
	MyFrame();

};


mfc.cpp

#include "mfc.h"
MyApp app;// Global application objects , There is and only one 

BOOL MyApp::InitInstance()
{
    
	// create a window 
	MyFrame* frame = new MyFrame();
	// Display and update 
	frame->ShowWindow(SW_NORMAL);
	frame->UpdateWindow();
	// Save a pointer to the main window of the application 
	m_pMainWnd = frame;
	// Return to normal initialization 
	return TRUE;
}

MyFrame::MyFrame()
{
    
	Create(NULL, TEXT("mfc"));
}

Run the program

Configuration environment
Right-click the project properties
 Insert picture description here

 Insert picture description here
It shows an empty interface
 Insert picture description here

Program execution flow

①  When the program starts , Instantiate the application object first ( There is one and only one )
②  The entry function of the execution program InitInstance()
③  To frame class MyFrame Object dynamically allocates space ( Automatically call its constructor ), Inside its constructor , adopt CWnd::Create create a window
④  Frame class object display window CWnd::ShowWindow
⑤  Frame class object update window CWnd::UpdateWindow
⑥  Save frame class object pointer CWinThread::m_pMainWnd

Message mapping

A message map is a table that associates messages with member functions . such as , The frame window receives a left mouse click message ,MFC The message map for this window will be searched , If there is a process WM_LBUTTONDOWN Message handler , Then call OnLButtonDown.

Here's all you've done to add a message map to a class :
1) In the operated class , Declare the message mapping macro .
2) Perform message mapping by placing a macro that identifies the message , The corresponding class will BEGIN_MESSAGE_MAP and END_MESSAGE_MAP Processing messages between calls to .
 Insert picture description here
3) The corresponding message processing functions are declared in the class , Off class definition :
 Insert picture description here

Add message processing

Let the program move !!!

	// Declare macros   Provide message mapping mechanism 
	DECLARE_MESSAGE_MAP()
	afx_msg void OnLButtonDown(UINT, CPoint);

	afx_msg void OnChar(UINT, UINT, UINT);

	afx_msg void OnPaint();
// Boundary macro 
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)

	ON_WM_LBUTTONDOWN() // Press the left mouse button 

	ON_WM_CHAR() // keyboard 

	ON_WM_PAINT() // Drawing macro 

END_MESSAGE_MAP()

void MyFrame::OnLButtonDown(UINT, CPoint point)
{
    

	/*TCHAR buf[1024]; wsprintf(buf, TEXT("x = %d, y =%d"), point.x, point.y); MessageBox(buf);*/

	//mfc String in  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(" Press %c  key "), key);

	MessageBox(str);

}

void MyFrame::OnPaint()
{
    
	CPaintDC dc(this);  //CDC Look for other graphics that you can draw  

	dc.TextOutW(100, 100, TEXT(" For the tribe "));
	// Drawing ellipse 
	dc.Ellipse(10, 10, 100, 100);

	// Multi byte to   Wide bytes  
	//TEXT Is the conversion by adaptive coding 
	// TCHER  Conversion of adaptive coding 
	//MessageBox(L"aaa");

	// Statistical string length 
	int num = 0;
	char * p = "aaaa";
	num = strlen(p);

	// Count the string length of wide bytes 
	wchar_t * p2 = L"bbbb";
	num = wcslen(p2);

	//char *  And  CString Conversion between  C++ string .c_str();
	//char* -> CString
	char * p3 = "ccc";
	CString str = CString(p3);
	//CString -> char *
	CStringA tmp;
	tmp = str;
	char * pp = tmp.GetBuffer();



}

 Insert picture description here

原网站

版权声明
本文为[imxlw00]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060912503623.html