• 大小: 19.86 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-10-16
  • 语言: 其他
  • 标签: DirectDraw  显存  写屏  

资源简介

通过 DirectDraw 直接修改显存数据

资源截图

代码片段和文件信息

// 1233.cpp : 定义应用程序的入口点。
//

#include “stdafx.h“
#include “1233.h“
#include 
#include 
#include “winsock2.h “
using namespace std;

#define MAX_LOADSTRING 100
LPDIRECTDRAW lpDD;

LPDIRECTDRAWSURFACE lpDDSPrimary; 

LPDIRECTDRAWSURFACE lpDDSBack; 


// 全局变量:
HINSTANCE hInst; // 当前实例
TCHAR sztitle[MAX_LOADSTRING]; // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名


int APIENTRY _tWinMain(HINSTANCE hInstance
                     HINSTANCE hPrevInstance
                     LPTSTR    lpCmdLine
                     int       nCmdShow)
{
DDSURFACEDESC t;
HWND desktop;
desktop = GetDesktopWindow();
HDC hDC = ::GetDC(desktop);

DDSURFACEDESC ddsd;
DDSCAPS ddscaps;
HRESULT ddrval;

BYTE *Bitmap;

ddrval = DirectDrawCreate( NULL &lpDD NULL );
if( ddrval != DD_OK )
{
printf(“error/n“);
}
ddrval = lpDD->SetCooperativeLevel(desktop DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
if( ddrval != DD_OK )
{
lpDD->Release();
printf(“error/n“);
}
ddrval = lpDD->SetDisplayMode( 1440 900 32);
if( ddrval != DD_OK )
{
lpDD->Release();
printf(“error/n“);
}
memset( &ddsd 0 sizeof(ddsd) );
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
ddrval = lpDD->CreateSurface( &ddsd &lpDDSPrimary NULL );
if( ddrval != DD_OK )
{
lpDD->Release();
printf(“error/n“);
}
ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
ddrval = lpDDSPrimary->GetAttachedSurface(&ddscaps &lpDDSBack);
if( ddrval != DD_OK )
{
lpDDSPrimary->Release();
lpDD->Release();
printf(“error/n“);
}
memset(&ddsd 0 sizeof(ddsd) );
ddsd.dwSize = sizeof( ddsd );
ddrval = lpDDSPrimary->Lock(NULL &ddsd DDLOCK_WAIT NULL);
Bitmap = (BYTE*)ddsd.lpSurface;
while(1)
{
int pos;
for (int y=0;y<480; y++)
{
pos=y*ddsd.lPitch;
for (int x=0; x<640; x++)
{
Bitmap[pos] =0; //R
pos++;
Bitmap[pos] =0; //G
pos++;
Bitmap[pos] =0; //B
pos++;
Bitmap[pos] = 100; //A
pos++;
}
}
lpDDSPrimary->Unlock(&ddsd);//unlock
}
//printf(“%d/n“ ddsd.dwWidth);
return 0;


}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2318  2011-12-30 17:30  dx直接写屏\1233.cpp

     文件         39  2011-12-29 14:23  dx直接写屏\1233.h

     文件      23558  2003-04-07 06:16  dx直接写屏\1233.ico

     文件       2803  2011-12-29 14:23  dx直接写屏\1233.rc

     文件        868  2011-12-29 14:44  dx直接写屏\1233.sln

    ..A..H.     11264  2011-12-30 17:31  dx直接写屏\1233.suo

    ..A..H.      8704  2011-12-29 14:33  dx直接写屏\1233.suo.old

     文件       5016  2011-12-29 14:47  dx直接写屏\1233.vcproj

     文件       1575  2011-12-29 14:23  dx直接写屏\ReadMe.txt

     文件        675  2011-12-29 14:23  dx直接写屏\Resource.h

     文件      23558  2003-04-07 06:16  dx直接写屏\small.ico

     文件        208  2011-12-29 14:23  dx直接写屏\stdafx.cpp

     文件        365  2011-12-29 14:23  dx直接写屏\stdafx.h

     目录          0  2012-01-06 15:04  dx直接写屏

----------- ---------  ---------- -----  ----

                80951                    14


评论

共有 条评论