* Ctrl+F3 : ÇöÀç Ä¿¼°¡ ÀÖ´Â À§Ä¡ÀÇ ´Ü¾î°¡ ³ª¿À´Â ´ÙÀ½ À§Ä¡¸¦ ã¾ÆÁÝ´Ï´Ù. Ctrl+Shift+F3À» ´©¸£¸é ÀÌÀü °É ã¾ÆÁÖÁÒ.
* Ctrl+H : replaceÀÔ´Ï´Ù. ƯÈ÷ ÀÏÁ¤ºÎºÐ¾ÈÀÇ º¯¼ö À̸§À» º¯°æÇϰųª ÇÒ ¶§ ¹üÀ§¸¦ ¼±ÅÃÇÑ ´ÙÀ½¿¡ Ctrl+H¸¦ ´©¸£¸é ÆíÇÏÁÒ.
* Ctrl+], Ctrl+E : °ýÈ£ ¦À» ¸ÂÃçÁÝ´Ï´Ù. {À§¿¡¼ ´©¸£¸é ¦ÀÌ ¸Â´Â }¸¦ ã¾ÆÁÖÁö¿ä.
* Ctrl+L : ÇÑÁÙÀ» À߶ó³À´Ï´Ù. -> Ŭ¸³º¸µå·Î
* Ctrl+Shift+L : ÇÑÁÙÀ» Áö¿ó´Ï´Ù.
* Ctrl+J, K : #ifdef ... #endif ½ÖÀ» ã´Âµ¥ »ç¿ëÇÕ´Ï´Ù.
* ±×¿Ü CtrlÀ» ´©¸£°í Ä¿¼³ª Delete, Backspace¸¦ ´©¸£¸é ´Ü¾î ´ÜÀ§·Î µ¿ÀÛÀ» ÇÏ°Ô µË´Ï´Ù.
* Alt+F8 : Àε§Æ® Á¤¸®. ÀÏÁ¤ ¹üÀ§¸¦ ¼±ÅÃÇÏ°í ´©¸£¸é ¶óÀÎ ¾ÕºÎºÐÀÇ °ø¹éÀ» ÀÚµ¿À¸·Î Á¶Á¤ÇØÁÝ´Ï´Ù.
* CTRL+SHIFT+T : Ä¿¼ À§Ä¡ÀÇ ´Ü¾î¿Í ¾Õ ´Ü¾î°¡ ¼·Î ±³Ã¼ µË´Ï´Ù.
* ALT+SHIFT+T : Ä¿¼ À§Ä¡ÀÇ ÇÑÁÙ°ú ÀÁÙÀÌ ¼·Î ±³È¯µË´Ï´Ù.
* Shift + F9 : µð¹ö±× ¸ðµå¿¡¼ Ãß°¡ÇÏ°íÇ º¯¼ö³ª µîµî ¾Õ¿¡ Ä¿¼¸¦ À§Ä¡ ½ÃŲÈÄ Shift+F9¸¦
´©¸£¸é Watch Window¿¡ ÀÚµ¿À¸·Î Ãß°¡.
* Ctrl + Alt + T , Ctrl + Spacebar : ¸â¹ö¸ñ·Ï Æ˾÷âÀÌ ³ªÅ¸³³´Ï´Ù (Âü°í·Î ´ë¼Ò¹®¿¡ °ü°è¾ø½À´Ï´Ù.)
* Ctrl + Shift + U : ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù°í ½ÍÀ»¶§ ºí·° ÁöÁ¤À» ÇÑ´ÙÀ½ ÀÌ Å°¸¦ ´©¸£¸é ¼Ò¹®ÀÚ°¡ ´ë¹®ÀÚ·Î µÐ°©.
* Ctrl + U : ´ë¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î º¯°æ
* Ctrl + Shift + 8 : TabÀº ^¸ð¾çÀ¸·Î °ø¹é¹®ÀÚ´Â .·Î º¯°æ, ´Ù½Ã ´©¸£¸é ¼³Á¤ÀÌ ÇØÁ¦
BOOL MyApp::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message
== WM_SYSKEYDOWN &&
pMsg->wParam
== VK_F4) {
return
TRUE;
}
}
ÀÌ ÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵å ÇÏ¿©¼ Áý¾î³ÖÀ¸¸é µË´Ï´Ù.
<Á¦ÀÏ ÂªÀº, ÆÄÀÏ Å©±â ¾Ë¾Æ³»´Â ÇÔ¼ö>
ÀÏ´Ü Á¦°¡ º» ¹æ¹ýµéÀ» ¿°ÅÇØ º¸°Ú½À´Ï´Ù.
1] ÆÄÀÏÀ» ¿°í, ÆÄÀÏ ³¡À¸·Î À§Ä¡¸¦ ¿Å°Ü¼ ±× À§Ä¡°ªÀ» Àд´Ù.
2] ÆÄÀÏÀ» fopen()ÀÌ ¾Æ´Ñ open()À¸·Î ¿¾î¼ ÇÚµéÀ» ¾òÀº ´ÙÀ½ ±×°ÍÀ» ÀÌ¿ëÇؼ filelength()ÇÔ¼ö·Î ÆÄÀÏ Å©±â¸¦ ±¸ÇÑ´Ù.
°£´ÜÇÏ´Ï °á·Ð¸¸ ¸»¾¸µå¸®ÁÒ. Àú´Â ´ÙÀ½°ú °°ÀÌ ÆÄÀÏ Å©±â¸¦ ±¸ÇÕ´Ï´Ù.
fileSize = filelength( fileno(fp) );
fp´Â FILE *fp; ·Î Á¤ÀÇµÈ ÆÄÀÏ Æ÷ÀÎÅÍÀÔ´Ï´Ù.
¹°·Ð fopen()À¸·Î ÆÄÀÏÀ» ¿¬ »óÅ¿¡¸¸ °¡´ÉÇÕ´Ï´Ù.
±×·¯³ª ÆÄÀÏ Å©±â¸¦ ±¸ÇÑ´Ù´Â °ÍÀÌ DIRÇÁ·Î±×·¥ÀÌ ¾Æ´Ñ ÀÌ»ó ÆÄÀÏÀ» ¿°í³ª¼ ±¸ÇÏ´Â °Å ¾Æ´Ï°Ú½À´Ï±î?
PreCreateWindow(CREATESTRUCT& cs)¿¡¼ cs.lpszClass¸¦ º¯°æÇØÁÖ¸é µÉ °Í °°Àºµ¥ ÀßµÇÁö ¾Ê´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̺κп¡¼ »ç¿ëÀÚµéÀÌ Çì¸Å´Â °æ¿ì°¡ ¸¹ÀÌ ÀÖÁÒ.
´ÙÀ½ÀÇ Äڵ带 È°¿ëÇϽøé ÀßµÇ½Ç °Ì´Ï´Ù.
BOOL CTestDlg::PreCreateWindow(CREATESTRUCT& cs)
{
if(!CWnd::PreCreateWindow(cs))
return FALSE;
HINSTANCE hInst=AfxGetInstanceHandle();
WNDCLASS wc;
::GetClassInfo(hInst, cs.lpszClass, &wc);
wc.lpszClassName=cs.lpszClass="MyClass";
return AfxRegisterClass(&wc);
}
<¿Ü±¹ ¸®¼Ò½º¸¦ ÇÑ±Û ¸®¼Ò½º·Î ¼öÁ¤Çϱâ>
1. °£´ÜÇÏ°Ô °íÄ¡±â
¿µ±¹Àΰ¡ ¿¡¼ ¸¸µç ¼Ò½º¸¦ ºÐ¼®ÇÏ´Ù°¡ ¸®¼Ò½º¸¦ º¼·Á°í ´©¸£´Ï ¾ð¾î°¡ ´Ù¸£´Ù°í ¾È³ª¿À´õ±º¿ä °è¼Ó °í¹ÎÇÏ´Ù°¡ ÀÌ·² ¶§´Â rcÈÀÏ¿¡¼
¿ø·¡ ÄÚµå
//*****************************************************
#if !defined(AFX_RESOURCE_DLL)
|| defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma
code_page(1252)
#endif //_WIN32
//*****************************************************
Çѱ¹¸»·Î ¼öÁ¤ÇÑµÚ ÄÚµå
//******************************************************
#if !defined(AFX_RESOURCE_DLL)||defined(AFX_TARG_KOR)
#ifdef
_WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif//_WIN32
//******************************************************
ÀÌ·¸°Ô ¼öÁ¤ÇØÁÖ´Ï Äڵ尡 ³ª¿À´õ±º¿ä.
¹°·Ð ´Ù¾Æ½Ã°ÚÁö¸¸ ¿±â¿¡¼ rcÈÀÏÀ» text·Î ¿¾î¼ ¼öÁ¤ÇØÁּž߰ÚÁö¿ä
2. ±Ùº»Àû ÇØ°á¹æ¹ý
´Ù ¾Æ½Ã°ÚÁö¸¸ VC++Àº ´Ù±¹¾î ¸®¼Ò½º¸¦ Áö¿øÇÕ´Ï´Ù.
¿Ü±¹¿¡¼ ¸¸µç »ùÇà ¿¹Á¦¸¦ Down¹Þ¾Æ¼ ¸®¼Ò½º¸¦ ¿ÀÇÂÇÒ¶§ ÇöÀç ½Ã½ºÅÛÀÇ ÄÚµå ÆäÀÌÁö¿Í ´Ù¸£¸é ¿ÀǵÇÁö¸¦ ¾Ê½À´Ï´Ù.
Áö¿øÇÏÁö ¾Ê´Â ÄÚµå ÆäÀÌÁö ¶§¹®¿¡ ¸®¼Ò½º°¡ Á¦´ë·Î ¿ÀǵÇÁö ¾Ê´Â´Ù¸é ÇØ´çÇÏ´Â ÄÚµå ÆäÀÌÁöÀÇ .nls(National Language Support)ÆÄÀÏÀ» ½Ã½ºÅÛ¿¡ º¹»çÇØ ³Ö¾îÁÖ¸é µË´Ï´Ù.
ÇØ´ç nlsÆÄÀÏÀº Win95/98 CD¿¡ ÀÖ°í ÀÌÆÄÀÏ(¿¹:cp_1252.nls)À» windows system Æú´õ¾È¿¡ º¹»çÇÑ ÈÄ ·¹Áö½ºÆ®¸®(\HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Nls\Codepage)¿¡ ¼öµ¿À¸·Î µî·Ï½ÃÄÑ ÁÖ¸é µË´Ï´Ù.
µµ½º½ÃÀý ÇÁ·Î±×·¥¿¡¼ F10 Å°´Â ÁÖ·Î Ç®´Ù¿î ¸Þ´º¸¦ ¶ç¿ì´Âµ¥ »ç¿ëµË´Ï´Ù.
±×·¡¼ ¿ì¸®´Â F10 À¸·Î ¸Þ´º¸¦ ¶Ù¿ì´Âµ¥ Àͼ÷ÇÏÁÒ. À©µµ¿¡¼µµ ¸¶Âù°¡Áö·Î F10 Å°°¡ ¸Þ´º¸¦ È°¼ºÈ½ÃÅ°´Âµ¥ »ç¿ëµÇÁÒ. F10 Å°°¡ ¸Þ´º¸¦ È°¼ºÈ ÇÏ´Â °ÍÀ» ¸·°í ³ªÀÇ °íÀ¯ ±â´ÉÀ» ½ÇÇàÇÏ°Ô ÇÒ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÏÁÒ?
¸î°¡Áö ¹æ¹ýÀÌ Àִµ¥...
1.- SetWindowsHookEx() ÀÇ »ç¿ë
Å°º¸µåÀÇ ÇൿÀ» ¹Ù²Ù±â À§Çؼ SetWindowsHookEx ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.¿ì¼± Å°º¸µå ÈÅ(Hook)À» ÀÛ¼ºÇÏ°í ¾²·¹µå Àü¹Ý¿¡ ÀÌ ÈÅÀ» ¼³Ä¡ÇÏ´Â °ÍÀÌÁÒ.ÄÚµùÀÌ Á» ±î´Ù·ÓÁö¸¸..¿À¹öÇìµå°¡ º°·ç ¾ø±â ¶§¹®¿¡ ..°¡Àå ÁÁÀº Á¦¾ÈÀÌ µÉ°ÍÀÔ´Ï´Ù.
2.- PreProcessMessage() ¿Í WM_SYSKEYDOWN Å×½ºÆ®
¸Þ½ÃÁö ¼±Ã³¸®±âÀÎ PreProcessMessage ¿¡¼ WM_SYSKEYDOWN ¸Þ½ÃÁö°¡ ¹ß»ýÇßÀ»¶§ F10 Å°ÀÎÁö È®ÀÎÇÏ´Â °ÍÀÔ´Ï´Ù.±×·¯³ª ¸Å¹ø Á¶»çÇØ¾ß Çϱ⠶§¹®¿¡ (¸ðµç Å°¿¡ ´ëÇؼ..) ¸¹Àº ¿À¹öÇìµå¸¦ ¹ß»ý½ÃÄÑ ¼ÓµµÀúÇϸ¦ °¡Á®¿É´Ï´Ù.
3.- F10 Å°¿¡ ´ëÇÑ ¾ï¼¿·¹ÀÌÅÍ Å×À̺í ÀÛ¼º
ÃßõÇÒ¸¸ÇÑ ´Ù¸¥ ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. ±×·¯³ª Àß ¾È¸ÔÈú¶§°¡ ÀÖ¾î¼.
4.- OnSysKeyDown() Çڵ鷯¿¡¼ F10 Å×½ºÆ®
¹®¼ÈµÇ¾î ÀÖ´Â ¹æ¹ýÀÌÁÒ...±×·±µ¥ ...ÀÌÇØÇÒ¼ö ¾ø´Â°Ç..
MFC ¿¡¼´Â F10 Å°¿¡ ´ëÇÑ SysKeyDown ¸Þ½ÃÁö¸¦ SDI View ¿¡ º¸³»Áö ¾Ê½À´Ï´Ù. ¹®Á¦ÀÇ ¼ÒÁö°¡ µÇÁÒ.
<ESCÅ°·ÎºÎÅÍ Dialog »ç¶óÁüÀ» ¹æÁö>
ESCÅ°·ÎºÎÅÍ Dialog »ç¶óÁüÀ» ¹æÁöÇÏ·Á¸é
// ¸â¹ö º¯¼ö
BOOL m_bClose
//
»ý¼ºÀÚ
m_bClose = FALSE;
//
OnClose
void CKeyDlg::OnClose()
{
m_bClose
= TRUE;
CDialog::OnClose();
}
//
WindowProc
LRESULT CKeyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM
lParam)
{
if( message
== WM_COMMAND && wParam == WM_DESTROY )
{
if(
m_bClose == FALSE )
return
NULL;
//
escÅ°·Î ºÎÅÍ ´ÙÀ̾ó·Î±× »ç¶óÁüÀ» ¹æÁö
//
¿ä±æ FALSE(NULL)·Î ¸·¾ÆÁÖ¸é
//
(Á¤»óÀûÀ¸·Î´Â ¾Æ·¡ return °ªÀÌ 1·Î µÊ)
//
´ÙÀ½¿¡ message WM_DESTROY, WM_NCDESTROY°¡
//
³¯¾Æ¿ÀÁö ¾Ê¾Æ Á¾·á µÇÁö ¾ÊÀ½
}
return
CDialog::WindowProc(message, wParam, lParam);
}
/// Âü°í
// dialog¿¡¼ esc ¶Ç´Â close ¹öÆ°Àº message - 111, wParam
- 2 °¡ ³¯¾Æ¿È
// return °ªÀÌ TRUE À̸é
// message - 2¿¡ À̾î message -82°¡
³¯¾Æ¿È
//#define WM_COMMAND 0x0111
//#define
WM_DESTROY 0x0002
//#define
WM_NCDESTROY 0x0082
//#define
WM_CLOSE 0x0010
/* Enter Å° */
¹öÆ° Áß¿¡ Property¿¡ Default¶ó°í üũ°¡ µÈ °ÍÀÌ ÀÖÀ» °ÍÀÔ´Ï´Ù.
¹öÆ°Áß Çϳª¸¸ÀÌ ÀÌ ¼Ó¼ºÀ» °¡Áú ¼ö Àִµ¥ EnterÅ°¸¦ Ä¡¸é ÀÌ ¹öÆ°ÀÌ ½ÇÇàµË´Ï´Ù.
Default·Î IDOK¹öÆ°ÀÌ ¸Ô°Ô µÇÁö¿ä. Çؼ ´Ù¸¥ ¹öÆ°¿¡ À̼ӼºÀ» Áְųª IDOK¹öÆ°ÀÇ ÇÔ¼ö¸¦ °íÄ¡¼¼¿ä.
<fscanf()¿¡¼ ¾µµ¥ ¾ø´Â °ª ÀÐÁö¾Ê°í ¹ö¸®±â>
ÈÀϸí: aaa.dat
ÀÚ·á: 1 2.0 3
ÀÌ·²°æ¿ì ÀڷḦ fscanf()·Î ÀÐ¾î µéÀÏ ¶§ ºÒÇÊ¿äÇÑ ÀÚ·á°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à À§ÀÇ µ¥ÀÌÅ͸¦ ÀÐ¾î µéÀδٸé -> ½ÇÁ¦·Î 2.0Àº ÇÊ¿ä ¾ø´Â ÀÚ·á¶ó °¡Á¤ÇÏ°í
int a, b;
float dummy;
FILE* fp;
if((fp = fopen("aaa.txt",
"r"))== NULL)
return;
fscanf("%d
%f %d", &a, &dummy, &b);
fclose(fp);
ÀϹÝÀûÀ¸·Î ÇÊ¿ä¾ø´Â 2.0µµ dummy¶ó°í ÀÐ¾î µéÀδÙÀ½ ¹ö¸³´Ï´Ù.
ÀÌ·± ¾µµ¥°¡ ¾ø´Â µ¥ÀÌÅ͸¦ ÀÐ¾î µéÀÌ¸é ½Ã°£µµ ³¶ºñ°í... ¿¡±¸ Äڵ嵵 º¹ÀâÇÏ°í....
ÀÌ·² °æ¿ì *¸¦ »ç¿ëÇÏ½Ã¸é ¾ÆÁÖ ÁÁÁÒ... ^^;
fscanf("%d %*f %d", &a, &b);
¿ä·¸°Ô ¹Ù²Ù¸é ½Ç¼öÇü ÀÚ·á°¡ ³ª¿À¸é ±×³É ³Ñ¾î °¡¿ä...
°¢°¢ÀÇ µ¥ÀÌÅÍ ÀÚ·áÇü¸¸ ¸ÂÃß¾î ÁÖ¸é ±×³É ¾ÈÀÐ°í ³Ñ¾î°£ ´ÙÀ½¿¡ ±× ´ÙÀ½ µ¥ÀÌÅ͸¦ ÀÐÁö¿ä
ÀÚ½ÅÀÌ ¸¸µç µ¥ÀÌÅͶó¸é ÀÌ·± °æ¿ì°¡ ¾ø°ÚÁö¸¸ ³²ÀÌ ¸¸µç µ¥ÀÌÅ͸¦ ÀÐ¾î ¿Ã °æ¿ì¿¡
Àڱ⿡°Ô ºÒÇÊ¿äÇÑ µ¥ÀÌÅÍ°¡ »ý±æ °æ¿ì ÀÏÀÏÀÌ ´Ù ÀÐ¾î¼ ¹ö¸°´Ù¸é ³Ñ Â¥Áõ ³ª°ÚÁö¿ä ^^;
¹öÆ°À» ´©¸¦ °æ¿ì ¼·Î Åä±ÛµÇ´Â ±â´ÉÀ» ±¸Çö ÇÏ°Ú½À´Ï´Ù.
static int rwflg = 1;
rwflg = !rwflg;//°¡Àå Áß¿ä
if(rwflg) {
//
¹öÆ°À» ´©¸¦ °æ¿ì µÎ¹ø° ½ÇÇà.
} else {
//¹öÆ°À»
´©¸¦ °æ¿ì óÀ½ ½ÇÇà
}
<ÇÑ±Û À©µµ¿ì¿¡¼ ÀϺ»¾î ÇÁ·Î±×·¥ ºôµåÇϱâ>
ÀÏ´Ü. ¸®¼Ò½º´Â ´ç¿¬È÷ ÀϺ»¾î ÄÚµå·Î º¯È¯µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÇÑ±Û À©µµ¿ì¿¡¼ º¸¸é Äڵ尡 ±úÁ® º¸ÀÌ°ÚÁö¿ä? ÄÚµå º¯È¯ ¹æ¹ýÀº Microsoft Word °°Àº °É ÀÌ¿ëÇϼŵµ µÇ°í, ¾Æ´Ï¸é ÇÁ·Î±×·¥À» ¸¸µå¼Åµµ µÇ±¸¿ä.. °¡´ÉÇÏ¸é ¸®¼Ò½º ÀÛ¾÷Àº ÀϺ»¾î À©µµ¿ì¿¡¼ ÇϽñ⸦ ±ÇÇÕ´Ï´Ù. Copy&Paste ·Î Çߴµ¥µµ, ÀϺÎÄڵ尡 ±ú¾îÁö´Â ¹®Á¦°¡ ÀÖ´õ¶ó±¸¿ä.. Á¤È®È÷ ÀÌÀ¯´Â ¸ð¸£°ÚÁö¸¸, ¸®¼Ò½ºÀÇ Text ¸¦ ºÙ¿©³Ö´Â ÀÛ¾÷Àº °¡´ÉÇÑÇÑ ÀϺ»¾î À©µµ¿ì¿¡¼ ÇϽñ⸦ ±ÇÇÕ´Ï´Ù. ±×¸®°í ºôµåÇÏ½Ç ÇÁ·ÎÁ§Æ®ÀÇ ¸®¼Ò½º ÆÄÀÏ(*.rc ÆÄÀÏ) ¿¡´Â Çѱ¹¾î°¡ ÀÖÀ¸¸é Àý´ë·Î ¾ÈµË´Ï´Ù!! Å×½ºÆ®¸¦ À§Çؼ ¸î°³ÀÇ ´ÙÀ̾ó·Î±×¸¸ ÀϺ»¾î·Î ¹Ù²å´Âµ¥ ºôµå°¡ ¾ÈµÇ´õ±º¿ä.. ¹Ýµå½Ã Àüü ¸®¼Ò½º ÆÄÀÏ¿¡´Â ¿µ¾î ¾Æ´Ï¸é ÀϺ»¾î Äڵ常 Á¸Àç ÇØ¾ß ÇÕ´Ï´Ù.
±×¸®°í Resource file (rc ÆÄÀϵé)ÀÇ ³»¿ëÀ» ´ÙÀ½°ú °°ÀÌ ¹Ù²Ù½Ã¸é µË´Ï´Ù. ¸ðµç ºÎºÐÀ» ¹Ù²Ù¾î¾ß ÇÏ´ÂÁö´Â È®½ÇÄ¡ ¾ÊÁö¸¸, ÀÏ´Ü ÀÌ·¸°Ô ¹Ù²Ù¸é ºôµå¶û ½ÇÇà¿¡ ¹®Á¦´Â ¾ø½À´Ï´Ù..
1. #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR) ¸¦
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) À¸·Î...
2. LANGUAGE 18, 1 ¸¦
LANGUAGE 17, 1 ·Î...
3. #pragma code_page(949) ¸¦
#pragma code_page(932) ·Î...
4. l.kor\\afxres.rc ¸¦
l.jpn\\afxres.rc ·Î..
ÀÌ»óÀÔ´Ï´Ù.. ^^.. µµ¿òÀÌ µÆÀ»±î¿ä?? ±×¸®°í ÁÖÀÇÇÏ½Ç Á¡Àº Font ÀÔ´Ï´Ù.. ÀϺ»ÀÇ ÆùÆ®¿¡ ¸ÂÃß¾î Å©±â¶û À̸§À» Á¤ÇØÁà¾ß¸¸ ÇÏÁö¿ä..
'##'¿¡ ´ë¾È Áú¹®ÀÌ ³ª¿Â ±è¿¡ '#'°ú '##' ´ëÇØ À̾߱⸦ Çѹø Çغ¼±î ÇÕ´Ï´Ù.
¸ÕÀú #ºÎÅÍ ½ÃÀÛÇÏ°Ú½À´Ï´Ù.
#Àº C/C++¿¡¼ ¸¹ÀÌ ³ª¿À´Â ±âÈ£ÁÒ. #include ¶öÁö, #define À̶öÁö. ±×·±µ¥, #ÀÌ ´Ù¸¥ ¿ëµµ·Î ¾²ÀÌ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
´ÙÀ½°ú °°Àº Äڵ尡 ÀÖ½À´Ï´Ù.
#include <stdio.h>
#define STRING(a) printf(a)
void main(){
STRING(trowind);
}
¸ÅÅ©·Î¸¦ ¾Æ½Ã´Â ºÐÀ̶ó¸é À§¿¡ Äڵ尡 ¾î¶»°Ô º¯È¯µÇ´ÂÁö ¾Æ½Ç °Ì´Ï´Ù. STRING(trowind) ºÎºÐÀÌ printf(trowind)·Î ¹Ù²î°ÚÁÒ. (ÀÌ º¯È¯Àº preprocessor¿¡¼ ´ã´çÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº 'Preprocessor' ¶Ç´Â 'Àü󸮱â'¿¡´ëÇÑ ÀڷḦ Âü°íÇϼ¼¿ä.)
ÀÌ°Ç ¸í¹éÈ÷ ÄÄÆÄÀÏ ¿¡·¯ÀÔ´Ï´Ù. trowind¶ó´Â º¯¼ö°¡ ¾øÀ¸´Ï±î¿ä.
±×·³ ÀÌÁ¦ STRING() ¸ÅÅ©·Î ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¹Ù²ãº¸°Ú½À´Ï´Ù.
#define STRING(a) printf(#a)
¹Ù²Û°Å¶ó°í´Â 'a' ¾Õ¿¡ #¸¦ ºÙÀÎ °Í ¹Û¿¡ ¾ø½À´Ï´Ù. ±×·¯¸é À§ÀÇ STRING(trowind) ´Â ´ÙÀ½°ú °°ÀÌ ¹Ù²ò´Ï´Ù.
printf("trowind")
Áï #ÀÇ ¿ëµµ´Â ¸ÅÅ©·Î¿¡¼ ġȯµÇ´Â ¹®ÀÚ¿¿¡ Å«µû¿ÈÇ¥¸¦ ºÙ¿©ÁÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ°É Àß ÀÌ¿ëÇÏ¸é ´ÙÀ½°ú °°Àº ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖÁÒ.
#include <stdio.h>
#include <stdlib.h>
// MFC¿¡µµ ASSERT¶õ ¸ÅÅ©·Î°¡ Àֱ⠶§¹®¿¡ MY_ASSERT·Î ÇÕ´Ï´Ù.
#defien MY_ASSERT(a) if ( !a ) { printf("Error : "); printf(#a);
}
void main() {
int a = 0;
int b = 1;
MY_ASSERT(a > b)
}
(°á°ú´Â Á÷Á¢ È®ÀÎÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.)
##Àº #°ú´Â ´Ù¸£°Ô ÀÛµ¿ÇÕ´Ï´Ù. ##Àº ÁÖ¾îÁø ¹®ÀÚ¿À» ±×´ë·Î ¹Ù²ãÁÝ´Ï´Ù. ¿¹¸¦ µé¾îº¸ÁÒ.
´ÙÀ½°ú °¥Àº ¸ÅÅ©·Î°¡ ÀÖ½À´Ï´Ù.
#define RUNTIME_CLASS(class_name) class##class_name;
±×·³ ´ÙÀ½°ú °¥ÀÌ µË´Ï´Ù.
RUNTIME_CLASS(CMyDocument) -> classCMyDocument
##Àº ±× »ç¿ë ¿¹¸¦ ã±â°¡ ½±Áø ¾ÊÁÒ. ÇÏÁö¸¸, MFC¿¡¼´Â ÀÌ ##À» ±â°¡¸·È÷°Ô Àß »ç¿ëÇÕ´Ï´Ù. MFC·Î ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¶§ ±âº»ÀûÀ¸·Î ¸¸µé¾îÁö´Â Ŭ·¡½º Áß¿¡ View³ª Document Ŭ·¡½º¿¡ º¸¸é DECLARE_DYNCREATE, IMPLEMENT_CYNCREATE ¸ÅÅ©·Î°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸ÅÅ©·Î¸¦ Çѹø ºÐ¼®ÇØ º¸¼¼¿ä.
MSDN¿¡´Â ¼³¸íÀÌ Çϳªµµ ¾ø³×¿ä..
DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT option)
ÀÌ·± Çü½ÄÀÔ´Ï´Ù..µå¶óÀ̺ê´Â ID°¡
0=A, 1=B,2=C....
fmtID´Â -1À̱¸¿©..
option˼
0 - ºü¸¥Æ÷¸Ë
1 - ÀüüÆ÷¸Ë
2 - ½Ã½ºÅÛ µð½ºÅ© ÀÛ¼º
<¿¡µðÆ®¹Ú½º¿¡¼ Ä¿¼¸¦ ÀÓÀÇÀÇ À§Ä¡¿¡>
À½.. ¿¡µðÆ® ¹Ú½º¿¡¼ Ä¿¼¸¦ µÚÂÊÀ̳ª.. ÀÓÀÇÀÇ À§Ä¡¿¡ ³õÀ» ¼ö ÀÖ´Â ¹æ¹ýÀ» ¹°¾î º¸½Ã´Â ºÐ²² µµ¿òµÉ ÀÚ·áÀÔ´Ï´Ù.
1. Ä¿¼¸¦ ¸Ç ³¡¿¡
SetSel(-1, -1);
2. Ä¿¼¸¦ ÀÓÀÇÀÇ À§Ä¡¿¡
SetSel(n, n);
======================================
1. ÀÀ¿ëÇÒ ¸â¹ö ÇÔ¼ö
======================================
¿¡µðÆ® ¹Ú½ºÀÇ ¸â¹ö ÇÔ¼öÁß¿¡¼ Ä¿¼¸¦ ÀÓÀÇÀÇ À§Ä¡¿¡ ³õÀ» 󸮸¦ ÇÏ´Â ÇÔ¼ö´Â SetSel( ... ) °ú ReplaceSel( ... ) ÀÔ´Ï´Ù.
µÎ ÇÔ¼ö´Â ¸¹ÀÌ »ç¿ëµÇ±â ¶§¹®¿¡ ¾Æ½Ã°í °è½Ã¸®¶ó ¹Ï~~½À´Ï´Ù.
ex) ¿¡µðÆ® ¹Ú½ºÀÇ ¸â¹ö º¯¼ö¸¦ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ »óÅ¿¡¼ ¿¹¸¦ µé¾î °¡¸é¼ ¼³¸íÀ» µå¸³´Ï´Ù.
CEdit º¯¼ö m_editMyBox;
CString º¯¼ö m_strMyBox;
======================================
2. Ä¿¼¸¦ ¸Ç µÚÂÊ¿¡ ³õ±â
======================================
Ä¿¼¸¦ ¸Ç µÚÂÊ¿¡ ³õ´Â ¹æ¹ýÀº ÀÇ¿Ü·Î °£´Ü ÇÕ´Ï´Ù.
UpdateData( TRUE );
//--> Àüü¸¦ ¼±ÅÃ
m_editMyBox.SetSel( 0, -1 );
//--> ÇöÀçÀÇ µ¥ÀÌÅÍ·Î ´Ù½Ã ġȯ
m_editMyBox.ReplaceSel( m_strMyBox );
//--> Æ÷Ä¿½º¸¦ ¿¡µðÆ® ¹Ú½º·Î ¼³Á¤
m_editMyBox.SetFocus();
ÀÌ·¸°Ô ó¸®ÇϽøé Ä¿¼°¡ µ¥ÀÌÅÍÀÇ Á¦ÀÏ ³¡¿¡ ³õÀÏ °Ì´Ï´Ù.
======================================
3. Ä¿¼¸¦ ÀÓÀÇÀÇ ÀÚ¸®¿¡ ³õ±â
======================================
¹æ¹ýÀº ¸¶Âù°¡Áö·Î..SetSel(..) °ú ReplaceSel(...)À» ÀÌ¿ëÇÏ´Â °ÍÀä..
¾î¶² ÇüÅ·ΠÀÀ¿ëÇÒ ¼ö ÀÖ³Ä Çϸé..
SetSel( ½ÃÀÛ À§Ä¡, ³¡ À§Ä¡, ..?? ¾È»ìÆì ºÃÀ½..¼¼¹ø° ÀÎÀÚ)¿¡¼ º¸¸é, ½ÃÀÛ À§Ä¡¸¦ óÀ½(0)À¸·Î ÇÏ°í ³¡ À§Ä¡¸¦ Ä¿¼°¡ ³õÀÌ°íÀÚ ÇÏ´Â À§Ä¡·Î ÁöÁ¤ÇÑ ÈÄ¿¡, ÇöÀçÀÇ µ¥ÀÌÅ͸¦ óÀ½ºÎÅÍ Ä¿¼°¡ ³õÀÌ°íÀÚ ÇÏ´Â À§Ä¡±îÁö ´Ù¸¥ ¹öÆÛ¿¡ º¹»çÇÑ ÈÄ¿¡, ReplaceSel·Î º¹»ç ÇÕ´Ï´Ù.
¼Ò½º Äڵ带 º¸½Ã¸é ´õ ½¬¿ì½Ç °Ì´Ï´Ù.
UpdateData( TRUE );
//--> Ä¿¼°¡ ³õÀÏ À§Ä¡±îÁö º¹»çÇÒ Àӽà ¹öÆÛ(Å©±â´Â??)
char cDataBuf[100];
//--> ¾²·¹±â °ªÀ» ¹æÁöÇϱâ À§ÇØ.. ÃʱâÈ
for( int i=0; i<100; i++ ) cDataBuf[i] =
NULL;
//--- 6¹ø°¿¡ Ä¿¼¸¦ À§Ä¡ÇÏ°í ½ÍÀ» °æ¿ì...
for( i=0; i<6; i++ )
cDataBuf[i] = m_strMyBox[i];
//****º¸Ãæ ¼³¸í.. CString ÇüÀÇ µ¥ÀÌÅÍ °°Àº °æ¿ì¿¡¼****
µ¥ÀÌÅ͸¦ ¿øÇÒ¶§´Â ¹öÆÛ ÇüÅ·Π»ç¿ëÀ» Çϼŵµ µË´Ï´Ù.
À½.. ¹«½¼ ¸»ÀÌ³Ä Çϸé.. Á¦°¡ CString ÇüÀ¸·Î ¼±¾ðµÈ ¸â¹ö º¯¼ö m_strMyBoxÀÇ µ¥ÀÌÅ͸¦ Àӽà ¹öÆÛ¿¡ º¹»çÇÏ´Â °úÁ¤¿¡¼ m_strMyBox[i]¶ó°í »ç¿ëÀ» Çߴµ¥..
m_strMyBox´Â ¿¡µðÆ® ¹Ú½ºÀÇ ¸â¹ö º¯¼öÀ̰ŵç¿ä.
À§¿Í °°Àº ¹æ¹ýÀ» º¹»ç¸¦ Çϼŵµ µÇ°í.. ´Ù¸¥ ¹æ¹ýµµ ÀÖ°ÚÁÒ..
//--> ¿øÇÏ´Â À§Ä¡¸¸Å ÁöÁ¤
m_editTest.SetSel( 0, 6 );
//--> ¹Ù²Ù¸é µÇ°ÚÁÒ.. º¹»çµÈ ³»¿ëÀ¸·Î..
m_editTest.ReplaceSel( cDataBuf );
//--> Æ÷Ä¿½º¸¦ ³õÀ¸¸é.. ³¡..
m_editTest.SetFocus();
ÀÌ·¸°Ô ó¸®Çϸé.. ¿¡µðÆ® ¹Ú½º¿¡¼ Á¦ÀÏ ³¡À̳ª ÀÓÀÇÀÇ ÀÚ¸®¿¡ Ä¿¼¸¦ ³õÀ» ¼ö ÀÖ±º¿ä..
<¸±¸®Áî ¹öÁ¯ ½ÇÇà½Ã ·±Å¸ÀÓ ¿¡·¯ ã¾Æ³»±â>
¸±¸®Áî ¹öÁ¯ ½ÇÇà½Ã ¿¡·¯°¡ ³µÀ» °æ¿ì..Âü °ï¶õÇßÁÒ.
¹°·Ð °í¼ö´Ôµé²²¼¾ß ÀÌ¹Ì ¾Ë°í°è½Ã°ÚÁö¸¸..
³ª¸§´ë·Î ¾öû °¡½¿ÀÌ ¾ÆÆͽÀ´Ï´Ù. µð¹ö±×¸ðµå´Â ±¦ÂúÀºµ¥..¸±¸®Áî´Â ¿¡·¯¸¦ ¶§¸®±¸..¾îµð¼ ³ª´ÂÁöÁ¶Â÷ ¸ð¸£°Ú±¸...±×¶§ ¾µ¸¸ÇÑ ÀëÀÖ´Â ¹æ¹ýÀÔ´Ï´Ù.(¹°·Ð ¸ð¸£´Â ºÐ¿¡ ÇÑÇؼ..^^)
Step 1.
ÇÁ·ÎÁ§Æ® ¼¼Æà µé¾î°¡¸é..
Link¶ó´Â ÅÇ ¼±ÅÃÇؼ..º¸¸é
Generate MapfileÀÌ¶ó±¸ ÀÖÀ»²¨¶ø´Ï´Ù.
°í°É ¼±ÅÃÇؼ ¼¡ µ¹·Áº¸¸é..mapÆÄÀÏÀÌ releaseµð·ºÅ丮¿¡ »ý±âÁÒ.
Step 2.
±×¸®±¸ ³ª¼±..¿¡·¯¸¦ ¸¸µé¾î µ¹·Áº¸°í, ¾î´À ÁÖ¼Ò¿¡¼ ¿¡·¯°¡ ³µ´ÂÁö ĸÃç
±×¸®±¸¼ mapÆÄÀÏ¿¡ ÀÖ´Â ÁÖ¼Ò¶û ¸ÅÄ¡ÇØ º¸´Â°Ì´Ï´Ù.
±×·³ ¾î´À ÇÔ¼ö¿¡¼ ¿¡·¯°¡ ³µ´ÂÁö ¾Ë ¼ö ÀÖÁÒ~
<¸ðµç Top Level Windows ¿¡°Ô ¸Þ¼¼Áö º¸³»±â>
SendMessage ¾Æ½ÃÁ®? °Å±â¿¡¼ HWND ÀÎÀÚ¿¡ HWND_BROADCASTÀ» ³ÖÀ¸¸é,¸ðµç À©µµ¿ì¿¡°Ô ¸Þ¼¼Áö°¡ °£´ä´Ï´Ù..
MFC framework¿¡¼, »ç¿ëÀÚ°¡ frame À©µµ¸¦ ´Ý°ÔµÇ¸é, À©µµ´Â ±âº»ÀûÀ¸·Î OnClose ÇÚµéÀ» call ÇÑ´Ù. OnClose ³»ºÎ¿¡¼´Â DestroyWindow¸¦ È£ÃâÇÑ´Ù. °¡Àå ¸¶Áö¸·À¸·Î È£ÃâµÇ´Â ÇÔ¼ö´Â OnNcDestroyÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ¾à°£ÀÇ Á¤¸®¸¦ ÇÏ´Â ÇÔ¼ö·Î À©µµ¸¦ Á¤¸®Çϱâ À§ÇÏ¿© ±âº»ÀûÀ¸·Î ºÒ·ÁÁö´Â ÇÔ¼ö ÀÌ´Ù. OnNcDestroyÇÔ¼ö ³»ºÎ¿¡¼´Â PostNcDestroyÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
afx_msg OnClose( )
FrameworkÀº CWnd³ª applicationÀ» Á¾·á ½ÃÅ°±â À§Çؼ ÀÌ ÇÔ¼ö¸¦ ¸¶Ä¡ ½Ã±×³¯Ã³·³ È£ÃâÇÑ´Ù. ³»ºÎÀÇ ±âº»ÀûÀÎ ±¸ÇöÀº DestroyWindow¸¦ È£ÃâÇÑ´Ù.
virtual BOOL DestroyWindow( )
Destroy Window ÇÔ¼ö´Â
1) CWnd³»ºÎ¿¡ ÀÖ´Â À©µµ¸¦ destroy ÇÑ´Ù.
2) ¶ÇÇÑ À©µµ¸¦ ÇØÁ¦ÇÏ°í ÀÔ·Â Æ÷Ä¿½º¸¦ Á¦°ÅÇϱâ À§ÇÑ ÀûÀýÇÑ message¸¦ À©µµ¿¡°Ô º¸³½´Ù.
3) À©µµÀÇ ¸Þ´º Á¦°Å
4) application queue¸¦ ºñ¿î´Ù.
5) timer¸¦ Á¦°Å
6) clipboardÀÇ ¼ÒÀ¯ÁÖ Á¦°Å
7) Clipboard-viewer chainÀ» ²÷´Â´Ù. ( CWnd°¡ viewer chainÀÇ ¸Ç À§¿¡ ÀÖÀ» °æ¿ì )
8) WM_DESTROY( OnDestroy )¿Í WM_NCDESTROY( OnNcDestroy ) ¸Þ½ÃÁö¸¦ À©µµ¿¡°Ô º¸³½´Ù.
ÇÏÁö¸¸ ¾ÆÁ÷ CWnd °´Ã¼´Â destroyÇÏÁö ¾Ê´Â´Ù.
ÀÌ ÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵å ÇÏ´õ¶óµµ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ( ¿Ö³Ä¸é ½Ã½ºÅÛÀÌ ¾Ë¾Æ¼ È£ÃâÀ» ÇØÁִϱî..) ¹¹ ±»ÀÌ ÇÏ°í ½Í´Ù¸é Çصµ µÈ´Ù. ¸¸¾à ³»ºÎ¿¡ ÀÚ½Ä À©µµ°¡ ÀÖ´õ¶óµµ °ÆÁ¤ÇÏÁö ¸»ÀÚ ÀڽĵéÀ» ¸ÕÀú destroyÇÑ ´ÙÀ½¿¡ ÀÚ½ÅÀÌ Á×À¸´Ï±î....
afx_msg void OnDestroy()
FrameworkÀÌ CWnd¿¡°Ô ÇöÀç CWnd°¡ ¼Ò¸êµÇ°í ÀÖ´Â ÁßÀ̶ó°í ¾Ë·Á ÁÖ±âÀ§ÇÏ¿© È£Ãâ ÇÑ´Ù. OnDestroyÇÔ¼ö´Â CWnd ÇÔ¼ö°¡ ȸ鿡¼ »ç¶óÁø ´ÙÀ½¿¡ È£ÃâµÈ´Ù.
OnDestroy is called first for the CWnd being destroyed, then for the child windows of CWnd as they are destroyed. It can be assumed that all child windows still exist while OnDestroy runs.
afx_msg void OnNcDestroy()
Client°¡ ¾Æ´Ñ ¿µ¿ªÀÌ destroyµÉ ¶§ Frame work¿¡ ÀÇÇÏ¿© ºÒ·ÁÁö´Â ÇÔ¼öÀÌ´Ù. À©µµ°¡ ¼Ò¸êµÉ¶§ ¸¶Áö¸·À¸·Î ºÒ·ÁÁö´Â ÇÔ¼öÀÌ´Ù. ±âº»ÀûÀ¸·Î ¾à°£ÀÇ Á¤¸®¸¦ ÇÑÈÄ, PostNcDestroy ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ´ë°Ô´Â ÀÌ ÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵å ÇÏÁö ¾ÊÁö¸¸ ¸¸¾à ÇÏ°ÔµÇ¸é ³»ºÎ¿¡¼ »óÀ§ Ŭ·¡½ºÀÇ OnNcDestroy¸¦ È£ÃâÇؾ߸¸ ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸ç³à ³»ºÎÀûÀ¸·Î À©µµ¸¦ À§ÇØ ÇÒ´çµÈ ¸Þ¸ð¸®°¡ freeµÇÁö ¸øÇÑ´Ù.
virtual void PostNcDestroy()
À©µµ°¡ ¼Ò¸êµÈ ÈÄ OnNcDestroyÇÔ¼ö¿¡ ÀÇÇÏ¿© ºÒ·ÁÁö´Â ±âº»ÇÔ¼öÀÌ´Ù. »ç¿ëÀÚµéÀÌ »ó¼Ó¹Þ¾Æ ¸¸µç Ŭ·¡½ºÀÇ Á¤¸®¸¦ À§ÇÑ Äڵ带 »ðÀÔÇÏ¸é µÈ´Ù. ( ex. delete this; )
À§ÀÇ ÇÔ¼ö¸¦ ±×³É ´ëÃæ º¸Áö ¾Ê°í ¼¼½ÉÈ÷ º» »ç¶÷À̶ó¸é ÀÌÁ¦ ÀÚ½ÅÀÌ »ðÀÔÇϱ⸦ ¿øÇÏ´Â Äڵ带 ¾î´ÀºÎºÐ¿¡ »ðÀÔÀ» ÇؾߵǴÂÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·³ ¾Æ·¡ÀÇ ¿¹¸¦ ÅëÇÏ¿© ¾Ë¾Æº¸ÀÚ.
¸ÕÀú View class¿¡¼´Â 3°¡Áö ¼Ò¸ê Çڵ鷯¸¦ Á¦°øÇÑ´Ù. ´ÙÀ½À» º¸ÀÚ.
BOOL CAniView::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base
class
return CView::DestroyWindow();
}
void CAniView::OnDestroy()
{
CView::OnDestroy();
// TODO: Add your message handler code here
}
void CAniView::PostNcDestroy()
{
// TODO: Add your specialized code here and/or call the base
class
CView::PostNcDestroy();
}
À§¿¡ ³ª¿ µÈ ¼ø¼°¡ ¹Ù·Î view°¡ ´ÝÈú ¶§ ºÒ·ÁÁö´Â ¼ø¼ÀÌ´Ù. ¿ì¸®°¡ À¯½ÉÈ÷ »ìÆì º¸¾Æ¾ßÇÒ ºÎºÐÀº TODOÀÇ À§Ä¡ÀÌ´Ù. °ú¿¬ ¾î¶² ÀÌÀ¯¿¡¼ °¢°¢ÀÇ TODOÀÇ À§Ä¡°¡ °áÁ¤ µÇ´Â°¡?
¸¸¾à À©µµ°¡ ¾ø¾îÁö±â Àü¿¡ ÀÛ¾÷À» ÇؾßÇÒ ÀÏÀÌ ÀÖ´Ù¸é 4¹ø Áß¿¡ Äڵ带 »ðÀÔÇÏÀÚ. ¶ÇÇÑ À©µµ°¡ »ç¶óÁø ´ÙÀ½¿¡ ÀÛ¾÷À» ÇØ¾ß ÇÑ´Ù¸é 22¹ø ÁÙ¿¡ »ðÀÔÀ» ÇÑ´Ù. delete this ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù¸é 25¹ø° ÁÙ¿¡ »ðÀÔÇÏÀÚ.
view¿¡¼´Â Á¦°øµÇÁö ¾ÊÁö¸¸ OnClose ÇÔ¼öµµ TODOÀÇ À§Ä¡¸¦ Àá½Ã º¸ÀÚ.
void CAboutDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
CDialog::OnClose();
}
³¡³¯¶§±îÁö ¾î´À ºÎºÐ¿¡¼ ¾î´À Á¤µµÀÇ ½Ã°£ÀÌ °É·È´ÂÁö¸¦ ¾Ë ¼ö°¡ ÀÖ½À´Ï´Ù.. ±âŸ.. ´Ù¸¥ ±â´Éµµ ¸¹ÀÌ ÀÖ±¸¿ä..
¿©·¯±â´ÉÁß¿¡ function timing¸¸ ½áºÃ°Åµç¿ä..
output â¿¡ ³ª¿Â °á°ú¸¦ °£´ÜÈ÷ ½áº¸¸é..
program Statistics
------------------
Command line at 2001 Jan 15
08:51: "D:\myProg\TestApp\PropertyTest\Debug\PropertyTest"
Total time: 2848.924 millisecond
Time outside of functions: 11.820 millisecond
Call depth: 15
Total functions: 141
Total hits: 1868
Function coverage: 51.8%
Overhead Calculated 6
Overhead Average 6
Module Statistics for propertytest.exe
--------------------------------------
Time in module: 2837.104 millisecond
Percent of time in module: 100.0%
Functions in module: 141
Hits in module: 1868
Module function coverage: 51.8%
Func Func+Child
Hit
Time % Time
% Count Function
---------------------------------------------------------
2599.647 91.6 2716.741
95.8 44 CWinThread::PumpMessage(void) (mfc42d.dll)
130.907 4.6 131.192
4.6 207 CWnd::DefWindowProcA(unsigned int,unsigned int,long) (mfc42d.dll)
58.981 2.1 2835.973
100.0 1 CDialog::DoModal(void) (mfc42d.dll)
¾î´À ÇÔ¼ö°¡ ½Ã°£ÀÌ Á© ¸¹ÀÌ °É¸°Áö ³ª¿ÀÁÒ.. ^^;;
ÇÁ·Î±×·¥Â¥´Ù°¡ ³ªÁß¿¡ Çѹø µ¹·Áº¸¸é..
¾î´À ºÎºÐ¿¡¼ ÆÛÆ÷¸Õ½º°¡ ¶³¾îÁö´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ°ÚÁÒ..
Àâ¼³Àº °í¸¸ÇÏ°í..
Project ¸Þ´º Setting¿¡¼ Link ÅÇÀ» ¼±ÅÃÇϸé..
Enable Profiling ¿¡ üũÇϽðí..
Rebuild All ÇϽŠÈÄ¿¡..
Build¸Þ´º Á© ¾Æ·¡¿¡ ProfileÇØÁֽøé..
¼±ÅÃâÀÌ ¶ß´Âµ¥.. ¼±ÅÃÇϽðí
ÇÁ·Î±×·¥ ½ÇÇàÇÑÈÄ¿¡.. Á¾·áÇϸé outputâ¿¡ °á°ú°¡ ³ª¿É´Ï´Ù..
Windows 2000¿¡¼ profile ¸Þ´º°¡ È°¼ºÈµÇÁö ¾ÈµÈ´Ù´Â ºÐÀÌ °è½Ã´Âµ¥ ÇØ°á ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
Visual Studio°¡ ¼³Ä¡µÉ ¶§ Profile°ú °ü·ÃµÈ ·¹Áö½ºÆ®¸® Á¤º¸¸¦ HKEY_CURRENT_USER ¾Æ·¡¿¡ ½á³Ö½À´Ï´Ù. ±×·¡¼ Visual Studio¸¦ ¼³Ä¡ÇÒ ¶§ »ç¿ëÇß´ø °èÁ¤À¸·Î ·Î±×ÀÎÇÏÁö ¾ÊÀ¸¸é profileÀÌ È°¼ºÈµÇÁö ¾Ê½À´Ï´Ù.
À̸¦ ÇØ°áÇÏ·Á¸é VC¸¦ ¼³Ä¡ÇÒ ¶§ Á¢¼ÓÇß´ø °èÁ¤À¸·Î ·Î±×ÀÎÀ» ÇÏ´ø°¡, ¾Æ´Ï¸é ·¹Áö½ºÆ®¸®¿¡ °ªÀ» ½á³Ö¾îÁÖ¸é µË´Ï´Ù. text editor¸¦ ÀÌ¿ëÇÏ¿© a.reg¶ó´Â ÆÄÀÏÀ» ¸¸µé°í ´ÙÀ½ÀÇ ³»¿ëÀ» ³Ö¾îÁÝ´Ï´Ù.
a.regÀÇ ³»¿ë
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\DevStudio\6.0\General]
"ProfilerInstalled"=dword:1
ÀÌ ÆÄÀÏÀ» ´õºíŬ¸¯ÇÏ¸é ·¹Áö½ºÆ®¸®¿¡ °ªÀÌ ½á³Ö¾îÁö°í VC¿¡ profile ¸Þ´º°¡ È°¼ºÈµË´Ï´Ù.
ÀÌ Á¤º¸´Â MSDN¿¡¼ Q224382·Î ã¾Æº¸½Ã¸é µË´Ï´Ù.
¸» ±×´ë·Î ÇÁ·Î±×·¡¹Ö »ó¿¡¼ ÇöÀçÀÇ Çػ󵵸¦ ¿øÇϴµ¥·Î º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
Àü¿ªÇÔ¼ö·Î ChangeDisplaySettings ¶ó´Â ÇÔ¼ö°¡ ÀÖ´õ±º¿ä.
¾Ïµ¥¼³ª ºÒ·¯ ¾µ¼ö ÀÖÁÒ.
ÀÌÀü Çػ󵵸¦ º¸°üÇß´Ù°¡ ´Ù½Ã º¹±ÍÇÒ ¼ö ÀÖµµ·Ï Çغ¸°Ú½À´Ï´Ù.
ÇöÀçÀÇ Çػ󵵸¦ ¾ò¾î¿À´Â ÇÔ¼ö´Â GetSystemMetrics ÀÔ´Ï´Ù.
¸ÕÀú ÇöÀçÀÇ Çػ󵵸¦ ÀúÀåÇÒ º¯¼ö¸¦ ¼±¾ðÇÕ´Ï´Ù.
class CMainFrame : public CMDIFrameWnd
{
/// »ý·«
// Attributes
public:
int screenY;
int screenX;
/// »ý·«
}
ÃʱâÈ´Â ¿ä·¸°Ô..
// ÇöÀç ÇØ»óµµ º¸°ü
screenX = GetSystemMetrics(SM_CXSCREEN) ;
screenY = GetSystemMetrics(SM_CYSCREEN) ;
ÀÎÀÚ·Î ¹ÞÀº Çػ󵵷Πº¯°æÇÏ´Â ÇÔ¼ö¸¦ ¸¸µì´Ï´Ù.
void CMainFrame::ChangeDisplay(int Width, int Height)
{
DEVMODE mode ;
mode.dmBitsPerPel = 16; // 16ºñÆ® Ä®¶ó·Î
º¯°æ
mode.dmPelsWidth = Width;
mode.dmPelsHeight = Height;
mode.dmFields = DM_BITSPERPEL
| DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&mode, CDS_FULLSCREEN );
ShowWindow( SW_SHOWMAXIMIZED );
}
Àü 16ºñÆ® Ä®¶ó·Î¸¸ º¯°æÇϵµ·Ï Çߴµ¥, Àú°ÍµÎ ÀÎÀÚ·Î ¹Þ¾Æ¼ ó¸®ÇÏ¸é ¿øÇÏ´Â Ä®¶ó·Î ¹Ù²Ü¼ö ÀÖ°ÚÁÒ??? ±×¸®±¸ ¿øÇÏ´Â °÷¿¡¼ ÇÔ¼ö¸¦ È£Ãâ~~~
// 1024 x 768 ·Î º¯°æ
((CMainFrame*)AfxGetMainWnd())->ChangeDisplay(1024,
768) ;
ÇÁ·Î±×·¥ÀÌ Á¾·áÇÒ¶§ ÀÌÀü Çػ󵵷Πº¹±ÍÇϵµ·Ï ÇØ¾ß °ÚÁÒ? ÀÌ°Ç DestroyWindow() ¿¡¼ ó¸®ÇÏ¸é µË´Ï´Ù.
BOOL CMainFrame::DestroyWindow()
{
if(screenX != GetSystemMetrics(SM_CXSCREEN) ||
screenY != GetSystemMetrics(SM_CYSCREEN))
ChangeDisplay(screenX, screenY)
;
return CFrameWnd::DestroyWindow();
}
ÀÌÀü Çػ󵵸¦ ÀúÀåÇص×À¸´Ï±î ±×°É·Î ´Ù½Ã º¹±ÍÇÑ°ÅÁÒ.
¾ÏÆ°, À§¿¡¼Ã³·³ ÀÛ¾÷ÇÏ¸é ¿øÇÏ´Â Çػ󵵷Πº¯°æ½ÃÄѼ ÀÛ¾÷ÇÒ ¼ö ÀÖÁÒ.
Âü, µµ¿ò¸»À» µÚÁ®º¸´Ï±ñ À©µµ¿ì ¸Þ½ÃÁöÁß¿¡ WM_DISPLAYCHANGE ¶ó´Â°Ô ÀÖ´õ±º¿ä.
±Ùµ¥ ÀÌ ¸Þ½ÃÁö´Â Ŭ·¡½ºÀ§Àúµå¿¡ µé¾îÀÖÁú ¾Ê³×¿ä.
99999999WM_DISPLAYCHANGE ¸Þ¼¼Áö´Â Á÷Á¢ È£ÃâÇÒ ¼ö´Â ¾øÀ» °Ì´Ï´Ù.
´Ù¸¸ OS°¡ ȸé Çػ󵵰¡ º¯°æµÇ¾úÀ» ¶§ ¸ðµç Window¿¡°Ô·Î
º¸³»ÁÖ´Â MessageÀÏ °Ì´Ï´Ù.
ÇØ»óµµ º¹¿ø½Ã¿¡ º¯¼ö·Î Çػ󵵸¦ °¡Áö°í ÀÖ´Ù°¡ º¹¿øÇÒ ÇÊ¿ä ¾øÀÌ ±×³É
ChangeDisplaySettings(NULL, 0);
À̶ó°í¸¸ Çϸé È¸é º¹¿ø µË´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÇØ»óµµ º¯°æ¸¸ ÇÏÁö µð½ºÇ÷¹ÀÌ
µî·ÏÁ¤º¸ ÀÚü¸¦ ¹Ù²ÙÁø ¾Ê±â ¶§¹®¿¡ À§ ¹æ½Ä´ë·Î ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µð½ºÇ÷¹ÀÌ
µî·ÏÁ¤º¸¿¡ ÀÖ´Â Çػ󵵷Π±×´ë·Î ¹Ù²ãÁֱ⠶§¹®¿¡ ´õ ¾ÈÁ¤ÀûÀÔ´Ï´Ù.
¿øÇÏ´Â Çػ󵵸¦ ¸ð´ÏÅÍ°¡ ¹Þ¾ÆÁÙ¼ö ÀÖ´ÂÁö Å×½ºÆ® ÇÏ½Ã°í ¹Ù²ã¾ßÁÒ.
±× ºÎºÐÀÌ ºüÁ³±º¿ä.
EnumDisplaySettings¸¦ ÀÌ¿ëÇÏ½Ã¸é µË´Ï´Ù.
1) OnDraw ¿Í InvalidateRect ÀÌ¿ë
VC++ ¿¡´Â BasicÀÇ CLS ¸í·É°ú °°Àº °£´ÜÈ÷ ȸéÀ» Áö¿ì´Â ¸í·ÉÀÌ ¾ø½À´Ï´Ù. À̶§¹®¿¡ ´ÙÀ½°ú °£Àº ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¸é
CDC::Rectangle(x1,y1,x2,y2);
À¸·Î »ç°¢ÇüÀ» ±×¸°ÈÄ ¾ÈÀ» ¹è°æ»öÀ¸·Î ¸ðµÎ ä¿ì¸é Áö¿î °Í°ú °°Àº È¿°ú¸¦ ³»°Ô µË´Ï´Ù. windows´Â ¿Ü°ü»ó ȸ鿡 ¹®ÀÚÃâ·ÂÀÌ µÇ¾î À־ ³»ºÎÀûÀ¸·Î´Â ¸ðµÎ À̹ÌÁö¸¦ ±×¸®±â ¶§¹®¿¡ ÀÌ ¸í·ÉÀ¸·Î ȸéÀ» Áö¿ï¼ö°¡ ÀÖ½À´Ï´Ù.
OnDraw ÇÔ¼ö¿Í InvalidateRect ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Îµµ °£´ÜÇÏ°Ô È¸éÀ» Áö¿ï¼ö ÀÖ½À´Ï´Ù.
1 OnDraw ÇÔ¼ö¿¡ if¹®À» ³ª´©¾î ³õ¾Æ¼ ¾Æ¹« °Íµµ Ç¥½ÃÇÏÁö ¾Ê´Â ±â´ÉÀ» ³Ö½À´Ï´Ù.
2 CWnd::GetclientRect ÇÔ¼ö¿¡¼ Ŭ¶óÀ̾ðÆ® ¿µ¿ª Å©±â¸¦ ¾Ë¾Æ ³½´Ù.
3 ±× Å©±â¸¦ ÆĶó¹ÌÅÍ·Î ÇÏ¿© InvalidateRect ÇÔ¼ö¸¦ ½ÇÇàÇÏ¸é µË´Ï´Ù.
±×·³ Á»´õ ÀÚ¼¼È÷ ¾Ë¾Æ º¸±â·Î ÇÏ°Ú½À´Ï´Ù.
CRect myRECT; //
x1,y1,x2,y2 Á¤º¸¸¦ ÁöÁ¤ÇÏ´Â ¿ÀºêÁ§Æ®¸¦ È®º¸
GetClientRect(&myRECT); //
Ŭ¶óÀ̾ðÆ® ¿µ¿ªÀÇ x1,y1,x2,y2¸¦ myRECT¿¡
¼³Á¤.
InvalidateRect(&myRECT); // ÀÌ »ç°¢Çü ¿µ¿ªÀ» ´Ù½Ã ±×¸®±â ¼³Á¤
ÀÌ Ã³¸®´Â Ŭ¶óÀ̾ðÆ® ¿µ¿ª ÀüüÀÇ Å©±â¸¦ myRECT¿¡ ¼³Á¤ÇÏ¿© ±× myRECT¿¡¼ ³ªÅ¸³»´Â ¹üÀ§¸¦ ´Ù½Ã ±×¸®°í ÀÖ½À´Ï´Ù. Ȥ½Ã ºÎºÐÀûÀ¸·Î ´Ù½Ã ±×¸®±â¸¦ ÇÑ´Ù¸é,
myRECT.SelRect(0,0,200,200);//Ŭ¶óÀ̾ðÆ® ¿µ¿ªÀÇ (0,0,)-(200,200)À» ÁöÁ¤
9InvalidateRect(&myRECT);//±× »ç°¢Çü ¿µ¿ªÀ» ´Ù½Ã ±×¸®±â ÁöÁ¤.
°ú °°ÀÌ ÇÏ¸é µÇ±¸¿ä, ´õ¿íÀÌ "Ŭ¶óÀ̾ðÆ® ¿µ¿ª¸¸"À» Áö¿ì·Á°í ÇÒ¶§¿¡´Â »çÀü¿¡ Å©±â¸¦ ¾Ë¾Æ ³õÁö ¾Ê´õ¶óµµ ´ÙÀ½°ú °°ÀÌ ¾ÆÁÖ °£´ÜÇÏ ¹æ¹ýÀ¸·Î Áö¿ï¼ö ÀÖ½À´Ï´Ù.
InvalidateRect(NULL);
2) ExtTextOut ÀÌ¿ë
Á¦°¡ ¾Ë°í ÀÖ±â·Ð ȸé Áö¿ì´Â ¹æ¹ý Áß¿¡¼ °¡Àå ºü¸¥ °É·Î ¾Ë°í ÀÖ½À´Ï´Ù.
óÀ½Àº ¶È°°½À´Ï´Ù.
CRect mRect;
GetClientRect(&mRect);
ÀÌ ´ÙÀ½ InvalidateRect°¡ ¾Æ´Ñ.. ExtTextOutÀ» ¾¹´Ï´Ù.
ÅؽºÆ®ÀÇ ¹é±×¶ó¿îµå »ö±òÀ» Ä¥ÇÏ°í ½ÍÀº ȸé»ö±ò·Î Á¤ÇÏ°í, ºó¹®ÀÚ¿À» ¾²¶ó´Â °Ì´Ï´Ù. Áï(ÆĶó¹ÌÅÍ·Î CDC *pDC¸¦ ¹Þ´Â´Ù´Â °¡Á¤ÇÏ¿¡)
pDC->SetBkColor(ÇÊ¿äÇÑ »ö±ò);
pDC->ExtTextOut(mRect.left, mRect.top, ETO_OPAQUE, &mRect, "",
0, NULL);
ÀÌ·¸°Ô ºó¹®ÀÚ¿À» Á×~ ¶óÀÌÆÃÇÏ¸é ¹®ÀÚ¿ÀÇ ¹è°æ»öÀ¸·Î¸¸ Ä¥ÇØÁý´Ï´Ù.
¸»ÇÏÀÚ¸é ȸéÀ» Áö¿ì´Â È¿°úÀÌÁÒ.
µðÆúÆ®¸¦ »ç¿ëÇϽðڴٸé SetBkColor´Â »ç¿ëÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.
ȸéÀ» ´ÜÀÏ»öÀ¸·Î Áö¿ì´Âµ¥´Â ±× ÀÌ»ó ºü¸¥ ¹æ¹ýÀÌ ¾øÁÒ.
MFCÀÇ CDC::FillSolidRectµµ ³»ºÎ ¼Ò½º¸¦ º¸¸é ExtTextOutÀ» »ç¿ëÇÕ´Ï´Ù.
´Ù¸¸ ExtTextOutÀ¸·Î »ç°¢ÇüÀ» Ä¥ÇßÀ» ¶§´Â DCÀÇ ¹è°æ»öÀÌ ¹Ù²ï´Ù´Â »ç½ÇÀ» ÀØÀ¸¸é ¾ÈµË´Ï´Ù.
3) PatBlt ÀÌ¿ë
WM_PAINT¿¡¼
CPaintDC dc(this);
CRect rect;
GetClientRect(rect);
dc.PatBlt(0, 0, rect.Width(), rect.Height(), WHITENESS);
- the end of this article -