<Űº¸µå·Î ¸¶¿ì½º Ä¿¼­ ¿òÁ÷À̱â>

 Á¦¸ñ ±×´ë·Î Űº¸µå·Î ¸¶¿ì½º Ä¿¼­¸¦ ¿òÁ÷ÀÌ´Â ÄÚµåÀÔ´Ï´Ù. CView¿¡¼­ OnKeyDown ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ °íÄ¡¸é µË´Ï´Ù.

void CCGhostView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
        // TODO: Add your message handler code here and/or call default
        CPoint ptCurPos;   // ÇöÀç Ä¿¼­ÀÇ À§Ä¡
        if(::GetCursorPos(&ptCurPos)) { // ÇöÀç Ä¿¼­ À§Ä¡¸¦ ¾ò´Â´Ù. (½ºÅ©¸° ÁÂÇ¥)
                switch(nChar) { // ۰ª(nChar)¿¡ µû¶ó »õ·Î¿î Ä¿¼­ À§Ä¡ ¼³Á¤
                case VK_LEFT :
                        ptCurPos.x -= 30;
                        ::SetCursorPos(ptCurPos.x, ptCurPos.y);
                        break;
                case VK_RIGHT :
                        ptCurPos.x += 30;
                        ::SetCursorPos(ptCurPos.x, ptCurPos.y);
                        break;
                case VK_UP :
                        ptCurPos.y -= 30;
                        ::SetCursorPos(ptCurPos.x, ptCurPos.y);

                        break;
                case VK_DOWN :
                        ptCurPos.y += 30;
                        ::SetCursorPos(ptCurPos.x, ptCurPos.y);
                        break;
                }
        }
        CView::OnKeyDown(nChar, nRepCnt, nFlags);
}

 

<ÆÄÀÏ µî·ÏÁ¤º¸ º¸¿©ÁÖ±â>

 ¾Æ¹« ÆÄÀÏÀ̳ª, ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ´­·¯ µî·ÏÁ¤º¸¸¦ ½ÇÇàÇÏ¸é ³ª¿À´Â µî·ÏÁ¤º¸ âÀÖÁÒ? ¹Ù·Î ÀÌ°É µ¿ÀÛÇÏ°Ô ÇØÁÖ´Â ·çƾÀÔ´Ï´Ù. ´ÙÀ½Àº µî·ÏÁ¤º¸¸¦ Ãâ·ÂÇØÁÖ´Â ¼Ò½ºÀÔ´Ï´Ù.

  void ShowFileInfo( String FileName )
  {
       SHELLEXECUTEINFO  ExecInfo;
       memset( &ExecInfo, 0, sizeof(SHELLEXECUTEINFO) );
       ExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
       ExecInfo.hwnd   = Handle;
       ExecInfo.lpFile = FileName.c_str();
       ExecInfo.lpVerb = "properties";
       ExecInfo.fMask  = SEE_MASK_INVOKEIDLIST;
       ShellExecuteEx( &ExecInfo );
  }

 

<ÀÛ¾÷Ç¥½ÃÁÙ¿¡¼­ ÇÁ·Î±×·¥ ¼û±â±â>

 ´ÙÀ½Àº ÇÁ·Î±×·¥À» ÀÛ¾÷Ç¥½ÃÁÙ¿¡¼­ ¼û±â´Â ¹æ¹ýÀÔ´Ï´Ù.

  ShowWindow( Application.Handle, SW_HIDE );

 

<¿©·¯°¡Áö ½Ã½ºÅÛ Á¾·á ±â¹ý>

  ExitWindowsEx(EWX_FORCE,   0);     // °­Á¦ Á¾·á
  ExitWindowsEx(EWX_LOGOFF,  0);     // ·Î±× ¿ÀÇÁ
  ExitWindowsEx(EWX_POWEROFF,0);    // ¼Ë´Ù¿îÈÄ ½Ã½ºÅÛ ²ô±â
  ExitWindowsEx(EWX_REBOOT,  0);     // ÀçºÎÆÃ
  ExitWindowsEx(EWX_SHUTDOWN,0);   // ¼Ë´Ù¿î

 

<¹öưÀ¸·Î ÇØ´ç À©µµ¿ì Á¾·áÇϱâ>

 Visual C++ recodeview È­¸é¿¡¼­ ¹öưÀ¸·Î ÇØ´ç È­¸éÀ» Á¾·áÇϰíÀÚ ÇÒ ¶§ ´ÙÀ½°ú °°ÀÌ ±¸ÇöÇÏ¸é µÇ¿ä.

  /*******************************************************/
  /* ClassWizard·Î CTestApp Ŭ·¡½º¿¡¼­ ID_APP_EXIT·Î   */
  /* COMMAND Message¸¦ ¸¸µé°í °Å±â¿¡ ¾Æ·¡¿Í °°ÀÌ ±â¼ú */
  /*******************************************************/

  void CInfoApp::OnAppExit()
  {
       m_pMainWnd->SendMessage(WM_CLOSE);
  }

  /****************************************************/
  /* Á¾·á ¹öưÀÇ À̺¥Æ®¿¡ ´ÙÀ½°ú °°ÀÌ ±â¼ú */
  /****************************************************/

  void CTestView::OnExit()
  {
       CTestApp *App = (CTestApp*)AfxGetApp();
       App->OnAppExit();
  }

 

