السلام عليكم
أولا لدي مشكلة دوختني منذ أيام ممكن تساعدوني في حلها
لدي ملف رأسي c++ header file اسمه MyClassDevice.h
يحوي هذا الملفات تصريح كلاس ينشئ direct3d9 device بدون تعريف الدوال
كالتالي
LPDIRECT3D9 Direct3D = NULL;
LPDIRECT3DDEVICE9 Device = NULL;
class MyDevice
{
protected:
D3DPRESENT_PARAMETERS D3DPresent;
Direct3D;
Device;
D3DCAPS9 caps;
int SetDeviceType;
D3DDISPLAYMODE GetDisplayMode;
public:
VOID GetDeviceType ();
VOID Render ();
VOID CleanUp ();
VOID CreateTheDevice ();
};ولدي الملف MyClassDevice.ccp
يحوي تعريف دوال الكلاس كالتالي
#include "MyClassDevice.h"
VOID MyDevice::CleanUp()
{
....................
......................
......................
.....................
}
VOID MyDevice::Render()
{
.................................
...........................................
.............................................
}
VOID MyDevice::GetDeviceType()
{
....................................................
...............................
.......................................
.......................
}
VOID MyDevice::CreateTheDevice()
{
......................................
....................................
................................
.......................
}وبنفس الطريقة وضعت تعريفات النافذة كالحجم واسمها في الملف التالي MyWindow.h
#include "MyIncludeFile.h" const int WindowSize = 650; const char WinClassName []= "MyClassDevice Of Peace Of Iron And Device"; HWND hwnd; WNDCLASSEX WinClass; MSG Msg;
والملف التالي يستخدم المعرفات السابقة لانشاء نافذة واسمه كالتالي MyWindow.cpp
#include "MyWindow.h"
LRESULT CALLBACK WndProc ( HWND hwnd , UINT Msg , WPARAM wParam , LPARAM lParam)
{
switch(Msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc ( hwnd , Msg , wParam , lParam );
}
INT WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance, LPSTR lpCmdLine , int nShowCmd )
{
WinClass.cbClsExtra = 0;
WinClass.cbSize = sizeof(WNDCLASSEX);
WinClass.cbWndExtra = 0;
WinClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
WinClass.hCursor = LoadCursor ( NULL , IDC_ARROW );
WinClass.hIcon = LoadIcon ( NULL , IDI_APPLICATION );
WinClass.hIconSm = WinClass.hIcon;
WinClass.hInstance = hInstance;
WinClass.lpfnWndProc = WndProc;
WinClass.lpszClassName = WinClassName;
WinClass.lpszMenuName = NULL;
WinClass.style = 0;
RegisterClassEx ( &WinClass );
hwnd = CreateWindowEx (0 , WinClassName , "MyWindow" , WS_OVERLAPPEDWINDOW , CW_USEDEFAULT,
CW_USEDEFAULT , WindowSize , WindowSize , NULL , NULL , hInstance, NULL);
ShowWindow ( hwnd , SW_SHOW );
UpdateWindow ( hwnd );
ZeroMemory (&Msg , sizeof(Msg));
while ( Msg.message != WM_QUIT );
{
if ( PeekMessage ( &Msg ,NULL , 0U , 0U , PM_REMOVE ))
{
TranslateMessage ( &Msg);
DispatchMessage (&Msg);
}
else
{
}
}
UnregisterClass ( WinClassName , WinClass.hInstance );
return 0;
}ملاحظة :
الملفان MyClassDevice.h
&
MyWindow.h
يستخدمان الملف الرأسي التالي MyIncludeFile.h
#include <windows.h> #include <d3d9.h> #include <d3dx9.h> #pragma warning ( disable : 4430 )
ممكن مساعدة للربط بين الملفين وذلك بأن أشتق كائن من MyDevice
وأضعه في ملف النافذة لكي أستخدم دواله
كالرندر والكلين اب

