lord_akinak متخصص ساخت بازی
تاريخ عضويت: شنبه 15 ارديبهشت 1386 تعداد ارسالها: 349 محل سكونت: Hell
1 شنبه 24 تير 1386 - 12:56 |
|
|
سلام
وقتی با win32 می خوام یه پنجره بسازم این مراحل رو انجام می دم:
1 - RegisterClass ( WINCLASS ) with hInstance
2 - Create HWND
3 - Show Window
پنجره با موفقیت باز می شه و مشکلی نداره، اما سوالم اینجاست که برای Handle کردن Message های ویندوز یه متد به اسم WinProc می سازم ، که اسم اونو می دم به WINCLASS اما یه متد دیگه هم موقع کار با DirectX باید ساخته بشه که توی کتابم اسمشو گزاشته بود EnterMsgLoopو می گفت حلقه اصلی بازی اینجاست.
محتویات EnterMsgLoop
كد: |
int d3d::EnterMsgLoop( bool (*ptr_display)(float timeDelta) )
{
MSG msg;
::ZeroMemory(&msg, sizeof(MSG));
static float lastTime = (float)timeGetTime();
while(msg.message != WM_QUIT)
{
if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
else
{
float currTime = (float)timeGetTime();
float timeDelta = (currTime -
lastTime)*0.001f;
ptr_display(timeDelta); // call display function
lastTime = currTime;
}
}
return msg.wParam;
}
|
محتویات WinProc
كد: |
LRESULT CALLBACK d3d::WndProc(HWND hwnd, UINT msg, WPARAM wParam,
LPARAM lParam)
{
switch( msg )
{
case WM_DESTROY:
::PostQuitMessage(0);
break;
case WM_KEYDOWN:
if( wParam == VK_ESCAPE )
::DestroyWindow(hwnd);
break;
}
return ::DefWindowProc(hwnd, msg, wParam, lParam);
}
|
لطفا توضیح بدید :
1 - فرق این دو متد در چیست ؟
2 - هر کدوم در چه مواقعی و از کجا احضار می شن ؟
3 - سازنده متد EnterMsgLoop رو برام تشریح کنید منظورش از اون سازنده چیه ؟
كد: |
int d3d::EnterMsgLoop( bool (*ptr_display)(float timeDelta) )
|
با تشکر پیشاپیش !!! |
_________________ And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now |
|