Visual Studio 2019 + Visual C++——创建Visual C++ Hello World! 程序
基本概念
Visual C++:Microsoft Visual C++,(簡稱Visual C++、MSVC、VC++或VC)是Microsoft公司推出的開發Win32環境程序,面向對象的可視化集成編程系統。它不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設計集成交互操作、可開發多種程序等優點,而且通過簡單的設置就可使其生成的程序框架支持數據庫接口、OLE2,WinSock網絡、3D控制界面。
API?
裝備情況(DC)
在Windows中,一切能在顯示器上看到的多是圖形,不只包含點、線、矩形、圓等,也包含文字、字體。對用戶來說文字和圖片是分歧的,但它們在實質上多是圖形,都需求在顯示器上畫出來。這也是Windows被稱作圖形操作零碎的緣由。Windows不許可我們直接拜訪硬件,如鍵盤、顯示器、打印機等,在與這些硬件通訊前要取得裝備情況(Device Context,簡稱 DC),進而直接的拜訪硬件。
裝備情況有時也被稱為裝備上下文或裝備描繪表。
所謂裝備情況,就是與以后硬件裝備有關的各類信息,它是硬件裝備的籠統。也就是說,裝備情況就代表以后的硬件。與文字輸入、圖形繪制有關的函數,在運用時大都需求傳入一個參數,就是裝備情況句柄。獲取裝備情況句柄有多種方法,常用的是 BeginPaint 函數。畫圖完成后,還要釋放句柄,運用 EndPaint 函數。
BeginPaint 和 EndPaint 函數
當發作 WM_PAINT 事情時,使用程序開端畫圖。畫圖之前需求先挪用 BeginPaint 函數告訴 Windows,通知它以后程序需求運用顯示器,你布置一下吧。BeginPaint 函數履行終了就前往裝備情況句柄,接下來就可以運用 GDI 函數畫圖了。畫圖完畢后,也需求挪用 EndPaint 函數告訴Windows,通知它畫圖完畢了,你可以持續前面的任務了。
TextOut 函數
TextOut 函數可以在客戶區輸入一段文本,原型為:
BOOL TextOut( HDC hdc, //裝備情況句柄 int nXStart, //開端輸入地位的x坐標 int nYStart, //開端輸入地位的y坐標 LPCTSTR lpString, //要輸入的字符串 int cbString //字符串的長度 );每當發作WM_PAINT事情時,窗口就會發作重繪,這個時分需求向窗口輸入文字:
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ HDC hdc; //裝備情況句柄 PAINTSTRUCT ps; //存儲畫圖情況的相干信息 TCHAR szText[20] = TEXT("歡迎離開C言語中文網"); switch (message){ case WM_PAINT: //開端畫圖并前往情況句柄 hdc = BeginPaint (hwnd, &ps); //輸入文字 TextOut(hdc, 50, 50, szText, wcslen(szText)); //完畢畫圖并釋放情況句柄 EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage(0) ; return 0 ; } return DefWindowProc(hwnd, message, wParam, lParam) ; }闡明:?
1) PAINTSTRUCT 構造體用來保管與畫圖情況有關的信息,本教程不會運用到,不再解說,有興味的讀者可自行Google或百度。
2) BeginPaint 和 EndPaint 函數用來開端畫圖和完畢畫圖,必需成對呈現,輸入文字或繪制圖形的代碼也必需放在兩個函數之間。
3) 字符串普通運用寬字符,對應的盤算字符串長度的函數為 wcslen()。
DrawText函數
TextOut 在一個終點開端輸入文本,可以準確定位,不克不及主動換行;DrawText 在指定區域內輸入文本,可以掌握格局對齊(居左、居中、居右),可以換行。
DrawText 在外部其實也是挪用TextOut ,不外它作了許多處置,比方 DrawText 無需曉得輸入若干個字符。更主要的是,DrawText 可以處置換行符而 TextOut 不克不及,從這個角度看,DrawText 應當是一種更初級的用法,是在TextOut根底上的封裝。DrawText 的原型是:
int DrawText( HDC hDC, //裝備情況句柄 LPCTSTR lpString, //將要輸入的字符串 int nCount, //字符串的長度 LPRECT lpRect, //指向一個矩形區域的構造體 RECT 的指針 UINT uFormat //輸入格局 );闡明:
1) 假如 nCount 為 -1,則標明 lpString 指向的字符串是以'\0'完畢的,DrawText 會主動盤算字符數。
2) 參數 uFormat 有四種取值,它們可以恣意組合:
DT_CALCRECT:這個參數比擬主要,可以使 DrawText 函數盤算出輸入文本的尺寸。假如輸入文本有多行,DrawText 函數運用 lpRect 界說的矩形的寬度,并擴大矩形的底部以包容輸入文本的最初一行。假如輸入文本只要一行,則 DrawText 函數改動矩形的左邊界,以包容下注釋行的最初一個字符。呈現上述任何一種狀況。
DT_CENTER:指定文本程度居中顯示。
DT_VCENTER:指定文本垂直居中顯示。該標志只在單行文本輸入時無效,所以它必需與DT_SINGLELINE聯合運用。
DT_SINGLELINE:單行顯示文本,回車和換行符都不執行。
操作步驟
1、打開Visual Studio 2019
2、創建新項目
3、編寫代碼?
// // 函數: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目標: 處理主窗口的消息。 // // WM_COMMAND - 處理應用程序菜單 // WM_PAINT - 繪制主窗口 // WM_DESTROY - 發送退出消息并返回 // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {switch (message){case WM_COMMAND:{int wmId = LOWORD(wParam);// 分析菜單選擇:switch (wmId){case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}}break;case WM_PAINT:{PAINTSTRUCT ps;HDC hdc = BeginPaint(hWnd, &ps);// TODO: 在此處添加使用 hdc 的任何繪圖代碼...EndPaint(hWnd, &ps);}break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0; }?修改
為
case WM_PAINT:{PAINTSTRUCT ps;RECT rect;HDC hdc = BeginPaint(hWnd, &ps);// TODO: 在此處添加使用 hdc 的任何繪圖代碼...GetClientRect(hWnd, &rect); DrawText(hdc, TEXT("Hello World!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);EndPaint(hWnd, &ps);}break;運行結果
參考文章
https://blog.csdn.net/Jailman/article/details/86690444
https://ask.csdn.net/questions/198674
https://www.360kuai.com/pc/91f5e584ede7e3d61
https://blog.csdn.net/yes2/article/details/52506979
總結
以上是生活随笔為你收集整理的Visual Studio 2019 + Visual C++——创建Visual C++ Hello World! 程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA——System.in作为控制台
- 下一篇: Visual C++ MFC——基于Sh