win32 視窗 兩種方式顯示字串
vs2013 新建一個win32 應用程式 ,專案名稱:HelloTextOut,空專案。
新增一個原始檔,名字為 HelloTextOut.cpp
內容為:
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("HelloWin");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("This program requires Windows NT!"),
szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName, // window class name
TEXT("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL); // creation parameters
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc; // 1
PAINTSTRUCT ps; // 2
TCHAR msg[] = _T("Hello, World!"); // 3
TCHAR szText[] = _T("Good Day!"); // 4
switch (message)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT: // 5
hdc = BeginPaint(hwnd, &ps); // 6
TextOut(hdc, 50, 20, msg, _tcslen(msg)); // 7
EndPaint(hwnd, &ps); // 8
break;
case WM_LBUTTONDOWN: //9
hdc = GetWindowDC(hwnd); //10
TextOut(hdc, 50, 100, szText, _tcslen(szText)); //11
ReleaseDC(hwnd, hdc); //12
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
執行效果:如下
相關推薦
win32 視窗 兩種方式顯示字串
vs2013 新建一個win32 應用程式 ,專案名稱:HelloTextOut,空專案。 新增一個原始檔,名字為 HelloTextOut.cpp 內容為: #include <windows.h> #include <stdlib
div控制顯示與隱藏狀態的兩種方式
要點: 1.本人原來用的是IDEA編譯器,因為什麼環境都配置好了,程式碼提示功能也好,介面也優美,可惜什麼都好導致太龐大。本人在自習室敲程式碼,筆記本電池管不了一上午,後用sublime,真輕便哈哈。但是裡面的外掛的程式碼其實,應該是隻收錄了js的關鍵字,然後給的提示,並不會篩選。這裡,因為前段
fastDFS+LibreOffice多檔案上傳(二)後端部分:檔案資訊轉json字串儲存資料庫(Gson和org.json兩種方式)
需要注意的地方: 1)如果你複製我的程式碼到你的程式上報錯,可以看看我第一篇文章實體類跟配置檔案的設定:https://blog.csdn.net/qq_36688143/article/details/84162924 第二篇檔案上傳前端頁面的程式碼: https://blog.c
格式化字串兩種方式
Python中內建有對字串進行格式化的操作 %和使用format函式。 %方式操作 格式化字串時,Python使用一個字串作為模板。模板中有格式符,這些格式符為真實值預留位置,並說明真實數值應該呈現的格式。Python用一個tuple將多個值傳遞給模板,每個值對應一個格式符。 比如下面的例子: 1 p
Axios傳參的兩種方式,表單資料和json字串(Form Data和Request Payload)
第一種方式:Form Data Axios引數配置: 1、引入 import Qs from 'qs' 2、 return request({ headers: { 'Content-Type': 'application/x-www-form-
Springboot之接收json字串的兩種方式
第一種方式、通過關鍵欄位@RequestBody,標明這個物件接收json字串。還有第二種方式,直接通過request來獲取流。在spring中,推薦使用。 1、通過@RequestBody 接收json 直接通過@RequestBody 的方式,直接將json的資料注入到了JSONObject
oracle 拼接字串的兩種方式
方式一:使用管道符||進行拼接 方式二:使用concat()函式 區別: 方式一可以拼接多個字串;方式二隻能將2個字串拼接到一起。 寫在最後 哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!! 相關
80.android 簡單的當前fragment頁面判斷顯示隱藏的兩種方式
//第一種 是切換fragment頁面使用: @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser
字串反轉的兩種方式
public static String charAtReverse(String s){ int a = s.length(); String reverse = ""; for(int i=0;i<a;i++){ rever
matlab分隔字串的兩種方式
簡單的兩種方式,也記錄在這,省的以後再查別的資料: 1) strfind 函式,假設在一個字串中,每一個字元型換以分隔符’C‘作為分隔,那麼簡單的用一個語句可以獲取每一個分隔符的位置,從而分隔字串。 示例:iIndex = strfind(strline,'
Springboot之接收json字串的兩種方式-yellowcong
第一種方式、通過關鍵欄位@RequestBody,標明這個物件接收json字串。還有第二種方式,直接通過request來獲取流。在spring中,推薦使用。 程式碼地址 https://gitee.com/yellowcong/springb
Winform遍歷視窗的所有控制元件(兩種方式)
博文主要以下圖中的控制元件來比較這兩種方式獲取控制元件的方式: 1. 最簡單的方式: private void GetControls1(Control fatherControl) { C
建立選單;MAKEINTRESOURCE;選單加入視窗的兩種方式
MAKEINTRESOURCE是一個資源名轉換的巨集,這個巨集是把一個數字型別轉換成指標型別的巨集,它不存在釋放的問題。 選單加入視窗的兩種方式 第一種是類級別的,也就是我們在設計視窗類時,直接指定給WNDCLASS結構的lpszMenuName成員,
MySQL入門--顯示錶結構的兩種方式
顯示錶的欄位名,欄位資料型別,欄位約束情況,儲存引擎,預設字元編碼集,有以下兩種方式。 方式1 SHOW COLUMNS FROM 表名; 方式2 SHOW COLUMNS FRO
字串轉為數字(c c++ 兩種方式)
int val = 0; std::string tmp = 10 or a; 十進位制: std::istringstream(tmp) >> val;//c++ val = atoi(
設定Dialog全屏顯示的兩種方式
預設的Dialog是不能全屏的。也就是怎麼設定Dialog的Layout都沒用的。 給出實現Dialog實現全屏的兩種方式: 1、程式碼實現。這中方法相對比較簡單 首先繼承Dialig,然後再建構函式中新增 super(context, android.R.style.Theme); setOwn
Java中多個視窗間呼叫的兩種方式
Eclipse中的WindowBuilder外掛很適合用在小型程式的使用者介面開發上,這種直觀快速的方法不僅易於操作,而且還能在一定程度上提高效率。 標題中的“兩種方式”,實際上指的就是視窗間呼叫的:1.純程式碼實現方式,和2.WindowBuilder外掛實現方式。
手把手教你用MFC和OpenCV,製作mfc讀取並顯示影象(兩種方式)
MFC OpenCV 讀取並顯示影象 *************************************************完成的效果如圖******************************************** 前言:我用的是VS2013 + O
asp.net資料庫配置檔案連線字串的兩種方式
一 本地資料庫 在ASP.NET開發的網站根目錄,有一個名為web.config的檔案,顧名思義,這是為整個網站進行配置的檔案,其格式為XML格式。 這裡主要談談檔案中的<connectionStrings>節。 <connectionStrings&
建立字串物件的時候,使用字面值和使用new String()構造器這兩種方式有什麼不同?
當我們使用new String構造器來建立字串的時候,字串的值會在堆中建立,而不會加入JVM的字串池中。相反,使用字面值建立的String物件會被放入堆的PermGen段中。例如: String str=new String(“Test”); 這句程式碼建立的物件s