吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5229|回复: 11
收起左侧

[C&C++ 转载] 一个有趣的小程序(点不到的按钮)

[复制链接]
低调的菜鸡 发表于 2019-12-5 11:41
很早之前在其他地方看到的,觉得特有意思,刚好自己在复习WINDOWS SDK,就手写了一下子

运行界面如下图,很简单的一个小程序,喜欢的就拿走吧,欢迎研究
QQ截图20191205113836.png

程序源码如下:
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <time.h>
#include <tchar.h>

HINSTANCE g_hInstance = 0;

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

int WINAPI WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPreInstance,
	LPSTR lpCmdLine,
	int nShowCmd
)
{
	g_hInstance = hInstance;

	srand((unsigned)time(NULL));

	//1.注册窗口类
	WNDCLASS wc = { 0 };
	wc.lpszClassName = _T("MyClass");
	wc.lpfnWndProc = WndProc;
	wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);

	RegisterClass(&wc);

	//2.创建窗口
	HWND hWnd = CreateWindow(
		wc.lpszClassName,
		_T("顽皮的按钮"),
		WS_OVERLAPPEDWINDOW,
		200, 100,
		640, 480,
		NULL,
		NULL,
		g_hInstance,
		0
	);

	//3.更新显示窗口
	UpdateWindow(hWnd);
	ShowWindow(hWnd, SW_SHOW);

	//4.消息循环
	MSG Msg = { 0 };
	while (GetMessage(&Msg, 0, 0, 0))
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return (int)Msg.lParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	static int nCnt = 0;
	switch (uMsg)
	{
	case WM_CREATE:
	{
		HWND hButton = CreateWindow(
			_T("button"),
			_T("来点我"),
			WS_CHILD | WS_VISIBLE,
			10, 10,
			80, 45,
			hWnd,
			HMENU(0x1000),
			g_hInstance,
			0
		);
	}break;
	case WM_COMMAND:
	{
		DWORD nCode = HIWORD(wParam);
		DWORD nId = LOWORD(wParam);
		if (nId == 0x1000 && nCode == BN_CLICKED)
		{
			if (nCnt == 10)
			{
				MessageBox(hWnd, _T("恭喜你点到了!"), _T("嘿嘿"), MB_OK);
				PostMessage(hWnd, WM_CLOSE, 0, 0);
			}
			HWND hButton1 = GetDlgItem(hWnd, 0x1000);
			int x = rand() % 520;
			int y = rand() % 390;
			MoveWindow(hButton1, x, y, 100, 50, true);
			UpdateWindow(hWnd);
			nCnt++;
		}
	}break;
	case WM_CLOSE:
		PostQuitMessage(0);
		break;
	}
	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}


编译环境:
vs2017 +win10

免费评分

参与人数 2吾爱币 +2 收起 理由
醉情的大叔 + 1 我很赞同!
sandgarden + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 低调的菜鸡 发表于 2019-12-5 12:53
附件忘了发了,不好意思

解压密码:www.52pojie.cn

001_code.zip

5.01 KB, 下载次数: 4, 下载积分: 吾爱币 -1 CB

ktzr 发表于 2020-3-25 22:00
把你复制的所有的内容拷贝到一个txt文件,删除项目里的,再把TXT的拷贝进去,重新构建就可应该能解决,
然后这个点不到的按钮至少有2种方法按到:
1按住右键移到按钮上不要移动位置,点击
2拖一个任意窗口(A)遮住按钮一半,从这个A移动鼠标到按钮上,一旦脱离窗口就不要动,直接点击
Vickers2PJ 发表于 2020-3-16 11:19
醉情的大叔 发表于 2020-3-7 00:59
学习了,为啥我运行报错啊,我是VS 2019...因为我缺少什么扩展吗

把_T("顽皮的按钮") 声明成变量再替换试下
sandgarden 发表于 2019-12-5 11:47
能发成品吗 老大
lep52 发表于 2019-12-5 12:14
我能点到,在1楼
a2204297 发表于 2019-12-5 12:58
这个要考验手速的?
 楼主| 低调的菜鸡 发表于 2019-12-5 12:59
a2204297 发表于 2019-12-5 12:58
这个要考验手速的?

应该不用。
cj13888 发表于 2019-12-5 14:38
学习借鉴一下,谢谢分享
醉情的大叔 发表于 2020-3-7 00:59
学习了,为啥我运行报错啊,我是VS 2019...因为我缺少什么扩展吗
XS.png
醉情的大叔 发表于 2020-3-24 22:08
Vickers2PJ 发表于 2020-3-16 11:19
把_T("顽皮的按钮") 声明成变量再替换试下

...不好意思,回复晚了,~~我不太会这个声明,百度了也,搞不明白.~~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 03:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表