桌面下雪小程序-这个程序错在哪?求高手回答

问题描述

这个程序错在哪?求高手回答

#include
#include
#include
#include
#include "Snow.h"

/* UpdateLayeredWindow declaration*/
typedef BOOL (WINAPI lpfnUpdateLayeredWindow)(
HWND, HDC, POINT
, SIZE*, HDC, POINT*,COLORREF, BLENDFUNCTION*, DWORD);

/* global variables /
ULONG_PTR gidplusStartupToken;
lpfnUpdateLayeredWindow lpMyFunc;
const TCHAR szAppName[] = _T("DeskSnow");
const int iScreenWidth = GetSystemMetrics(SM_CXSCREEN);
const int iScreenHeight = GetSystemMetrics(SM_CYSCREEN);
std::vector<CSnow
> vctSnow; /* vector container holds images */

/* global function */
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM wPara, LPARAM lPara);
void CreateSnow();

void CreateSnow(HDC hdc)
{
//std::vector::iterator iter;
std::vector::iterator iter;
for(iter=vctSnow.begin(); iter!=vctSnow.end(); iter++)
{
if((*iter)->ReachBoundrary())
{
delete (*iter);
vctSnow.erase(iter);

        CSnow::m_bFirstTime = false;
        CSnow *pSnow = new CSnow;
        vctSnow.push_back(pSnow);
        break;
    }
}

for(iter=vctSnow.begin(); iter!=vctSnow.end(); ++iter)
    (*iter)->DrawSnow(hdc);

}

void Display(HWND hwnd, float timeDela)
{
HDC hdc = GetDC(hwnd);
HDC hMemDC = CreateCompatibleDC(hdc);
HBITMAP hBitmap = CreateCompatibleBitmap(hdc, iScreenWidth, iScreenHeight);
SelectObject(hMemDC, hBitmap);

CreateSnow(hMemDC);

HDC hScreenDC = GetDC(NULL);
POINT ptSrc = {0, 0};
SIZE size = {iScreenWidth, iScreenHeight};

BLENDFUNCTION blend;
blend.AlphaFormat = AC_SRC_ALPHA;
blend.BlendFlags = 0;
blend.BlendOp = AC_SRC_OVER;
blend.SourceConstantAlpha = 255;

lpMyFunc(hwnd, hScreenDC, &ptSrc, &size, hMemDC, &ptSrc, 0, &blend, 2);

DeleteDC(hMemDC);
DeleteObject(hBitmap);

}

int WINAPI WinMain( In HINSTANCE hInstance,
In_opt HINSTANCE hPrevInstance,
In LPSTR lpCmdLine,
In int nShowCmd )
{

Gdiplus::GdiplusStartupInput gdiInput;
Gdiplus::GdiplusStartup(&gidplusStartupToken, &gdiInput, NULL);

MSG msg;
WNDCLASSEX wex;
HWND hWnd;

wex.cbClsExtra = 0;
wex.cbSize = sizeof(WNDCLASSEX);
wex.cbWndExtra = 0;
wex.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
wex.hCursor = LoadCursor(NULL, IDC_APPSTARTING);
wex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wex.hInstance = hInstance;
wex.lpfnWndProc = WndProc;
wex.lpszClassName = szAppName;
wex.lpszMenuName = NULL;
wex.style = CS_DBLCLKS;

RegisterClassEx(&wex);

/* Create a window, the size is the same as screen's */
hWnd = CreateWindowEx(WS_EX_LAYERED|WS_EX_TOPMOST/*|WS_EX_TOOLWINDOW*/,szAppName,
    szAppName, 0, 0, 0, iScreenWidth, iScreenHeight, NULL, NULL, hInstance, NULL);

ShowWindow(hWnd, nShowCmd);
UpdateWindow(hWnd);

static float dwLastTick = (float)timeGetTime();

ZeroMemory(&msg, sizeof(msg));
while(msg.message != WM_QUIT)
{
    if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }else{
     float dwCurrTick = (float)timeGetTime();
     float timeDela = dwCurrTick - dwLastTick;

        Display(hWnd, timeDela);
         dwLastTick = dwCurrTick;
     }
}