<¸®½ºÆ®¹Ú½º ¿£ÅÍó¸®>

  ÀÌ°Ç PreTranslateMessage(MSG* pMsg) ¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù.

  BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
  {
       if( (pMsg->message == WM_KEYDOWN) && (pMsg->wParam == 13) &&
          (pMsg->hwnd == ::GetDlgItem(GetSafeHwnd(),IDC_LIST_BOX)) )
                // ±×¸®°í ³ª¼­ ¿©±â ¾Æ·¡ÁÙ¿¡ ½ÇÇà½Ãų ÇÔ¼ö¸íÀ» Àû¾îÁÖ¸é µË´Ï´Ù.
               // ¿¹À»µé¾î SetData();¶ó¸é..
               SetData();
  }

  void CTestDlg::SetData()
  {
    /// ¸®½ºÆ®¹Ú½ºÀÇ ¼±ÅÃµÈ ¾ÆÀÌÅÛ°¡Áö°í Á¶ÀÛÇÏ´Â ÇÔ¼ö
    /// »ç¿ëÀÚ°¡ ¸¸µé¾î¾ß °ÚÁö¿ä.
  }

  ´Ù¸¥ ÄÁÆ®·Ñµéµµ ÀÌ·±½ÄÀ¸·Î ÇÏ½Ã¸é µË´Ï´Ù
  

 

<ºäÀÇ ¹è°æ»ö ¹Ù²Ù±â>

 ´ÙÀ½ÀÇ µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ÆíÇÑ´ë·Î ¼±ÅÃÇÏ¸é µË´Ï´Ù. È¿°ú´Â °°½À´Ï´Ù.

1. PreCreateWindowÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù..

BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)
{
     // TODO: Modify the Window class or styles here by modifying
     // the CREATESTRUCT cs
     cs.lpszClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,
                    LoadCursor(NULL, IDC_ARROW),
                    (HBRUSH)GetStockObject(BLACK_BRUSH),
                    LoadIcon(NULL, IDI_APPLICATION));

     return CView::PreCreateWindow(cs);
}

2. WM_ERASEBKGND ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù..

BOOL CTestView::OnEraseBkgnd(CDC* pDC)
{
     CBrush backBrush(RGB(255, 255, 255)); // <- Èò»öÄ®·¯·Î.
     CBrush* pOldBrush = pDC->SelectObject(&backBrush);
     CRect rect; pDC->GetClipBox(&rect);
     pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
     pDC->SelectObject(pOldBrush);
     return TRUE;
}

 

<´ëÈ­»óÀÚ¿¡ ºñÆ®¸Ê ¿Ã¸®±â>

¾Æ½±°Ôµµ CDC::DrawBitmapÀ̶õ ÇÔ¼ö´Â ¾ø½À´Ï´Ù. ºñÆ®¸Ê ÀÚ¿øÀ» Ãâ·ÂÇÏ·Á¸é ºñÆ®¸ÊÀ» ÀоîµéÀ̰í, Ãâ·Â ÀåÄ¡¿Í ȣȯµÇ´Â ¸Þ¸ð¸® ÀåÄ¡ ÄÁÅØ½ºÆ®¸¦ »ý¼ºÇØ¾ß ÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ºñÆ®¸ÊÀ» ÀåÄ¡ ÄÁÅØ½ºÆ®·Î ¼±ÅÃÇϰí, ÀåÄ¡ ÄÁÅØ½ºÆ®¸¦ Ãâ·Â ÀåÄ¡·Î Àü¼ÛÇÕ´Ï´Ù. ±×·¯¸é ÁÂÃø »ó´Ü ±¸¼®¿¡ ºñÆ®¸ÊÀ» ¿Ã·Á³õÀ» ¼ö ÀÖ½À´Ï´Ù.

  void CSample::OnPaint(){
     CPaintDC dc(this); // Ãâ·Â¿¡ ÇÊ¿äÇÑ ÀåÄ¡ ÄÁÅØ½ºÆ®
     CDC dcMem;
     //ºñÆ®¸Ê ÀÚ¿øÀ» Àд´Ù.
     CBitmap bitmap;
     bitmap.LoadBitmap(IDB_BITMAP)
     //Ãâ·Â ÀåÄ¡¿Í ȣȯµÇ´Â ¸Þ¸ð¸® ÀåÄ¡ ÄÁÅØ½ºÆ®¸¦ »ý¼ºÇÑ´Ù.
     dcMem.CreateCompatibleDC(&dc)
     //ºñÆ®¸ÊÀ» ¸Þ¸ð¸® ÀåÄ¡ ÄÁÅØ½ºÆ®·Î ¼±ÅÃÇÑ´Ù.
     CBitmap* pOldBitmap = dcMem.SelectObject(&stBitmap)
     //ºñÆ®¸ÊÀÇ Å©±â¸¦ ±¸ÇÑ´Ù.
     BITMAP stBitmap;
     bitmap.GetObject(sizeof(BITMAP), &stBitmap);
     //Ãâ·Â ÀåÄ¡¿¡ ºñÆ®¸ÊÀ» ±×¸°´Ù.
     dc.BitBlt(0, 0, stBitmap.bwWidth stBitmap.bmHeight, &dcMem, 0, 0, SRCCOPY);
     //¸Þ¸ð¸® ÀåÄ¡ ÄÁÅØ½ºÆ®ºÎÅÍ ÄÁÅØ½ºÆ®·ÎºÎÅÍ ºñÆ®¸ÊÀ» ²¨³½´Ù.
  }

 

