c语言编程屏保动画实例,用C语言自己动手制作炫彩电脑屏保

编程思路

一、创建窗口

1.1 创建win32程序

1.2 windows窗口程序

1.3 调整窗口

1.3.1 没有菜单

注册窗口类函数中 Menuname 设置为NULL

1.3.2 没有标题栏 没有边框

WS_POPUP | WS_VISIBLE

1.3.3 窗口占全屏

WS_CXFULLSCREEN

WS_CYFULLSCREEN

窗口只有一层

二、窗口上播放视频

欢迎加入学习群【892643663】,获取全套免费C/C++企业实战级课程资源(素材+源码+视频)和编译大礼包

代码// 屏保.cpp : 定义应用程序的入口点。

//

#include "stdafx.h"

#include "屏保.h"

#include //sprintf

//mciSendString

#include //头文件

#pragma comment(lib,"winmm.lib")//动态库

#define MAX_LOADSTRING 100

// 全局变量:

HINSTANCE hInst;// 当前实例

TCHAR szTitle[MAX_LOADSTRING];// 标题栏文本

TCHAR szWindowClass[MAX_LOADSTRING];// 主窗口类名

// 此代码模块中包含的函数的前向声明:

ATOMMyRegisterClass(HINSTANCE hInstance);

BOOLInitInstance(HINSTANCE, int);

LRESULT CALLBACKWndProc(HWND, UINT, WPARAM, LPARAM);

INT_PTR CALLBACKAbout(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,

_In_opt_ HINSTANCE hPrevInstance,

_In_ LPTSTR    lpCmdLine,

_In_ int       nCmdShow)

{

UNREFERENCED_PARAMETER(hPrevInstance);

UNREFERENCED_PARAMETER(lpCmdLine);

// TODO:  在此放置代码。

MSG msg;

HACCEL hAccelTable;

// 初始化全局字符串

LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadString(hInstance, IDC_MY, szWindowClass, MAX_LOADSTRING);

MyRegisterClass(hInstance);

// 执行应用程序初始化:

if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}

hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY));

// 主消息循环:

while (GetMessage(&msg, NULL, 0, 0))

{

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

return (int) msg.wParam;

}

//

//  函数:  MyRegisterClass()

//

//  目的:  注册窗口类。

//

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style= CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc= WndProc;

wcex.cbClsExtra= 0;

wcex.cbWndExtra= 0;

wcex.hInstance= hInstance;

wcex.hIcon= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY));

wcex.hCursor= LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground= (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = NULL;// MAKEINTRESOURCE(IDC_MY);

wcex.lpszClassName= szWindowClass;

wcex.hIconSm= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

return RegisterClassEx(&wcex);

}

//授人以鱼不如授人以渔

//函数是学不完的

//六千万个  MSDN 3G

//

//   函数:  InitInstance(HINSTANCE, int)

//

//   目的:  保存实例句柄并创建主窗口

//

//   注释:

//

//        在此函数中,我们在全局变量中保存实例句柄并

//        创建和显示主程序窗口。

//

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hInst = hInstance; // 将实例句柄存储在全局变量中

//创建窗口

hWnd = CreateWindow(szWindowClass, NULL,

WS_POPUP | WS_VISIBLE,

CW_USEDEFAULT, CW_USEDEFAULT,

GetSystemMetrics(SM_CXFULLSCREEN),

GetSystemMetrics(SM_CYFULLSCREEN),

NULL, NULL, hInstance, NULL);

if (!hWnd)

{

return FALSE;

}

//条理

//播放视频

char buff[256] = { 0 };

//路径要放对  然后文件名中不能有空格

sprintf(buff, "open F:\\1.avi type MPEGVideo Alias m parent %u Style %u notify",hWnd,WS_CHILD);

mciSendString(buff, NULL, NULL, NULL);//打开视频文件

mciSendString("play m fullscreen repeat", NULL, NULL, NULL);//播放视频

ShowWindow(hWnd, nCmdShow);//显示窗口

UpdateWindow(hWnd);//刷新窗口

return TRUE;

}

//

//  函数:  WndProc(HWND, UINT, WPARAM, LPARAM)

//

//  目的:    处理主窗口的消息。

//

//  WM_COMMAND- 处理应用程序菜单

//  WM_PAINT- 绘制主窗口

//  WM_DESTROY- 发送退出消息并返回

//

//

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

{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

switch (message)

{

case WM_MOUSEMOVE://鼠标移动

case WM_LBUTTONDOWN://左键按下

MoveWindow(hWnd, 0, 0, 0, 0, true);//让父窗口大小为0

PostQuitMessage(0);//结束父窗口

mciSendString("close m", NULL, NULL, NULL);//关闭视频

break;

case WM_COMMAND:

wmId    = LOWORD(wParam);

wmEvent = HIWORD(wParam);

// 分析菜单选择:

switch (wmId)

{

case IDM_ABOUT:

DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;

case IDM_EXIT:

DestroyWindow(hWnd);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

// TODO:  在此添加任意绘图代码...

EndPaint(hWnd, &ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

// “关于”框的消息处理程序。

INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

UNREFERENCED_PARAMETER(lParam);

switch (message)

{

case WM_INITDIALOG:

return (INT_PTR)TRUE;

case WM_COMMAND:

if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)

{

EndDialog(hDlg, LOWORD(wParam));

return (INT_PTR)TRUE;

}

break;

}

return (INT_PTR)FALSE;

}

欢迎加入学习群【892643663】,获取全套免费C/C++企业实战级课程资源(素材+源码+视频)和编译大礼包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值