天天看點

c語言mfc視窗,怎麼使用visual studio2019建立簡單的MFC視窗(使用C++)

本文簡介了怎麼使用visual studio2019建立簡單的MFC視窗(使用C++)

c語言mfc視窗,怎麼使用visual studio2019建立簡單的MFC視窗(使用C++)

```cpp

使用visual studio 2019 建立過程請參考Bili的上一篇文章⬇⬇

→!使用visual studio 2019 建立簡單的MFC視窗「使用底層的C語言」

#include//底層實作視窗的頭檔案

//6.處理視窗過程

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

LRESULTCALLBACK WindowProc(HWND hand,//消息所屬視窗句柄

UINT uMsg, //詳細消息名稱 WM_XXXX消息名

WPARAM wParam, //鍵盤附加消息

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

switch (uMsg)

{

case WM_CLOSE:

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

DestroyWindow(hand);//發送另一個消息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);

}

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

) {

//1.設計視窗

WNDCLASS wc;

wc.cbClsExtra = 0;//類的額外的記憶體

wc.cbWndExtra = 0;//視窗額外的記憶體

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

wc.hCursor = LoadCursor(NULL, IDC_HAND);//設定光标,如果第一個參數為null,代表使用系統提供的光标

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

wc.hInstance = hInstance; //應用程式的執行個體句柄,傳入winmain的形參就行了

wc.lpfnWndProc = WindowProc;//回調函數 視窗過程

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

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

wc.style = 0;//顯示樣式,0代表預設

//2.注冊視窗

RegisterClass(&wc);

//3.建立視窗

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

//附加消息 滑鼠消息 x,y

//5.通過循環取消息

MSG msg;

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

{

//翻譯消息

TranslateMessage(&msg);

//不是false

//分發消息

DispatchMessage(&msg);

}

return 0;

}

劃重要:項目->屬性->正常->進階->将MFC的使用設定為在“分享dll中使用mfc”

頭檔案mfc.h

#include //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() {

//建立視窗

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建立簡單的MFC視窗(使用C++)的文章就簡介到這了,更多相關vs2019建立MFC視窗内容請搜尋樂購源碼以前的文章或繼續浏覽下面的相關文章希望大家以後多多支援樂購源碼!