< ´ÙÀ̾ó·Î±× ¸®¼Ò½º´ë·Î Æûºä Å©±â ¼³Á¤Çϱâ>

OnInitialUpdate ¸â¹ö ÇÔ¼ö¿¡ ´ÙÀ½ µÎ ¶óÀÎÀ» ÷°¡ÇÑ´Ù.

 ResizeParentToFit() ÇÔ¼ö¸¦ µÎ ¹ø È£ÃâÇÏ¿´´Âµ¥, ù ¹øÂ° È£ÃâÀº ºä°¡ È®ÀåµÇµµ·Ï ÇϱâÀ§ÇÑ °ÍÀ̸ç, µÎ ¹øÂ° È£ÃâÀº ºäÀÇ Å©±â°¡ ´ÙÀ̾ó·Î±× ¸®¼Ò½º¿¡ ¸Â°Ô Ãà¼ÒµÇµµ·Ï Çϱâ À§ÇÑ °ÍÀÌ´Ù.

 

< CD, Ç÷ÎÇǵîÀÇ µð½ºÅ© »ðÀÔ ÀÚµ¿ ÆÇ´Ü·çƾ>

    À©µµ¿ìÁî Ä¿¸Ç´õ³ª, Ž»ö±âµîÀ» »ç¿ëÇÏ´Ùº¸¸é µð½ºÅ©¸¦ ³Ö°Å³ª »°À» ¶§, ÀÌ°É °¨ÁöÇϰí ÀÚµ¿À¸·Î ÀڷḦ °»½ÅÇØÁÖÁÒ?

  º¸Åë ÇÁ·Î±×·¥ ÀÚüÀûÀ¸·Î ŸÀ̸Ӹ¦ µ¹·Á¼­ °¨ÁöÇÏ´Â ¼öµµ ÀÖ°ÚÁö¸¸, À©µµ¿ìÁî Ä¿¸Ç´õó·³ ÇÁ·Î±×·¥ÀÌ È°¼ºÈ­µÉ¶§¸¸ °¨ÁöÇϵµ·Ï ÇÏ´Â ÆíÀÌ ÁÁÀ» °Í °°³×¿ä. ^^

  ´ÙÀ½Àº µð½ºÅ©°¡ ÀÖ´ÂÁö À¯¹«¸¦ ÆÇ´ÜÇÏ´Â ·çƾÀÔ´Ï´Ù. À̸¦ ÀÌ¿ëÇØ¼­ ÀÌÀü¿¡ µð½ºÅ©°¡ ÀÖ¾ú´Âµ¥, °Ë»ç°á°ú ¾ø¾ú´Ù¸é µð½ºÅ©¸¦ »©³½°ÍÀ̰í, ±×¿Í ¹Ý´ë·Î ¾ø¾ú´Ù°¡ °Ë»ç°á°ú ÀÖ´Ù¸é »ðÀÔÇÑ °ÍÀ̰ÚÁö¿ä.

  < ÇÔ¼ö ¼³¸í >
  DriveIndex : °Ë»çÇϰíÀÚ ÇÏ´Â µå¶óÀÌºê ¹øÈ£ÀÔ´Ï´Ù.
              Aµå¶óÀ̺ê´Â 0, Bµå¶óÀ̺ê´Â 1, Cµå¶óÀ̺ê´Â 2.. ¼øÀÔ´Ï´Ù.
  ¹Ýȯ°ªÀº µð½ºÅ©°¡ ÀÖÀ¸¸é true, ¾øÀ¸¸é false¸¦ ¹ÝȯÇÕ´Ï´Ù.

  bool CheckDriveNotify( int DriveIndex )
  {
  char  *DriveName = "X:\\";
  DriveName[0] = 'A' + DriveIndex;
  return  SetCurrentDir( DriveName );
  }