请那位大侠,发个ddraw的例子给我。谢谢了。 我说的是那个,在河边有只鸟飞的。还有个东西升上来,然后爆炸的那个[email protected]再次表示感谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //*******************************************************************// 工程:DirectX// 文件:main.cpp// 内容:创建一个DirectDraw应用程序,显示文字//*******************************************************************#include <windows.h>#include <windowsx.h>#include <ddraw.h>LPDIRECTDRAW lpDD; // DirectDraw对象LPDIRECTDRAWSURFACE lpDDSPrimary; // DirectDraw主页面char szMsg1[] = "Hello World, I am DirectDraw boy !";char szMsg2[] = "按 ESC 退出";//函数声明LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );BOOL InitDDraw( void );void FreeDDraw( void );//*******************************************************************//函数:WinMain()//功能:Win32应用程序入口函数。进行初始化工作,处理消息循环//*******************************************************************int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ MSG msg; //初始化主窗口 if ( !InitWindow( hInstance, nCmdShow ) ) return FALSE; //初始化DirectDraw环境,并实现DirectDraw功能 if ( !InitDDraw()) { MessageBox(GetActiveWindow(), "初始化DirectDraw过程中出错!", "Error", MB_OK ); FreeDDraw(); DestroyWindow(GetActiveWindow()); return FALSE; } //进入消息循环 while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}//******************************************************************//函数:InitWindow()//功能:创建主窗口。//******************************************************************static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow ){ HWND hwnd; //窗口句柄 WNDCLASS wc; //窗口类结构 //填充窗口类结构 wc.style = 0; wc.lpfnWndProc = WinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = GetStockObject(BLACK_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "dxHello"; //注册窗口类 RegisterClass( &wc ); //创建主窗口 hwnd = CreateWindowEx( 0, "dxHello", "", WS_POPUP, 0, 0, GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ), NULL, NULL, hInstance, NULL ); if( !hwnd ) return FALSE; //显示并更新窗口 ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); return TRUE; } //******************************************************************//函数:WinProc()//功能:处理主窗口消息//******************************************************************LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ){ switch( message ) { case WM_KEYDOWN://击键消息 switch( wParam ) { case VK_ESCAPE: PostMessage(hWnd, WM_CLOSE, 0, 0); break; } break; case WM_DESTROY://退出消息 FreeDDraw(); PostQuitMessage( 0 ); break; } //调用缺省消息处理过程 return DefWindowProc(hWnd, message, wParam, lParam);}//******************************************************************//函数:InitDDraw()//功能:初始化DirectDraw环境并实现其功能。包括:创建DirectDraw对象,// 设置显示模式,创建主页面,输出文字。//******************************************************************BOOL InitDDraw(void){ DDSURFACEDESC ddsd; //页面描述 HDC hdc; //设备环境句柄 //创建DirectCraw对象 if ( DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK ) return FALSE; // 取得独占和全屏模式 if ( lpDD->SetCooperativeLevel( GetActiveWindow(), DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ) != DD_OK) return FALSE; //设置显示模式 if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK) return FALSE; //填充主页面信息 ddsd.dwSize = sizeof( ddsd ); ddsd.dwFlags = DDSD_CAPS; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; //创建主页面对象 if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK) return FALSE; //输出文字 if ( lpDDSPrimary->GetDC(&hdc) != DD_OK) return FALSE; SetBkColor( hdc, RGB( 0, 0, 255 ) ); SetTextColor( hdc, RGB( 255, 255, 0 ) ); TextOut( hdc, 220, 200, szMsg1, lstrlen(szMsg1)); TextOut( hdc, 280, 240, szMsg2, lstrlen(szMsg2)); lpDDSPrimary->ReleaseDC(hdc); return TRUE;} //******************************************************************//函数:FreeDDraw()//功能:释放所有的DirectDraw对象。//******************************************************************void FreeDDraw( void ){ if( lpDD != NULL ) { if( lpDDSPrimary != NULL ) { lpDDSPrimary->Release(); lpDDSPrimary = NULL; } lpDD->Release(); lpDD = NULL; }} 楼上的大哥,谢谢你。。不过这个不是我想要的吧。这个程序就是输出几个文字。我要鸟飞的目的就是想要个换页的呀。flip的。。还是谢谢你。一定给你分 换页的也很简单啊!我想你一定安装了DirectX SDK了,你看看里面的例子不就行了?写的很经典!!! 建议下载DX8 SDK 例子很多。http://hnhttp.skycn.net/down/DX81SDK_FULL.exe(169705 KB) to ttzzgg_80713(别欺侮我):我很久以前装过DirectX SDK,现在只保留了两个例子,你先看看吧。我觉得你还是去买一张D版碟吧,这样最方便。 如何让ListControl控件的每一行都是一个树结构? WIN下的对话框大小和资源视图下看到的不一样? vc中如何实现计划任务 使用自定义的消息,进ClassWizard页面时错误!!! 复合文档大小控制问题 vector 和 CArray类的问题 MSDN怎么用呀? 返回值BOOL和UNIT MFC关于OPENCV视频读取的问题,请高手解答! 如何使CEdit类响应WM_KEYDOWN消息? 数据表如何设计 关于数据库的问题
// 工程:DirectX
// 文件:main.cpp
// 内容:创建一个DirectDraw应用程序,显示文字
//*******************************************************************
#include <windows.h>
#include <windowsx.h>
#include <ddraw.h>LPDIRECTDRAW lpDD; // DirectDraw对象
LPDIRECTDRAWSURFACE lpDDSPrimary; // DirectDraw主页面
char szMsg1[] = "Hello World, I am DirectDraw boy !";
char szMsg2[] = "按 ESC 退出";
//函数声明
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
BOOL InitDDraw( void );
void FreeDDraw( void );
//*******************************************************************
//函数:WinMain()
//功能:Win32应用程序入口函数。进行初始化工作,处理消息循环
//*******************************************************************
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg; //初始化主窗口
if ( !InitWindow( hInstance, nCmdShow ) )
return FALSE; //初始化DirectDraw环境,并实现DirectDraw功能
if ( !InitDDraw())
{
MessageBox(GetActiveWindow(), "初始化DirectDraw过程中出错!", "Error", MB_OK );
FreeDDraw();
DestroyWindow(GetActiveWindow());
return FALSE;
}
//进入消息循环
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}//******************************************************************
//函数:InitWindow()
//功能:创建主窗口。
//******************************************************************
static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{
HWND hwnd; //窗口句柄
WNDCLASS wc; //窗口类结构
//填充窗口类结构
wc.style = 0;
wc.lpfnWndProc = WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "dxHello"; //注册窗口类
RegisterClass( &wc );
//创建主窗口
hwnd = CreateWindowEx(
0,
"dxHello",
"",
WS_POPUP,
0, 0,
GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ),
NULL,
NULL,
hInstance,
NULL );
if( !hwnd ) return FALSE;
//显示并更新窗口
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
return TRUE;
}
//******************************************************************
//函数:WinProc()
//功能:处理主窗口消息
//******************************************************************
LRESULT CALLBACK WinProc( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam )
{
switch( message )
{
case WM_KEYDOWN://击键消息
switch( wParam )
{
case VK_ESCAPE:
PostMessage(hWnd, WM_CLOSE, 0, 0);
break;
}
break;
case WM_DESTROY://退出消息
FreeDDraw();
PostQuitMessage( 0 );
break;
} //调用缺省消息处理过程
return DefWindowProc(hWnd, message, wParam, lParam);
}//******************************************************************
//函数:InitDDraw()
//功能:初始化DirectDraw环境并实现其功能。包括:创建DirectDraw对象,
// 设置显示模式,创建主页面,输出文字。
//******************************************************************
BOOL InitDDraw(void)
{
DDSURFACEDESC ddsd; //页面描述
HDC hdc; //设备环境句柄 //创建DirectCraw对象
if ( DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK ) return FALSE; // 取得独占和全屏模式
if ( lpDD->SetCooperativeLevel( GetActiveWindow(),
DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ) != DD_OK)
return FALSE;
//设置显示模式
if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK) return FALSE;
//填充主页面信息
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
//创建主页面对象
if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK)
return FALSE;
//输出文字
if ( lpDDSPrimary->GetDC(&hdc) != DD_OK) return FALSE;
SetBkColor( hdc, RGB( 0, 0, 255 ) );
SetTextColor( hdc, RGB( 255, 255, 0 ) );
TextOut( hdc, 220, 200, szMsg1, lstrlen(szMsg1));
TextOut( hdc, 280, 240, szMsg2, lstrlen(szMsg2));
lpDDSPrimary->ReleaseDC(hdc);
return TRUE;
} //******************************************************************
//函数:FreeDDraw()
//功能:释放所有的DirectDraw对象。
//******************************************************************
void FreeDDraw( void )
{
if( lpDD != NULL )
{
if( lpDDSPrimary != NULL )
{
lpDDSPrimary->Release();
lpDDSPrimary = NULL;
}
lpDD->Release();
lpDD = NULL;
}
}
http://hnhttp.skycn.net/down/DX81SDK_FULL.exe(169705 KB)