• 大小: 1.02MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-16
  • 语言: 其他
  • 标签: API  教程  

资源简介

本教程试图使用尽可能快和尽可能清晰的方法教你开 始 Win32 API 开发.它是以一个整体来组织的,所以在你 提问之前请从头到尾看一遍...你的大多数问题很可能 在文字中已被回答.每个章节以之前的章节为基础.我也 在附錄 A 中附上了一些常见的错误的解決方法.如果你问 一些在教程中已被回答的问题的话,看起来就有点不聪明 了.

资源截图

代码片段和文件信息

#include 
#include “resource.h“

const char g_szClassName[] = “myWindowClass“;
const int ID_TIMER = 1;

const int BALL_MOVE_DELTA = 2;

typedef struct _BALLINFO 
{
int width;
int height;
int x;
int y;

int dx;
int dy;
}BALLINFO;

BALLINFO g_ballInfo;
HBITMAP g_hbmBall = NULL;
HBITMAP g_hbmMask = NULL;

HBITMAP CreateBitmapMask(HBITMAP hbmColour COLORREF crTransparent)
{
HDC hdcMem hdcMem2;
HBITMAP hbmMask;
BITMAP bm;

Getobject(hbmColour sizeof(BITMAP) &bm);
hbmMask = CreateBitmap(bm.bmWidth bm.bmHeight 1 1 NULL);

hdcMem = CreateCompatibleDC(0);
hdcMem2 = CreateCompatibleDC(0);

Selectobject(hdcMem hbmColour);
Selectobject(hdcMem2 hbmMask);

SetBkColor(hdcMem crTransparent);

BitBlt(hdcMem2 0 0 bm.bmWidth bm.bmHeight hdcMem 0 0 SRCCOPY);

BitBlt(hdcMem 0 0 bm.bmWidth bm.bmHeight hdcMem2 0 0 SRCINVERT);

DeleteDC(hdcMem);
DeleteDC(hdcMem2);

return hbmMask;
}

void DrawBall(HDC hdc RECT* prc)
{
HDC hdcBuffer = CreateCompatibleDC(hdc);
HBITMAP hbmBuffer = CreateCompatibleBitmap(hdc prc->right prc->bottom);
HBITMAP hbmOldBuffer = (HBITMAP)Selectobject(hdcBuffer hbmBuffer);

HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hbmOld = (HBITMAP)Selectobject(hdcMem g_hbmMask);

FillRect(hdcBuffer prc (HBRUSH)GetStockobject(WHITE_BRUSH));

BitBlt(hdcBuffer g_ballInfo.x g_ballInfo.y g_ballInfo.width g_ballInfo.height hdcMem 0 0 SRCAND);

Selectobject(hdcMem g_hbmBall);
BitBlt(hdcBuffer g_ballInfo.x g_ballInfo.y g_ballInfo.width g_ballInfo.height hdcMem 0 0 SRCPAINT);

BitBlt(hdc 0 0 prc->right prc->bottom hdcBuffer 0 0 SRCCOPY);

Selectobject(hdcMem hbmOld);
DeleteDC(hdcMem);

Selectobject(hdcBuffer hbmOldBuffer);
DeleteDC(hdcBuffer);
Deleteobject(hbmBuffer);
}

void UpdateBall(RECT* prc)
{
g_ballInfo.x += g_ballInfo.dx;
g_ballInfo.y += g_ballInfo.dy;

if(g_ballInfo.x < 0)
{
g_ballInfo.x = 0;
g_ballInfo.dx = BALL_MOVE_DELTA;
}
else if(g_ballInfo.x + g_ballInfo.width > prc->right)
{
g_ballInfo.x = prc->right - g_ballInfo.width;
g_ballInfo.dx = -BALL_MOVE_DELTA;
}

if(g_ballInfo.y < 0)
{
g_ballInfo.y = 0;
g_ballInfo.dy = BALL_MOVE_DELTA;
}
else if(g_ballInfo.y + g_ballInfo.height > prc->bottom)
{
g_ballInfo.y = prc->bottom - g_ballInfo.height;
g_ballInfo.dy = -BALL_MOVE_DELTA;
}
}

LRESULT CALLBACK WndProc(HWND hwnd UINT msg WPARAM wParam LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
UINT ret;
BITMAP bm;

g_hbmBall = LoadBitmap(GetModuleHandle(NULL) MAKEINTRESOURCE(IDB_BALL));
if(g_hbmBall == NULL)
MessageBox(hwnd “Could not load IDB_BALL!“ “Error“ MB_OK | MB_ICONEXCLAMATION);

g_hbmMask = CreateBitmapMask(g_hbmBall RGB(0 0 0));
if(g_hbmMask == NULL)
MessageBox(hwnd “Could not create mask!“ “Error“ MB_OK | MB_ICONEXCLAMATION);

Getobject(g_hbmBall sizeof(b

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2008-07-18 21:24  source\anim_one\
     文件        5287  2008-07-18 21:24  source\anim_one\anim_one.c
     文件        1748  2008-07-18 21:24  source\anim_one\anim_one.rc
     文件        6015  2008-07-18 21:24  source\anim_one\anim_one.vcproj
     文件         630  2008-07-18 21:24  source\anim_one\ball.bmp
     目录           0  2008-07-18 21:24  source\anim_one\Release\
     文件       41472  2008-07-18 21:24  source\anim_one\Release\anim_one.exe
     文件         457  2008-07-18 21:24  source\anim_one\resource.h
     目录           0  2008-07-18 21:24  source\app_four\
     文件       13196  2008-07-18 21:24  source\app_four\app_four.c
     文件        2581  2008-07-18 21:24  source\app_four\app_four.rc
     文件        6089  2008-07-18 21:24  source\app_four\app_four.vcproj
     目录           0  2008-07-18 21:24  source\app_four\Release\
     文件       43008  2008-07-18 21:24  source\app_four\Release\app_four.exe
     文件         974  2008-07-18 21:24  source\app_four\resource.h
     目录           0  2008-07-18 21:24  source\app_one\
     文件        2400  2008-07-18 21:24  source\app_one\app_one.c
     文件        5469  2008-07-18 21:24  source\app_one\app_one.vcproj
     目录           0  2008-07-18 21:24  source\app_one\Release\
     文件       38912  2008-07-18 21:24  source\app_one\Release\app_one.exe
     目录           0  2008-07-18 21:24  source\app_three\
     文件        8344  2008-07-18 21:24  source\app_three\app_three.c
     文件        2061  2008-07-18 21:24  source\app_three\app_three.rc
     文件        6105  2008-07-18 21:24  source\app_three\app_three.vcproj
     目录           0  2008-07-18 21:24  source\app_three\Release\
     文件       40960  2008-07-18 21:24  source\app_three\Release\app_three.exe
     文件         644  2008-07-18 21:24  source\app_three\resource.h
     目录           0  2008-07-18 21:24  source\app_two\
     文件        5526  2008-07-18 21:24  source\app_two\app_two.c
     文件        2061  2008-07-18 21:24  source\app_two\app_two.rc
     文件        5943  2008-07-18 21:24  source\app_two\app_two.vcproj
............此处省略85个文件信息

评论

共有 条评论