Gdiplus::GdiplusShutdown(gidplusStartupToken);
return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wPara, LPARAM lPara)
{
HINSTANCE hUser32;

switch (msg)
{
case WM_CREATE:
    /* Load function*/
    hUser32 = LoadLibrary(_T("User32.dll"));
    lpMyFunc = (lpfnUpdateLayeredWindow)GetProcAddress(hUser32, "UpdateLayeredWindow");
    FreeLibrary(hUser32);

    for(int i=0; i<50; ++i)
    {
        CSnow *pSnow = new CSnow;
        vctSnow.push_back(pSnow);
    }

    PlaySound(_T("Music\贝多芬 - 致爱丽丝.WAV"), NULL, SND_ASYNC | SND_FILENAME|SND_SYSTEM);
    break;
case WM_DESTROY:
    PostQuitMessage(0);
    break;
default:
    break;
}

return DefWindowProc(hwnd, msg, wPara, lPara);

}

时间: 2024-10-31 22:07:30

桌面下雪小程序-这个程序错在哪?求高手回答的相关文章

java-openmeetings无法进入登录页面 页面报错Internal error 求高手解答

问题描述 openmeetings无法进入登录页面 页面报错Internal error 求高手解答 用的是apache-openmeetings-3.0.7 连接的是oracle 安装完成后访问一切正常,但是关掉red5 再次启动后 页面无法进入 页面报错:Internal error 后台报错信息为: ERROR 12-30 14:22:42.142 DefaultExceptionMapper.java 255077 170 org.apache.wicke t.DefaultExcept

桌面下雪小程序-求大神指教这个程序错在哪

问题描述 求大神指教这个程序错在哪 [cpp] view plaincopyprint? //#include "stdafx.h" #include #include #include //#pragma comment(/Entry:WinMain) #define ID_TIMER 1 #define SNOWNUM 500 // 雪花数量 #define CONTRAST 50 // 对比度 #define YSTART 5 // 用于确定雪花初始时的y坐标 #define S

程序员-Android的初学者,求高手帮忙解决问题

问题描述 Android的初学者,求高手帮忙解决问题 求各位大神帮帮忙: 我是一个刚踏进工程师行业的程序员,以前从没做过实战项目.现在刚进一家企业,是那种很小的公司.老板要做一个app,可什么都没有.就我一个人,我现在很迷茫,不知道怎么开始. 数据库.服务端.app端.要以那为切入口开始做起.求各位大神简要说明一下流程. 万分感谢 解决方案 首先我也是新手,只是给一些简单建议 第一,了解需求 第二,建立服务端框架 spring + spring mvc + mybaits 上手挺容易的. 第三,

窗体程序没错但是没反应,求高手指教

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespaceStudentsGradesManagementSystem{publicpartialclassStudentIn

javascript-JS简单的小程序,看看错在哪里

问题描述 JS简单的小程序,看看错在哪里 <script type="text/javascript" src="jq.js"></script> <script type="text/javascript"> function a(){ $.post("http://www.gdlottery.cn/ref_cont.jspx" ,function(data)//这里只能用POST,不然会

c++函数调试小程序-C++小程序调试,错题原因

问题描述 C++小程序调试,错题原因 讲的详细点,我是大一新生,小白,尽可能把调试好的代码发一遍 解决方案 小童鞋,字太小了,本想帮你,看了实在累眼睛,看不清楚啊.

微信小程序 HTTPS报错整理常见问题及解决方案_JavaScript

微信小程序 HTTPS报错常见问题及解决方案 微信小程序开放公测已经一个多月了,因官方需求文档要求后台使用HTTPS请求进行网络通信,不满足条件的域名和协议无法请求.越来越多的开发者纷纷使用SSL证书实践微信小程序的应用情况,但仍然会碰到各类问题.本文列举了SSL证书常见的报错和解决办法,供开发者参考. 常见问题一 在微信小程序内测的过程中,几乎每个开发者们在实践的过程中都遇到了下图的报错: 原因及解决办法: 这是因为wx.request 发起的是 https 请求,微信小程序读取大部分是请求A

c语言-请问这个c程序哪里有错,执行有误

问题描述 请问这个c程序哪里有错,执行有误 #include <stdio.h> #define n 2 struct student {int number; char name[10]; int score; }stu[n]; void save() {FILE *fp; int i; if((fp=fopen("file1.dat","w"))==NULL) {printf("error"); return; } for(i=0

VC++的win32小程序内存泄漏,求高手解答

问题描述 VC++的win32小程序内存泄漏,求高手解答 做的一个简单的交通模拟小程序,用三个定时器分别产生 汽车处理消息,红绿灯更换消息和汽车随机产生消息.但是最后程序内存越跑越大.求高手解答.http://download.csdn.net/detail/hdwbdbsm/6724747这个是程序的下载地址,求高手.