最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

```cpp

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

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

//6.處理窗口過(guò)程

//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.通過(guò)循環(huán)取消息

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

*/

//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ù) 窗口過(guò)程

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.通過(guò)循環(huán)取消息

MSG msg;

/*

_Out_ LPMSG lpMsg,	//消息

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

_In_ UINT wMsgFilterMin,	//最大和最小的過(guò)濾消息 一般填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)文章

  • Qt多線程實(shí)現(xiàn)網(wǎng)絡(luò)發(fā)送文件功能

    Qt多線程實(shí)現(xiàn)網(wǎng)絡(luò)發(fā)送文件功能

    這篇文章主要為大家詳細(xì)介紹了Qt多線程實(shí)現(xiàn)網(wǎng)絡(luò)發(fā)送文件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語(yǔ)言程序環(huán)境編譯+鏈接理論

    C語(yǔ)言程序環(huán)境編譯+鏈接理論

    這篇文章主要介紹了C語(yǔ)言程序環(huán)境編譯+鏈接理論,下面文章基于C語(yǔ)言的相關(guān)資料展開(kāi)對(duì)編譯和鏈接的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • C/C++語(yǔ)言中的頭文件匯總

    C/C++語(yǔ)言中的頭文件匯總

    這篇文章主要匯總了C/C++語(yǔ)言中的頭文件,方便各位朋友更好的工作和學(xué)習(xí),有需要的朋友可以參考下
    2020-06-06
  • C++文件讀取的4種情況匯總

    C++文件讀取的4種情況匯總

    前幾天要用到C++讀取文本文件,就學(xué)習(xí)了一下幾種不同的讀取方法,下面這篇文章主要給大家介紹了關(guān)于C++文件讀取的4種情況,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Opencv實(shí)現(xiàn)用于圖像分割分水嶺算法

    Opencv實(shí)現(xiàn)用于圖像分割分水嶺算法

    這篇文章主要為大家詳細(xì)介紹了Opencv實(shí)現(xiàn)用于圖像分割分水嶺算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++全面覆蓋內(nèi)存管理知識(shí)講解

    C++全面覆蓋內(nèi)存管理知識(shí)講解

    本章主要介紹C語(yǔ)言與C++的內(nèi)存管理,以C++的內(nèi)存分布作為引入,介紹C++不同于C語(yǔ)言的內(nèi)存管理方式(new delete對(duì)比 malloc free),感興趣的朋友來(lái)看看吧
    2022-06-06
  • 詳解C語(yǔ)言中index()函數(shù)和rindex()函數(shù)的用法

    詳解C語(yǔ)言中index()函數(shù)和rindex()函數(shù)的用法

    這篇文章主要介紹了C語(yǔ)言中index()函數(shù)和rndex()函數(shù)的用法,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),要的朋友可以參考下
    2015-08-08
  • C語(yǔ)言實(shí)現(xiàn)計(jì)算器的兩種方法

    C語(yǔ)言實(shí)現(xiàn)計(jì)算器的兩種方法

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)計(jì)算器的兩種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語(yǔ)言入門篇--定義宏#define的概述

    C語(yǔ)言入門篇--定義宏#define的概述

    本篇文章是C語(yǔ)言系列基礎(chǔ)篇,適合c語(yǔ)言剛?cè)腴T的朋友,本文對(duì)關(guān)于c語(yǔ)言的定義宏#define作了簡(jiǎn)要的概述,希望可以幫助大家快速入門c語(yǔ)言的世界,更好的理解c語(yǔ)言
    2021-08-08
  • Matlab實(shí)現(xiàn)簡(jiǎn)易紀(jì)念碑谷游戲的示例代碼

    Matlab實(shí)現(xiàn)簡(jiǎn)易紀(jì)念碑谷游戲的示例代碼

    《紀(jì)念碑谷》是USTWO公司開(kāi)發(fā)制作的解謎類手機(jī)游戲,在游戲中,通過(guò)探索隱藏小路、發(fā)現(xiàn)視力錯(cuò)覺(jué)以及躲避神秘的烏鴉人來(lái)幫助沉默公主艾達(dá)走出紀(jì)念碑迷陣。本文將用Matlab編寫簡(jiǎn)易版的紀(jì)念碑谷游戲,感興趣的可以了解一下
    2022-03-03

最新評(píng)論

张家港市| 兴山县| 巴林右旗| 乌鲁木齐县| 民丰县| 德清县| 台南县| 牡丹江市| 博客| 玉龙| 连州市| 汽车| 漯河市| 库伦旗| 安宁市| 庆元县| 阳信县| 博白县| 扬中市| 铜梁县| 西华县| 三门峡市| 哈巴河县| 正安县| 江川县| 晴隆县| 宝坻区| 永善县| 繁昌县| 界首市| 永登县| 莱芜市| 忻州市| 光泽县| 德阳市| 广饶县| 海淀区| 陇南市| 阳山县| 宜阳县| 陵川县|