基于WinAPI的窗口示例

实现的主要功能如下:

  1. 程序默认图标为?,默认光标为左右箭头,在指定位置输出 文字消息
  2. 单击鼠标左键时,弹出对应点的位置坐标(注意坐标转换)
  3. 单击键盘的上下左右键时,弹出对应的对话框(键盘消息的处理方式)
#include "windows.h"
#include "stdio.h"

LRESULT CALLBACK DealMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT pen;
	HDC dc;
	TCHAR *PP = L"你好,Windows";
	switch (uMsg)
	{
		//鼠标左键按下
	case WM_LBUTTONDOWN:
		{
			TCHAR buf[1024] = {0};
			int x = 10, y = 10;
			POINT pt;//CPoint pt;
			GetCursorPos(&pt);//该函数检取光标的位置,以屏幕坐标表示, 如果为了与TextOut 相比的话,则需要将屏幕坐标转换为客户区坐标
			ScreenToClient(hWnd, &pt);//的将屏幕坐标转换为客户区坐标//TextOut中就是客户区坐标
			x = pt.x;
			y = pt.y;
			wsprintf(buf,TEXT("x = %d , y = %d"),x,y);
			MessageBox(hWnd,buf,TEXT("坐标"),MB_OK);
		}
		break;
		//关闭程序
	case WM_DESTROY://WM_QUIT//只有发这个命令时,关闭调试程序时,代码上的调试才会结束 
		PostQuitMessage(2);
		break;
	case WM_PAINT://输出文字
		{
			dc = BeginPaint(hWnd,&pen);
			TextOutW(dc,20,20,PP,wcslen(PP));//客户区坐标
			EndPaint(hWnd,&pen);
			break;
		}
	case WM_KEYDOWN://当有键盘输入事件时,会产生 WM_KEYDOWN 消息
		{
			switch(wParam)//虚拟键
			{
				case VK_LEFT:
					MessageBox(hWnd,TEXT("向左"),TEXT("坐标"),MB_OK);
					break;
				case VK_UP:
					MessageBox(hWnd,TEXT("向上"),TEXT("坐标"),MB_OK);
					break;
				case VK_RIGHT:
					MessageBox(hWnd,TEXT("向右"),TEXT("坐标"),MB_OK);
					break;
				case VK_DOWN:
					MessageBox(hWnd,TEXT("向下"),TEXT("坐标"),MB_OK);
					break;
				case VK_RETURN:
					MessageBox(hWnd,TEXT("键盘Enter"),TEXT("坐标"),MB_OK);
					break;
			}
			break;
		}		
	default:
		return DefWindowProc(hWnd, uMsg,wParam, lParam);
	}
	return 0;
}

