Windows SDK编程 初学笔记

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
#include "windows.h"

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow) {
	MessageBox(NULL, TEXT("来见见世面"), TEXT("Say Hi"), MB_OK);
	return 0;
}

MessageBox第一个参数为句柄第二个参数为内容第三个参数为标题

第四个为现实的按钮MB_OK代表只显示确定按钮。 

MB_OKCANCEL则代表多一个取消按钮

MB_ABORTRETRYIGNORE代表有以上三个按钮

剩下的也是根据英文意思来进行一个按钮的显示

加上异或可以进行图标的不同显示

#define MB_ICONHAND                 0x00000010L
#define MB_ICONQUESTION             0x00000020L
#define MB_ICONEXCLAMATION          0x00000030L
#define MB_ICONASTERISK             0x00000040L

#if(WINVER >= 0x0400)
#define MB_USERICON                 0x00000080L
#define MB_ICONWARNING              MB_ICONEXCLAMATION
#define MB_ICONERROR                MB_ICONHAND
#endif /* WINVER >= 0x0400 */

#define MB_ICONINFORMATION          MB_ICONASTERISK
#define MB_ICONSTOP                 MB_ICONHAND

MB_DEFBUTTON2代表运行后默认选择在第二项也就是重试按钮可以看前面的都是默认选择在第一项当然MB_DEFBUTTON3的话就会默认选择在第三项也就是忽略按钮

MessageBox同样也存在返回值

#define IDOK                1
#define IDCANCEL            2
#define IDABORT             3
#define IDRETRY             4
#define IDIGNORE            5
#define IDYES               6
#define IDNO                7
#if(WINVER >= 0x0400)
#define IDCLOSE         8
#define IDHELP          9
#endif /* WINVER >= 0x0400 */
#if(WINVER >= 0x0500)
#define IDTRYAGAIN      10
#define IDCONTINUE      11
#endif /* WINVER >= 0x0500 */
#if(WINVER >= 0x0501)
#ifndef IDTIMEOUT
#define IDTIMEOUT 32000

#define TEXT(quote) __TEXT(quote)   // r_winnt
#define __TEXT(quote) L##quote      // r_winnt

往TEXT宏内部看发现可以用L来代替TEXT() 

UE4中同样也是

FString a = L"111";
GEngine->AddOnScreenDebugMessage(-1, 10.f, FColor::Yellow, a);

 

MessageBox(NULL, TEXT("123"), TEXT("312"), MB_OK);

但是UE4如何需要使用Windows编程的话必须添加以下头文件

#include "Windows/AllowWindowsPlatformTypes.h"
#include "Windows/PreWindowsApi.h"
#include <windows.h>
#include "Windows/PostWindowsApi.h"
#include "Windows/HideWindowsPlatformTypes.h"

 

 

 

ASCILL码存在中文乱码问题Unicode解决了这一问题


 

窗口编程和控制台编程有所不一样要把进行一些设置右键点击选择属性

将子系统选择为窗口方能编译成功 


#include "windows.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
	HDC hdc;
	PAINTSTRUCT ps;
	RECT rect;

	switch (message) {
	case WM_PAINT://如果消息是绘制
		hdc = BeginPaint(hwnd, &ps);//dc全称为device context = 设备上下文 设备描述表中记录和此设备相关的各种信息比如对于显示器来说记录了显示器的尺寸、分辨率还有当前选择的画笔、画刷、字体等GDI对象的信息。
		GetClientRect(hwnd, &rect);
		DrawText(hdc, TEXT("学习日记!!!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
		EndPaint(hwnd, &ps);
		return 0;

	case WM_LBUTTONDOWN:
		MessageBox(NULL, L"Clicked Window!", L"Hint", MB_OK);
		return 0;

	case WM_DESTROY://如果消息是结束绘制
		PostQuitMessage(0);
		return 0;
	}

	return DefWindowProc(hwnd, message, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow) {
	
	static TCHAR szAppName[] = TEXT("MyWindows");//定义窗口类的名字
	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("注册失败"), L"FAILED", MB_ABORTRETRYIGNORE | MB_ICONQUESTION | MB_DEFBUTTON2);
		return 0;
	}

	hwnd = CreateWindow(//调用WndProc函数
		szAppName, 
		TEXT("学习日记"),
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hinstance,
		NULL
	);

	ShowWindow(hwnd, iCmdShow); //调用WndProc函数
	UpdateWindow(hwnd);//调用WndProc函数

	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);//调用WndProc函数
	}

	return	msg.wParam;
}

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: windows