亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

```cpp

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

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

//6.處理窗口過程

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

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

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

WPARAM wParam, //鍵盤附加消息

LPARAM lParam) { //鼠標附加消息

switch (uMsg)

{

case WM_CLOSE:

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

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

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_LBUTTONDOWN://鼠標左鍵按下

{

int xPos = LOWORD(lParam);

int yPos = HIWORD(lParam);

char buf[1024];

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

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

break;

}

case WM_KEYDOWN:	//鍵盤

{

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

break;

}

case WM_PAINT:	//畫圖

{

PAINTSTRUCT ps;	//畫圖結構體

HDC hdc = BeginPaint(hand, &ps);

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

EndPaint(hand, &ps);

break;

}

default:

break;

}

//返回值用默認處理方式

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

}

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

_In_ HINSTANCE hInstance,//應用程序實例句柄

_In_opt_ HINSTANCE hPrevInstance,//上一個應用程序句柄,在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.設計窗口

2.注冊窗口

3.創(chuàng)建窗口

4.顯示和更新

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

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

*/

//1.設計窗口

WNDCLASS wc;

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

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

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

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

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

wc.hInstance = hInstance; //應用程序的實例句柄,傳入winmain的形參即可

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

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

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

wc.style = 0;	//顯示風格,0代表默認

//2.注冊窗口

RegisterClass(&wc);

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

/*lpszClassName,//類名

lpWindowName,	//標題名

dwStyle,	//風格 WC_OVERLAPPEDWINDOW

x, //坐標 CW_USERDEFAULT

y, //坐標

nWidth,	//寬

nHeight,	//高

hWndParent, //父窗口 null

hMenu,	//菜單 null

hInstance, //實例句柄

lpParam	//附加值 鼠標附加值*/

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;	//附加消息 鼠標消息

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

POINT pt;*/	//附加消息 鼠標消息 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;

}

劃重點:項目->屬性->常規(guī)->高級->將MFC的使用設置為在“共享dll中使用mfc”

頭文件mfc.h

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

class MyApp:public CWinApp{

public:

virtual BOOL InitInstance();

};

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

public:

MyFrame();

//聲明宏 提示消息映射機制

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;//保存指向應用程序的主窗口的指針

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

}

//分界宏

BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)

ON_WM_LBUTTONDOWN()//鼠標左鍵按下

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

}

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

相關文章

  • 使用c++編程實現(xiàn)簡單的打字小游戲

    使用c++編程實現(xiàn)簡單的打字小游戲

    這篇文章主要為大家介紹了使用c++編程語言來實現(xiàn)一個非常簡單的打字小游戲過程實現(xiàn)的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • C++ 名稱空間詳情

    C++ 名稱空間詳情

    當一個項目變得大型之后,我們會引入很多的庫,這么一來兩個庫很可能會定義List、Tree、Node同名的類,編譯器要是不考慮這情況的話,程序員調(diào)用時就會出現(xiàn)沖突問題。C++提供了名稱空間工具,以更好的控制名稱的作用域,本文就來談談C++ 名稱空間,需要的朋友可以參考一下
    2021-09-09
  • 一篇文章教你3分鐘如何發(fā)布Qt程序

    一篇文章教你3分鐘如何發(fā)布Qt程序

    這篇文章主要給大家介紹了關于教你3分鐘如何發(fā)布Qt程序的相關資料,文中通過實例代碼結束的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-08-08
  • C語言設計實現(xiàn)掃描器的自動機的示例詳解

    C語言設計實現(xiàn)掃描器的自動機的示例詳解

    這篇文章主要為大家詳細介紹了如何利用C語言設計實現(xiàn)掃描器的自動機,可識別的單詞包括:關鍵字、界符、標識符和常整型數(shù),感興趣的小伙伴可以了解一下
    2022-12-12
  • C++ 前置聲明詳解及實例

    C++ 前置聲明詳解及實例

    這篇文章主要介紹了C++ 前置聲明詳解及實例的相關資料,需要的朋友可以參考下
    2017-06-06
  • 詳細分析c++ const 指針與指向const的指針

    詳細分析c++ const 指針與指向const的指針

    這篇文章主要介紹了c++ const 指針與指向const的指針的相關資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C語言MFC基礎之計算器詳解

    C語言MFC基礎之計算器詳解

    這篇文章主要為大家介紹了MFC實現(xiàn)簡單的計算器,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-08-08
  • 關于C++中strcpy函數(shù)例題講解

    關于C++中strcpy函數(shù)例題講解

    在本篇文章里小編給大家整理的是關于C++中strcpy函數(shù)例題講解內(nèi)容,需要的朋友們可以參考下。
    2020-05-05
  • C語言中隊列的結構和函數(shù)接口的使用示例

    C語言中隊列的結構和函數(shù)接口的使用示例

    隊列只允許一端進行插入數(shù)據(jù)操作,在另一端進行刪除數(shù)據(jù)操作的特殊線性表,隊列具有先進先出FIFO的性質;隊列可用數(shù)組和鏈表 的方法實現(xiàn),使用鏈表的結構實現(xiàn)更優(yōu)一些,因為如果使用數(shù)組節(jié),出隊列時刪去首元素需要將整個數(shù)組前移,效率比較低
    2023-02-02
  • C++求逆序對的方法

    C++求逆序對的方法

    這篇文章主要介紹了C++求逆序對的方法,包含了字符串常見的操作方法,是非常實用的技巧,需要的朋友可以參考下
    2014-09-09

最新評論