int WINAPI WinMain(
	HINSTANCE hInstance,
	 HINSTANCE hPrevInstance,
	LPSTR lpCmdLine,
	int nShowCmd)
{
	HWND hWnd;
	MSG msg;
	WNDCLASS cs;
	DWORD dWord;
	cs.cbClsExtra       = 0;
	cs.cbWndExtra       = 0;//这个写错了,写成了第一个参数,导致注册类不成功!!!!!
	cs.hbrBackground    = (HBRUSH)GetStockObject(WHITE_BRUSH);//画刷北京BLACK_PEN
	cs.hCursor          = LoadCursor(NULL,IDC_SIZEWE);
	cs.hIcon            = LoadIcon(NULL,IDI_QUESTION);
	cs.hInstance        = hInstance;
	cs.lpfnWndProc      = DealMessage;
	cs.lpszClassName    = TEXT("ABC");
	cs.lpszMenuName     = NULL;
	cs.style            = nShowCmd;

	if (!RegisterClass(&cs))//这里可以查看是否注册成功//返回非零是成功,返回零是失败
	{
		MessageBox(NULL,TEXT("注册类失败,请检查参数是否成功设置"),TEXT("坐标"),MB_OK);
	}

	hWnd = CreateWindow(TEXT("ABC"), TEXT("hello,windows"), WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, CW_USEDEFAULT,CW_USEDEFAULT
		,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL);//CreateWindow中窗口类与 WNDCLASS中窗口类名必须一样才可以,否则也是运行不了

	if (!hWnd)
	{
		return 0;
	}

	MoveWindow(hWnd,30,30,580,480,TRUE);//相对整个桌面屏幕的左上角。。。测试过

	ShowWindow(hWnd,SW_NORMAL);

	UpdateWindow(hWnd);

	while (GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	
	return 1;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WinAPIWindows应用程序编程接口)是微软面向Windows操作系统的一套应用程序编程接口。WinAPI手册中文版是指将WinAPI的相关文档和指南翻译成中文的版本。这个手册汇集了关于WinAPI的详细说明、函数和结构的定义、参数的介绍以及使用示例等内容。 WinAPI手册中文版对于开发者和系统工程师来说是非常重要的工具。它提供了详尽的参考,帮助开发者了解和熟练掌握WinAPI编程的技术细节。通过这个手册,开发者可以学习如何使用WinAPI编写程序,了解如何调用各种功能和服务。 WinAPI手册中文版涵盖了各种主题,如窗口管理、图形编程、多媒体处理、网络通信、系统服务等。除了提供具体的函数和接口的描述,该手册还解释了各种编程概念和设计模式,帮助开发者更好地理解和应用WinAPIWinAPI手册中文版的结构清晰,功能强大。开发者可以根据自己的需求快速地找到所需的信息,并参考相应的示例代码。在遇到问题时,开发者可以通过查询手册来解决问题,提高开发效率。 总而言之,WinAPI手册中文版是一本综合性的指南,为开发者提供了丰富的WinAPI编程知识,并帮助他们在Windows平台上开发高质量的应用程序。无论是初学者还是有经验的开发者,都可以通过这个手册快速入门并提升他们的编程技能。 ### 回答2: WinAPI是一种基于微软 Windows操作系统的应用程序编程接口,提供了许多可以用来创建Windows应用程序的函数、类和结构体。WinAPI手册中文版是对WinAPI的详细说明和参考的文档,以帮助程序员在Windows平台上开发应用程序。 WinAPI手册中文版通常包含以下内容: 1. 概述:介绍WinAPI的基本概念、架构和特性,以及与其他编程接口的比较。 2. 函数和类库:列出和描述了所有可用的WinAPI函数和类库,每一个都会详细说明其功能、参数和返回值。这些函数和类库包括了窗口管理、消息处理、图形和绘图、文件和IO操作、网络管理、系统信息等等。 3. 数据结构和常量:列出和描述了所有WinAPI使用的数据结构和常量,用于存储和传递各种参数和信息。 4. 示例和代码:包含一些实用的示例和代码片段,以展示如何使用WinAPI来完成特定的任务。这些示例通常涵盖窗口的创建和管理、消息的处理和响应、图形和显示的控制等等。 5. 组件和扩展:介绍一些基于WinAPI的组件和扩展,如DirectX用于游戏开发、Windows Media Player用于媒体播放等。 WinAPI手册中文版对于开发Windows应用程序的程序员来说是非常重要的参考资料。它提供了全面和详细的文档,以帮助程序员理解和使用各种WinAPI函数和类库,实现各种功能。同时,手册中的示例和代码也可以作为学习和实践的参考,帮助程序员更好地掌握WinAPI的使用技巧。无论是初学者还是有经验的开发者,都可以从WinAPI手册中文版中获得帮助,提升在Windows平台上的应用程序开发能力。 ### 回答3: WinAPIWindows Application Programming Interface)是微软公司为Windows操作系统开发的一套应用程序编程接口。WinAPI手册中文版是一份详细的Windows编程参考手册,提供了各种Windows API函数的详细说明和使用方法,以供开发者进行Windows应用程序的开发。 这本手册主要分为几个章节,包括基本概念介绍、窗口、消息处理、图形绘制、文件和文件系统、网络通信等内容。每个章节都会介绍相应的API函数,并对其参数、返回值和用法进行详细解释。 对于开发者而言,WinAPI手册中文版是一份宝贵的参考资料。通过学习和熟悉这本手册,开发者可以深入了解Windows操作系统提供的各种功能和特性,从而能够更加高效地开发各种类型的Windows应用程序。 WinAPI手册中文版的编写是经过精心整理和汇总的,旨在帮助开发者理解和使用Windows API函数。手册中的每个API函数都有详细的说明文档,包括函数的功能、参数、返回值和使用示例,还提供了一些注意事项和实用技巧,帮助开发者更好地运用这些函数来实现自己的应用程序需求。 总之,WinAPI手册中文版是一份对于开发者来说非常重要的参考资料,它提供了Windows API函数的详细说明和使用方法,可以帮助开发者更加高效地开发各种类型的Windows应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值