欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用visual studio2019創(chuàng)建簡(jiǎn)單的MFC窗口(使用C++)

 更新時(shí)間:2020年03月13日 10:17:07   作者:BiliIT  
這篇文章主要介紹了如何使用visual studio2019創(chuàng)建簡(jiǎn)單的MFC窗口(使用C++),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文介紹了如何使用visual studio2019創(chuàng)建簡(jiǎn)單的MFC窗口(使用C++)

```cpp

使用visual studio 2019 創(chuàng)建過程請(qǐng)參考Bili的上一篇文章⬇⬇
→!使用visual studio 2019 創(chuàng)建簡(jiǎn)單的MFC窗口「使用底層的C語言」

#include<windows.h>	//底層實(shí)現(xiàn)窗口的頭文件

//6.處理窗口過程

//CALLBACK 代表_stdcall 參數(shù)的傳遞順序:從右到左依次入棧,并且函數(shù)返回前清空堆棧

LRESULT	CALLBACK WindowProc(HWND hand,	//消息所屬窗口句柄

UINT uMsg, //具體消息名稱 WM_XXXX消息名

WPARAM wParam, //鍵盤附加消息

LPARAM lParam) { //鼠標(biāo)附加消息

switch (uMsg)

{

case WM_CLOSE:

//所有以XXXXWindow為結(jié)尾的方法,都不會(huì)進(jìn)入到消息隊(duì)列中,而是直接執(zhí)行

DestroyWindow(hand);//發(fā)送另一個(gè)消息WM_DESTROY

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_LBUTTONDOWN://鼠標(biāo)左鍵按下

{

int xPos = LOWORD(lParam);

int yPos = HIWORD(lParam);

char buf[1024];

wsprintf(buf, TEXT("x = %d,y = %d"),xPos,yPos);

MessageBox(hand, buf, TEXT("按下鼠標(biāo)左鍵"), MB_OK);

break;

}

case WM_KEYDOWN:	//鍵盤

{

MessageBox(hand, TEXT("鍵盤"), TEXT("按下鍵盤"), MB_OK);

break;

}

case WM_PAINT:	//畫圖

{

PAINTSTRUCT ps;	//畫圖結(jié)構(gòu)體

HDC hdc = BeginPaint(hand, &ps);

TextOut(hdc, 100, 100,TEXT("hello"), strlen("hello"));

EndPaint(hand, &ps);

break;

}

default:

break;

}

//返回值用默認(rèn)處理方式

return DefWindowProc(hand, uMsg, wParam, lParam);

}

/*程序入口函數(shù)

_In_ HINSTANCE hInstance,//應(yīng)用程序?qū)嵗浔?

_In_opt_ HINSTANCE hPrevInstance,//上一個(gè)應(yīng)用程序句柄,在WIN32環(huán)境下一般為NULL,不起作用了

_In_ LPSTR lpCmdLine,//char * argv[]

_In_ int nShowCmd//顯示命令 最大化、最小化、正常

WINAPI 代表_stdcall 參數(shù)的傳遞順序:從右到左依次入棧,并且函數(shù)返回前清空堆棧*/

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd

) {

/*

1.設(shè)計(jì)窗口

2.注冊(cè)窗口

3.創(chuàng)建窗口

4.顯示和更新

5.通過循環(huán)取消息

6.處理消息(窗口過程)

*/

//1.設(shè)計(jì)窗口

WNDCLASS wc;

wc.cbClsExtra = 0;	//類的額外的內(nèi)存

wc.cbWndExtra = 0;	//窗口額外的內(nèi)存

wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //設(shè)置背景

wc.hCursor = LoadCursor(NULL, IDC_HAND);	//設(shè)置光標(biāo),如果第一個(gè)參數(shù)為null,代表使用系統(tǒng)提供的光標(biāo)

wc.hIcon = LoadIcon(NULL, IDI_ERROR);	//圖標(biāo),如果第一個(gè)參數(shù)為null,代表使用系統(tǒng)提供的圖標(biāo)

wc.hInstance = hInstance; //應(yīng)用程序的實(shí)例句柄,傳入winmain的形參即可

wc.lpfnWndProc = WindowProc;	//回調(diào)函數(shù) 窗口過程

wc.lpszClassName = TEXT("WIN");	//指定窗口名稱

wc.lpszMenuName = NULL;	//菜單名稱

wc.style = 0;	//顯示風(fēng)格,0代表默認(rèn)

//2.注冊(cè)窗口

RegisterClass(&wc);

//3.創(chuàng)建窗口

/*lpszClassName,//類名

lpWindowName,	//標(biāo)題名

dwStyle,	//風(fēng)格 WC_OVERLAPPEDWINDOW

x, //坐標(biāo) CW_USERDEFAULT

y, //坐標(biāo)

nWidth,	//寬

nHeight,	//高

hWndParent, //父窗口 null

hMenu,	//菜單 null

hInstance, //實(shí)例句柄

lpParam	//附加值 鼠標(biāo)附加值*/

HWND hwnd = CreateWindow(wc.lpszClassName, TEXT("WINDOWS"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

//4.顯示和更新

ShowWindow(hwnd, SW_SHOWNORMAL);

UpdateWindow(hwnd);

/*HWND hwnd;	//主窗口句柄

UINT message;	//具體消息名稱

WPARAM wParam;	//附加消息 鍵盤消息

LPARAM lParam;	//附加消息 鼠標(biāo)消息

DWORD time;	//消息產(chǎn)生時(shí)間

POINT pt;*/	//附加消息 鼠標(biāo)消息 x,y

//5.通過循環(huán)取消息

MSG msg;

/*

_Out_ LPMSG lpMsg,	//消息

_In_opt_ HWND hWnd,	//捕獲窗口 填null表示捕獲所有窗口

_In_ UINT wMsgFilterMin,	//最大和最小的過濾消息 一般填0

_In_ UINT wMsgFilterMax);*/

while (GetMessage(&msg, NULL, 0, 0))

{

/*if (GetMessage(&msg, NULL, 0, 0) == FALSE) {

break;

}*/

//翻譯消息

TranslateMessage(&msg);

//不是false

//分發(fā)消息

DispatchMessage(&msg);

}

return 0;

}

劃重點(diǎn):項(xiàng)目->屬性->常規(guī)->高級(jí)->將MFC的使用設(shè)置為在“共享dll中使用mfc”

頭文件mfc.h

#include <afxwin.h>//mfc頭文件

class MyApp:public CWinApp{

public:

virtual BOOL InitInstance();

};

class MyFrame :public CFrameWnd {//窗口框架類

public:

MyFrame();

//聲明宏 提示消息映射機(jī)制

DECLARE_MESSAGE_MAP();

afx_msg void OnLButtonDown(UINT,CPoint);

afx_msg void OnChar(UINT,UINT,UINT);

afx_msg void OnPaint();

};

源文件mfc.cpp

#include “mfc.h”

MyApp app;

BOOL MyApp::InitInstance() {

//創(chuàng)建窗口

MyFrame* frame = new MyFrame;

//顯示和更新

frame->ShowWindow(SW_SHOWNORMAL);

frame->UpdateWindow();

m_pMainWnd = frame;//保存指向應(yīng)用程序的主窗口的指針

return TRUE;//返回正常初始化

}

//分界宏

BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)

ON_WM_LBUTTONDOWN()//鼠標(biāo)左鍵按下

ON_WM_CHAR()

ON_WM_PAINT()

END_MESSAGE_MAP()

MyFrame::MyFrame()

{

Create(NULL,TEXT(“windows”));

}

void MyFrame::OnLButtonDown(UINT, CPoint point)

{

//TCHAR buf[1024];

//wsprintf(buf, TEXT(“x = %d,y = %d”), point.x, point.y);

//MessageBox(buf);

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);

dc.TextOutW(100,100,TEXT(“為了部落”));

dc.Ellipse(10,10,100,100);

}

到此這篇關(guān)于如何使用visual studio2019創(chuàng)建簡(jiǎn)單的MFC窗口(使用C++)的文章就介紹到這了,更多相關(guān)vs2019創(chuàng)建MFC窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論