[Windows]Windows窗口实现

本文提供了一个使用Windows API创建窗口并播放音频文件的示例程序。该程序通过注册窗口类、创建窗口实例、处理消息循环来展示基本的Windows应用程序结构,并演示了如何使用PlaySound函数播放音频。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <Windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB") //也可以在链接器里设置
                                  //在“项目->属性->配置属性->连接器->输入->附加依赖项”里填写“WINMM.LIB”

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

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szAppName[] = TEXT("HelloWin");
	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.lpszClassName  = szAppName;
	wndclass.lpszMenuName   = NULL;

	if (!RegisterClass(&wndclass))
	{
		MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
		return 0;
	}

	hwnd = CreateWindow(szAppName,                        //window class name
		                TEXT("The Hello Program"),        //window caption
		                WS_OVERLAPPEDWINDOW,              //window style
		                CW_USEDEFAULT,                    //initial x position
		                CW_USEDEFAULT,                    //initial y position
		                CW_USEDEFAULT,                    //initial x size
		                CW_USEDEFAULT,                    //initial y size
		                NULL,                             //parent window handle
		                NULL,                             //window menu handle
		                hInstance,                        //program instance handle
		                NULL);                            //creation parameters
	
	ShowWindow(hwnd, iCmdShow);
	UpdateWindow(hwnd);

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

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

	switch (message)
	{
	case WM_CREATE:
		PlaySound(TEXT("D:\\Windows Programming\\Only My Railgun.wav"), NULL, SND_FILENAME | SND_ASYNC);
		return 0;
	
	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);

		GetClientRect(hwnd, &rect);

		DrawText(hdc, TEXT("HELLO, WINDOWS 8.1!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

		EndPaint(hwnd, &ps);
		return 0;
	
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	
	default:
		break;
	}
	return DefWindowProc(hwnd, message, wParam, lParam);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值