首页 > 其他分享 >CG学习笔记 / 创建窗口、消息循环、窗口消息

CG学习笔记 / 创建窗口、消息循环、窗口消息

时间:2024-09-09 20:26:58浏览次数:10  
标签:wParam 窗口 handle CG nullptr 消息 hwnd msg wc

#include <Windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg)
	{
	case WM_CLOSE:
		PostQuitMessage(69);  //exitCode -> wParam
		break;
	case WM_KEYDOWN:
		if (wParam == 'F')
		{
			SetWindowText(hwnd, "F Keydown");
		}
		break;
	case WM_KEYUP:
		if (wParam == 'F')
		{
			SetWindowText(hwnd, "F Keyup");
		}
		break;
	}

	return DefWindowProc(hwnd, msg, wParam, lParam);
}
int CALLBACK WinMain(
	_In_ HINSTANCE hInstance, //handle to instance
	_In_opt_ HINSTANCE hPrevInstance, //handle to previous instance
	_In_ LPSTR IpCmdLine, //long pointer to string
	_In_ int nCmdShow
)
{
	const auto pClassName = "hw3dbutts";

	// register window class
	WNDCLASSEX wc = { 0 };
	wc.cbSize = sizeof wc; //size of the struct
	wc.style = CS_OWNDC;
	wc.lpfnWndProc = WndProc; //process func
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0; // 0 in usual
	wc.hInstance = hInstance;
	wc.hIcon = nullptr; //handle to icon
	wc.hCursor = nullptr;
	wc.hbrBackground = nullptr; // handle to backgroung brush
	wc.lpszMenuName = nullptr;
	wc.lpszClassName = pClassName;
	wc.hIconSm = nullptr; //handle to small icon
	RegisterClassEx(&wc);

	//create window instance
	HWND hwnd = CreateWindowEx(
		0, pClassName,
		"Happy Hard Window",
		WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
		200, 200, 640, 480,
		nullptr, nullptr, hInstance, nullptr
	);

	//show the damn window
	ShowWindow(hwnd, SW_SHOW);

	//message pump
	MSG msg;
	BOOL gResult;
	while (gResult = GetMessage(&msg, nullptr, 0, 0) > 0)
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	if (gResult == -1)
	{
		return -1;
	}
	else
	{
		return (int)msg.wParam;
	}
}

标签:wParam,窗口,handle,CG,nullptr,消息,hwnd,msg,wc
From: https://blog.csdn.net/m0_73669127/article/details/142066033

相关文章

  • 消息推送第三方平台(个推)接入工具类
    个推官方文档:https://docs.getui.com/getui/server/rest_v2/push/首先申请个推官方账号,然后注册App获取AppID、AppKey、AppSecret、MasterSecret接入教程1、编写配置文件    修改.yml文件getui:AppID:OokKLlwRjU7tJMccVVra72AppKey:f8C6lK7OGu1115ckOfVxD8M......
  • 洛谷题单指南-常见优化技巧-P1886 滑动窗口 /【模板】单调队列
    原题链接:https://www.luogu.com.cn/problem/P1886题意解读:单调队列模版题。解题思路:采用双端队列维护单调的序列,单调队列三部曲:1、去头,当窗口内元素个数超过k,队头出队2、去尾,当要加入的元素会破坏单调性,队尾出队3、入队,将元素的下标存入队列每一次入队后,队头元素即为窗口最......
  • 淘宝返利微信机器人的消息处理与推送技术
    淘宝返利微信机器人的消息处理与推送技术大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来讨论如何实现淘宝返利微信机器人的消息处理与推送技术。微信机器人可以有效地提升用户体验,通过自动化的消息处理和推送,帮助用户获取最新的返利......
  • TCP滑动窗口(面试)
    TCP三次握手和四次挥手TCP滑动窗口是什么?如果传输的数据比较大,需要拆分为多个数据包进行发送。如果TCP协议需要收到确认应答后,才可以发送下一个数据包。这样的方法效率偏低为了避免这种情况,TCP使用了滑动窗口。滑动窗口用于控制发送方和接收方之间的数据传输。滑动窗......
  • LeetCode 239. 滑动窗口最大值(滑动窗口)
    题目:239.滑动窗口最大值思路:用一个双端队列来保存滑动窗口内的值按大到小排序,时间复杂度0(n)。细节看注释classSolution{public:vector<int>maxSlidingWindow(vector<int>&nums,intk){ //元素值是nums的下标,满足nums值按大到小排序deque<in......
  • OpenAI Gym ProcGen - Getting Action Meanings
    题意:OpenAIGymProcGen-获取动作含义问题背景:IntheOpenAIProcGengym,Iamnotgettingaway togetthemeaningsoftheactionvalues,Icanseethatthereare15actionsforthecoinrunenvironmentusing env.action_space.n.IhavetriedboththeG......
  • 算法题笔记-滑动窗口
    referdocleetcode对应题目:3.无重复字符的最长子串438.找到字符串中所有字母异位词解题模板://外层循环扩展右边界,内层循环扩展左边界for(intl=0,r=0;r<n;r++){ //当前考虑的元素 while(l<=r&&check()){//扩展左边界 //触发条件,改变滑动......
  • 代码随想录算法训练营,9月7日 | 150. 逆波兰表达式求值,239. 滑动窗口最大值,347.前 K 个
    150.逆波兰表达式求值题目链接:150.逆波兰表达式求值文档讲解︰代码随想录(programmercarl.com)视频讲解︰逆波兰表达式求值日期:2024-09-07想法:用栈解决,遇到运算符取前两个数字计算(表达式总是成立的,不用做额外的判定)Java代码如下:classSolution{publicintevalRPN(Stri......
  • 【Qt】窗口移动和大小改变事件
     窗口移动和大小改变事件moveEvent窗口移动时触发的事件resizeEvent窗口大小改变时触发的事件例子:测试移动窗口和改变窗口事件 代码展示#include"widget.h"#include"ui_widget.h"#include<QDebug>#include<QMoveEvent>#include<QResizeEvent>Widget::Wi......
  • 滑动窗口系列(背向双指针)9/8
    一、好子数组的最大分数给你一个整数数组 nums (下标从0开始)和一个整数 k 。一个子数组 (i,j) 的 分数 定义为 min(nums[i],nums[i+1],...,nums[j])*(j-i+1) 。一个 好 子数组的两个端点下标需要满足 i<=k<=j 。请你返回 好 子数组的最大可能......