【Windows.h】学习日志 Dat.8 子窗口标准化控件 && 定时器技术


关注公众号程序猿从入门到入土查询更方便哦

//按钮
#include<Windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {

	WNDCLASS wndclass;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndclass.hIcon = NULL;
	wndclass.hInstance = hInstance;
	wndclass.lpfnWndProc = WndProc;
	wndclass.lpszClassName = "win";
	wndclass.lpszMenuName = NULL;
	wndclass.style = CS_HREDRAW | CS_VREDRAW;

	if (!RegisterClass(&wndclass)) {
		return 0;
	}


	HWND hwnd = CreateWindow("win",
		"Buttons",
		WS_OVERLAPPEDWINDOW,
		400,
		400,
		800,
		600,
		NULL,
		NULL,
		hInstance,
		NULL);

	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	MSG msg;

	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return msg.wParam;
}


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {

	switch (message) {

	case WM_COMMAND:

		switch (LOWORD(wParam)) {
		case 1001:
			if (HIWORD(wParam) == BN_CLICKED) {
				MessageBox(hwnd, "Button_1 Clicked", "提示", MB_OK | MB_ICONINFORMATION);
			}
			break;

		case 1002:
		{

			HWND hButton_radio = (HWND)lParam;
			if (SendMessage(hButton_radio, BM_GETCHECK, 0, 0) == BST_CHECKED) {
				MessageBox(hwnd, "Button_2 selected", "提示", MB_OK | MB_ICONINFORMATION);
			}
		}
		break;

		case 1003:
		{
			HWND hButton_Check = (HWND)lParam;

			if (SendMessage(hButton_Check, BM_GETCHECK, 0, 0) == BST_CHECKED) {
				MessageBox(hwnd, "Button_3 selected", "提示", MB_OK | MB_ICONINFORMATION);
			}
			else if (SendMessage(hButton_Check, BM_GETCHECK, 0, 0) == BST_UNCHECKED) {
				MessageBox(hwnd, "Button_3 unselected", "提示", MB_OK | MB_ICONINFORMATION);
			}
		}
		break;
		}

		break;

	case WM_CREATE: {
		HWND hButton_1 = CreateWindow(
			"Button", 
			"Button_1",
			WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 
			25,5, 
			120,35,
			hwnd, 
			(HMENU)1001, 
			((LPCREATESTRUCT)lParam)->hInstance, 
			NULL);

		HWND hButton_2 = CreateWindow(
			"Button",
			"Button_2_1",
			WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
			25, 55,
			120, 35,
			hwnd,
			(HMENU)1002,
			((LPCREATESTRUCT)lParam)->hInstance,
			NULL);

		HWND hButton_22 = CreateWindow(
			"Button",
			"Button_2_2",
			WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
			225, 55,
			120, 35,
			hwnd,
			(HMENU)1002,
			((LPCREATESTRUCT)lParam)->hInstance,
			NULL);

		HWND hButton_3 = CreateWindow(
			"Button",
			"Button_3",
			WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
			25, 105,
			120, 35,
			hwnd,
			(HMENU)1003,
			((LPCREATESTRUCT)lParam)->hInstance,
			NULL);
		
	}
		break;

	case WM_DESTROY:
		PostQuitMessage(0);
		break;

	default :
		break;
	}


	return DefWindowProc(hwnd, message, wParam, lParam);
}
//timer
#include<Windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {

	WNDCLASS wndclass;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndclass.hIcon = NULL;
	wndclass.hInstance = hInstance;
	wndclass.lpfnWndProc = WndProc;
	wndclass.lpszClassName = "win";
	wndclass.lpszMenuName = NULL;
	wndclass.style = CS_HREDRAW | CS_VREDRAW;

	if (!RegisterClass(&wndclass)) {
		return 0;
	}


	HWND hwnd = CreateWindow("win",
		"Timer",
		WS_OVERLAPPEDWINDOW,
		400,
		400,
		800,
		600,
		NULL,
		NULL,
		hInstance,
		NULL);

	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	MSG msg;

	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return msg.wParam;
}


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
	static BOOL iFlag = 0;
	RECT rect;
	HDC hdc;
	PAINTSTRUCT pt;
	HBRUSH hBrush;

	switch (message) {

	
	case WM_CREATE: 
		SetTimer(hwnd, 1, 200, NULL);
		return 0;

	case WM_TIMER:
		iFlag = !iFlag;
		InvalidateRect(hwnd, NULL, FALSE);
		return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		break;

	case WM_PAINT:
		hdc = BeginPaint(hwnd, &pt);
		GetClientRect(hwnd, &rect);
		hBrush = CreateSolidBrush(iFlag ? RGB(255, 0, 0) : RGB(0, 0, 255));
		FillRect(hdc, &rect, hBrush);
		EndPaint(hwnd, &pt);
		DeleteObject(hBrush);
		ReleaseDC(hwnd, hdc);
		return 0;

		return 0;

	}


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaoYuanSama

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值