|
|||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
º¸Åë µµ½º¿ë °ÔÀÓÀ» Á¦ÀÛÇÒ¶§´Â Çϵå¿þ¾îÀûÀÎ °ÍÀ» °³¹ßÇØ¾ß
ÇÏ
°Å³ª (¼Óµµ ¹®Á¦·Î...) »ó¾÷ÀûÀÎ ¶óÀ̺귯¸®¸¦ »ç¼ Á¦ÀÛÇÏ´Â
°æ¿ì°¡ ´Ù¼ö¿´À» °Ì´Ï´Ù.
±×¸®°í, ¸ÖƼ Å×½ºÅ·À» Çϱâ À§ÇÑ ÀÚ±¸Ã¥À» ³»³õ±âµµ ÇÏ¿´ÁÒ~
´ç¿¬ À̰ÍÀ» ¾å»ðÇÑ ÇÁ·Î±×·¥¹æ½ÄÀ̶ó°íµé ÀϺο¡¼´Â Ç¥ÇöÇϸé
¼ »ç¿ëÀ» ÇßÁÒ~
À©µµ¿ìÁî´Â ¾î¶³±î¿ä? »ç½Ç ¸ÖƼÅ×½ºÅ·, ³×Æ®¿öÅ©»óÀÇ
Ç÷¹ÀÌ,
»ç¿îµåÀÇ ´Ù¾çÇÑ Á¦¾î, °Å±â´Ù 3Â÷¿ø ¹æ¹ý±îÁö ½±°Ô ½Å°æ¾²Áö
¾Ê°í Ç¥ÇöÇÒ¼ö ÀÖ´Â ½Ã´ëÀÎ°Í °°½À´Ï´Ù.
À×? ÀÚ²Ù »ïõÆ÷·Î ºüÁö´Â ±º¿ä~
1. ÇÁ·Î¼¼¼¸¦ µ¶Á¡Çϱâ
ÀÏ´Ü °ÔÀÓÀ» À§Çؼ´Â ÇÁ·Î¼¼¼¸¦
µ¶Á¡ÇÒ Çʿ伺ÀÌ ÀÖ°Ú´Ù
°í »ý°¢ÇϽÃÁÒ? ´ç¿¬ ´ÙÀÌ·ºÆ®·Î
À̰ÍÀ» »ç¿ëÀÚ°¡ ¸¸µé±â
¹Ù¶óÁö ¾Ê°í ÀÚü ¿¡¼ Áö¿øÇÕ´Ï´Ù.
¹Ù·Î
SetCooperativeLevel()À̶ó´Â
´ëÇ¥ÀûÀÎ ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù.
¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
HRESULT SetCooperativeLevel(LPDIRECTDRAW lpDD, HWND
hWnd,
DWORD
dwFlags)
¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
lpDD´Â ¾Õ¿¡¼ »ý¼ºµÈ DirectDraw
°´Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦
¶æÇÕ´Ï´Ù. µÎ¹øÂ°°ÍÀº ´ç¿¬ À©µµ¿ìÁî
Çڵ鷯°ÚÁÒ?
º¸Åë ÀÌÇîµé·¯´Â ÀÛ¾÷Àüȯ(ALT+TAB)¿¡
°üÇÑ ¸Þ¼¼Áö¸¦ º¸³¾
¶§ »ç¿ëµÇ¾î Áý´Ï´Ù.
¸¶Áö¸· dwFlags¿¡ °üÇÑ°Ç ´ÙÀ½ÀÇ
³»¿ëÀ» º¸½Ã¸é ¼³¸íº¸´Ù
½±°Ô ÀÌÇØ°¡...
--------------------------------------------------------------
DDSCL_ALLOWMODEX ModeX¸¦ Áö¿øÇÑ´Ù. DirectDraw´Â ÀúÇØ»óµµÀÎ
320x200,
3200x400ÀÇ X¸ðµå¸¦ Áö¿øÇÕ´Ï´Ù.
DDSCL_ALLOWREBOOT Àüü ȸéÀ» »ç¿ëÇÒ¶§ Ctrl+Alt+DelÀ» °¡´ÉÇÏ
ÇÕ´Ï´Ù.
DDSCL_EXCLUSIVE ÇØ»óµµ¸¦ ¹Ù²Ù°Å³ª Çø®ÇÎ ÀÛ¾÷À» À§Çؼ
exclusive
level »óÅ·ΠÇÑ´Ù.
DDSCL_FULLSCREEN GDI¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÀüÃ¼È¸é ¸ðµå¸¦ »ç¿ë
°¡´ÉÇϰÔ
ÇÑ´Ù.
DDSCL_NORMAL ÀϹÝÀûÀÎ À©µµ¿ìÁî â¿¡¼
ÇÁ·Î±×·¥À» °¡´É
ÇϰÔ
ÇÕ´Ï´Ù.
DDSCL_NOWINDOWCHANGES Ȱ¼ºÈ »óÅ¿¡ ÀÖ´Â ÇÁ·Î±×·¥À» minimize
ÇÒ¼ö
¾ø°Ô ÇÕ´Ï´Ù.
--------------------------------------------------------------
¿Í¿ì ¹«½¼ ¿É¼ÇÀÌ ÀÌ·¸°Ô ¸¹Àº°¡?
º¸Åë ÇÁ·Î±×·¥¿¡¼´Â
À§ÀÇ Äڵ带 Á¶ÇÕÇØ¼ »ç¿ëÇÕ´Ï´Ù.
¿©±â¼ Á¶ÇÕÀ̶õ°ÍÀº
OR, AND¸¦ ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.
°£´ÜÇÑ ¿¹¸¦ º¸ÁÒ~
ddrval=lpDD->SetCooperativeLevel(hwnd,
DDSCL_EXCLUSIVE
| DDSCL_FULLSCREEN);
¾ÆÁÖ °£´ÜÇØ º¸À̽ÃÁÒ?
2. ºñµð¿À ¸ðµå ¼³Á¤
¾Õ¼ ¹è¿î °ÍÀº ´ÜÁö ÇÁ·Î¼¼¼(CPU)ÀÚ¿øÀÇ
µ¶Á¡ÇÏ´Â °ÍÀ»
¹è¿ö º¸¾Ò½À´Ï´Ù.
À̹ø¿¡´Â ºñµð¿À ¸ðµå¸¦ ¼³Á¤ÇÏ´Â
¹æ¹ýÀ» ¾Ë¾Æ º¾½Ã´Ù.
¹°·Ð °ü·ÃÃ¥ÀÚ¸¦ º¸½Ã¸é ÀÚ¼¼È÷
¾Ë¼ö ÀÖÁö¸¸, ±×·¡µµ...
Ȥ½Ã³ª... Ã¥ÀÌ ¾øÀÌ À̱۷Π¹è¿òÀ»
½ÃÀÛÇÏ´Â ºÐÀ» À§ÇØ
´ÙÀÌ·ºÆ®´Â 320x200, 320x400
640x480ÀÇ ÇØ»óµµ¸¦ Áö¿øÇÕ
´Ï´Ù. 256Ä®¶ó¸¦ ±âº»À¸·Î ÇÏÁö¸¸
Åõ·çÄ®¶ó±îÁö Áö¿øÀÌ
µË´Ï´Ù. º¸Åë 640x480x256¿¡¼
°¡Àå È¿À²ÀûÀÎ ±â´ÉÀ»
Á¦°øÇÑ´Ù°í ¸Þ´º¾ó¿¡ ³ª¿Í ÀÖ´õ±º¿ä!
¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
HRESULT SetDisplayMode(LPDIRECTDRAW lpDD,
DWORD
dwWidth, DWORD dwHeight,
DWORD
dwBpp)
¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
¿ª½Ã ù¹øÂ° ÀÎÀÚ´Â DirectDraw¸¦
¶æÇÏ´Â °ÍÀ̰ÚÁÒ~
dwWidth¿Í dwHeight´Â °¡·Î ¼¼·Î
ÇØ»óµµ¸¦ ¶æÇÏ´Â °ÍÀ̱¸¿ä
¸¶Áö¸· dwBpp´Â Ä÷¯¼ö¸¦ ¶æÇÕ´Ï´Ù.
±×·³ ¿¹Á¦¸¦ º¸ÁÒ~
ddrval=lpDD->SetDisplayMode(640, 480, 8);
À§ÀÇ ¿¹Á¦´Â ¹Ù·Î 640*480*256À» ¶æÇÕ´Ï´Ù.
¾ÆÁÖ ½±ÁÒ~ ^^;
ÀÚ~ ¿©±â±îÁö Á¤¸®ÇØ º¸ÁÒ~
ù¹øÂ° µÎ¹øÂ° ±ÛÀ» ÀÐ¾î º¸¼Åµµ
¾ÆÁ÷ ÀÌÇØ°¡ µÇÁö ¾ÊÁÒ~ ´ç¿¬È÷
¾ÆÁ÷Àº ±×¸® Áß¿äÇÏÁö´Â
¾ÊÀº ³»¿ëÀεíÇÕ´Ï´Ù. (´ç¿¬ÇÑ
³»¿ëÀ̹ǷÎ...^^;)
//¿ì¼± »ç¿ëµÉ ´ÙÀÌ·ºÆ® º¯¼öµéÀ»
¼±¾ðÇØ¾ß °ÚÁÒ~
LPDIRECTDRAW lpDD;
LPDIRECTDRAWSURFACE lpDDSPrimary;
LPDIRECTDRAWSURFACE lpDDSBack;
DDSCAPS ddscaps;
DDSURFACEDESC ddsd;
HRESULT hr;
//±×´ÙÀ½¿¡ ´ÙÀÌ·ºÆ® µå·Î¿ì¿¡
°üÇÑ »ý¼ºÀÚ¸¦ »ý¼ºÇßÁÒ~
hr = DirectDrawCreate(NULL,
&lpDD, NULL);
if(hr != DD_OK)
{
// ¿¡·¯
°ü·Ã 󸮸¦ ÇØ¾ß °ÚÁÒ?
// º¸Åë
¿¡·¯¶ó°í Ç¥½Ã¸¦ ÇÏ°í ºüÁ® ³ª°©´Ï´Ù.
}
// ÀÚ~ ±×·³ À̹ø¿¡´Â ÇÁ·Î¼¼¼¸¦ µ¶Á¡ÇØ¾ß °ÚÁÒ~
hr = lpDD->SetCooperativeLevel(hWnd,
DDSCL_EXCLUSIVE |
DDSCL_FULLSCREEN
| DDSCL_ALLOWMODEX);
if(hr != DD_OK)
{
// µ¿ÀÏÇÑ
¿¡·¯ 󸮸¦ ÇÏ¸é µÇ°ÚÁÒ~
}
// ¿©±â¼ ÇØ»óµµ¸¦ ¼³Á¤Çؾß
°ÚÁÒ!
hr = lpDD->SetDisplayMode(640,
480, 8);
if( hr != DD_OK)
{
// ´ç¿¬
¿¡·¯ 󸮰ÚÁÒ~
}
// ¿©±â±îÁö....