- 浏览: 2031247 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
#include <windows.h> #include <windowsx.h> #include <ddraw.h> #include <atlstr.h> LPDIRECTDRAW lpDD = NULL;//direct draw object LPDIRECTDRAWSURFACE lpDDSPrimary = NULL;//direct draw main page char* lpszMsg1 = "Hello, andylin! I love my baby so much!"; char* lpszMsg2 = "press esc exit"; LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL InitWindow(HINSTANCE hInst, int nCmdShow); BOOL InitDDraw(); void FreeDDraw(); void PrintMsg(HWND hWnd = NULL, LPCTSTR lpszInfo = NULL, LPCTSTR lpszTitle = NULL, int nStyle = MB_OK) { CString strInfo = lpszInfo; CString strTitle = lpszTitle; if (NULL == lpszInfo) { strInfo = "test info"; } if (NULL == lpszTitle) { strTitle = "my direct test"; } MessageBox(hWnd, strInfo, strTitle, nStyle); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg = {0}; if (!InitWindow(hInstance, nCmdShow)) { PrintMsg(NULL, "InitWindow Failed!"); return -1; } HWND hWnd = GetActiveWindow(); //init direct draw if (!InitDDraw()) { PrintMsg(hWnd, "init DirectDraw failed!"); DestroyWindow(hWnd); return -1; } while (::GetMessage(&msg, NULL, 0, 0)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } return (int)msg.wParam; } BOOL InitWindow( HINSTANCE hInstance, int nCmdShow ) { HWND hWnd = NULL; WNDCLASS ws = {0}; char szClassName[] = _T("test dx"); //int window class ws.cbClsExtra = 0; ws.cbWndExtra = 0; ws.hbrBackground = (HBRUSH)::GetStockObject(BLACK_BRUSH); ws.hCursor = ::LoadCursor(NULL, IDC_ARROW); ws.hIcon = ::LoadIcon(NULL, IDI_APPLICATION); ws.hInstance = hInstance; ws.lpfnWndProc = WinProc; ws.lpszClassName = szClassName; ws.lpszMenuName = NULL; ws.style = CS_HREDRAW | CS_VREDRAW; //register window class ::RegisterClass(&ws); hWnd = ::CreateWindowEx(0, szClassName, _T("test for diectx"), WS_OVERLAPPED, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, 0); if (!hWnd) { return FALSE; } //show and update ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_KEYDOWN: { switch (wParam) { case VK_ESCAPE: ::PostMessage(hwnd, WM_CLOSE, 0, 0); break; } } break; case WM_DESTROY: { FreeDDraw(); PostQuitMessage(0); } break; default: break; } return DefWindowProc(hwnd, uMsg, wParam, lParam); } BOOL InitDDraw() { DDSURFACEDESC ddsd = {0}; //page descripe HDC hdc = NULL; if (DD_OK != ::DirectDrawCreate(NULL, &lpDD, NULL)) { return FALSE; } //取得独占和全屏模式 if (DD_OK != lpDD->SetCooperativeLevel(GetActiveWindow(), DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN)) { return FALSE; } //set show mode if (DD_OK != lpDD->SetDisplayMode(640, 480, 8)) { return FALSE; } //set main page ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; //create main page object if (DD_OK != lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL)) { return FALSE; } //print text if (DD_OK != lpDDSPrimary->GetDC(&hdc)) { return FALSE; } SetBkColor(hdc, RGB(0, 0, 255)); SetTextColor(hdc, RGB(255, 255, 0)); TextOut(hdc, 0, 20, lpszMsg1, lstrlen(lpszMsg1)); TextOut(hdc, 0, 40, lpszMsg2, lstrlen(lpszMsg2)); lpDDSPrimary->ReleaseDC(hdc); return TRUE; } void FreeDDraw() { if (NULL != lpDDSPrimary) { lpDDSPrimary->Release(); lpDDSPrimary = NULL; } if (NULL != lpDD) { lpDD->Release(); lpDD = NULL; } }
发表评论
-
__declspec(novtable) 的用法
2010-11-27 14:37 1578__declspec(novtable) 的用法 __d ... -
解决URLDownloadToFile缓存问题的两种方法
2010-09-09 15:18 2906解决URLDownloadToFile缓存问题的两种方法 ... -
修改richedit背景
2010-07-19 22:52 1647RichEditCtrl::SetBackgroundCo ... -
使用ADO封装类的数据库程序开发实例(下)
2010-07-12 15:30 1474使用ADO封装类的数据库 ... -
使用ADO封装类的数据库程序开发实例(上)
2010-07-12 15:28 1215使用ADO封装类的数据库 ... -
VC防止窗口和控件闪烁的方法
2010-07-09 21:16 20221、将Invalidate()替换为Invalidate ... -
防止窗口闪烁地办法
2010-07-09 21:13 1512防止窗口闪烁地办法 也许我们都碰到过这种情况,当你 ... -
使用ADO _ConnectionPtr
2010-07-06 16:04 5265// GetUser.cpp : Defines the ... -
VC用ADO访问数据库全攻略
2010-07-06 15:29 1799VC用ADO访问数据库全 ... -
深入GetMessage和PeekMessage (引自-MSDN技术组)
2010-06-10 16:59 3726深入GetMessage和PeekMessage (引自 ... -
界面编程总结(1)
2010-06-02 13:32 4011原文地址:http://blog.csdn.net/byx ... -
获取信息的有关Windows API
2010-05-27 10:01 3146获取信息的有关Windows API 1.窗口信息 ... -
VC中如何实现窗口的隐藏
2010-05-13 10:08 7862VC中如何实现窗口的隐藏 用MFC做的Dialog ... -
SetConsoleCtrlHandler 处理控制台消息
2010-05-07 17:32 18142SetConsoleCtrlHandler 处理控制台消 ... -
解决决错误: error C2850: 'PCH header file'
2010-04-27 19:45 1953解决决错误: error C2850: 'PCH hea ... -
VC++ GDI+编程的字体和文本绘制
2010-04-13 13:12 7979字体是文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸 ... -
VC利用GDI+显示透明的PNG图片
2010-04-12 16:59 115391.在你将要使用GDI+的工程中,完成初始化 ... -
GDI+编程基础(一)GDI+ Vs GDI
2010-04-12 15:59 2336下载源代码一、GDI GDI是位于应用程序与不同硬件之间 ... -
VC画图
2010-04-12 15:50 1539BOOL DrawPic(HDC hdc, TCHAR* ... -
对话框的数据交换--MFC深入浅出
2010-04-12 10:43 2457对话框数据交换指以下两种动作,或者是把内存数据写入对应的控 ...
相关推荐
2. DirectX-Headers-main是DirectX12帮助类文件源码 3. HelloTriangle.pdf 是HelloTriangle工程 流程结构图 HelloTriangle工程: CD3D12Triangle类对DirectX12创建三角形做了封装。 HelloTexture工程: CD3D12...
3. **Hello, World!**:编写第一个Direct3D程序,显示一个简单的几何形状,如立方体或球体。 4. **渲染管线**:学习Direct3D的渲染管线,了解从顶点数据到屏幕像素的过程,包括顶点处理、像素着色、深度缓冲等。 5...
在DirectX9中,"Hello World"程序通常会展示如何初始化DirectX设备,设置窗口,并绘制一个简单的几何图形,如一个三角形。这不仅帮助开发者了解DirectX的基本工作流程,还涉及到设备创建、上下文管理以及基本的渲染...
文件"DirectX11-With-Windows-SDK-master"可能包含了所有这些步骤的示例代码,从简单的“Hello Triangle”到复杂的场景渲染,帮助初学者逐步掌握DirectX 11编程。 总之,"DirectX11-With-Windows-SDK-master.zip"的...
- **Hello Triangle**:最基础的3D图形绘制,展示Direct3D的基本用法。 - **颜色变换**:演示如何使用矩阵变换对物体进行平移、旋转和缩放。 - **纹理映射**:在物体表面应用纹理,增加视觉效果。 - **光照效果*...
可能会讲解如何设置开发环境,安装DirectX SDK,并创建第一个Hello World级别的DirectX程序。 2. **Chapter 2**: 可能会讲解Direct3D的基础概念,如渲染管线、顶点和索引缓冲区、纹理贴图等。开发者将学习如何绘制...
文档可能涵盖从安装DirectX SDK到编写第一个“Hello, Triangle”程序的全过程。同时,你还需要学习相关的数学知识,如向量、矩阵运算,这些是理解和实现3D图形的基础。 总之,DirectX9编程是一门涵盖广泛的技术,...
这个例子中,我们创建了一个红色的居中对齐的文本“Hello, DirectX!”,位置在屏幕的(10, 10)坐标,宽度到(200, 50)。 在项目`Project1`中,可能包含了`frmMain.frm`和`Project1.vbp`两个文件。`frmMain.frm`是窗体...
- **创建简单的Windows应用程序**:本书可能会介绍如何创建一个简单的“Hello World”风格的Windows程序,通过这个例子学习基本的窗口创建、消息处理等概念。 ### 4. 3D图形编程 - **3D模型加载与渲染**:本书将...
DirectX 9.0版本在当时是最新的版本之一,它包含了多项改进,如硬件加速、纹理管理、顶点和像素着色器等功能。 #### Windows编程基础 本书的第一章介绍了Windows编程的基本概念。首先解释了匈牙利命名法,这是一种...
- **“Hello World”示例**:通过一个简单的“Hello World”程序示例来展示如何创建和注册一个Windows应用程序窗口。 - **消息泵**:指明了消息处理的核心机制——消息泵(Message Pump),它是Windows应用程序的...
通过一个简单的“Hello World”示例,作者逐步引导读者理解如何在Windows环境中构建应用程序。 2. **DirectX 10.0概述**:本书深入讲解了DirectX 10.0的核心组件,包括Direct3D、DirectInput、DirectSound等。通过...
- **消息循环**:这是Windows程序的核心机制之一,通过不断循环检查是否有新的消息到来,并根据消息的类型调用相应的处理函数。 - **处理消息**:本书提供了具体的示例代码,演示了如何编写消息处理器函数来响应...
- 茶壶和立方体被放置在地形之上,显示了正确的高度和位置。 - 光照效果使得地形和物体看起来更加逼真。 通过以上步骤,学生不仅能够加深对DirectX编程的理解,还能掌握三维场景构建的具体方法和技术细节。
DirectX 3D 是微软开发的一套用于游戏和图形密集型应用程序的 API(应用程序接口),它提供了丰富的功能,包括3D图形渲染、音频处理、输入设备管理等。在DirectX 3D中,`D3DXCreateText`是一个非常实用的函数,用于...
在提供的代码示例中,我们看到`hello.cpp`文件包含了创建第一个DirectDraw应用程序的基本步骤。 代码中定义了两个全局变量,`LPDIRECTDRAW lpDD`代表DirectDraw对象,`LPDIRECTDRAWSURFACE lpDDSPrimary`则是Direct...
《3D图形编程之旅:Hello3DWorld源代码解析》 3D图形编程是一门深奥而富有挑战性的技术,它赋予了计算机视觉无限的可能性,让数字世界充满生动与真实感。在本篇文章中,我们将深入探讨一个名为“Hello3DWorld”的3D...
例如,"Hello World"字符串可以在指定位置以特定颜色和格式输出。 三维地形的创建通常基于高度图,这是一个表示地形起伏的数据矩阵。你可以从图像文件中读取高度数据,或者通过算法自动生成。为了模拟真实地形,...
"Hello World", // 待输出字符串 -1, // NULL 结束的字符串 &rect, // 输出位置 DT_TOP | DT_LEFT, // 输出选项 0xff000000 // 文字颜色:黑色 ); ``` 2. 地形模拟与纹理应用: 地形模拟基于高度图,高度图是...
在本篇中,我们将深入探讨三维交互开发的第二个部分,主要关注DxStudio这一工具的“Hello World”项目。DxStudio是一款强大的实时三维场景编辑器,它允许开发者创建、编辑并导出交互式3D内容,广泛应用于游戏开发、...