달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2008. 5. 14. 09:55

프로젝트 ListUp 양식 Team BlueFish2008. 5. 14. 09:55


프로젝트를 진행하다보면 기획, 설계, 수행 단계로 볼 수 있는데
그러한 것들을 작성하는 방법을 알아야 한다

명시화 된 문서는 아니지만
일 진행하는데 있어서 이런식으로 설계 후 진행한다면
다른이에게 보여주기도 좋고, 나도 보기 좋고..
(윗사람한테 꾸사리 덜 먹기 위한 좋은 꽁수이다 -ㅂ-;)

:
Posted by Lunaness
BOOL CFileManagerDlg::PreTranslateMessage(MSG* pMsg)
{
 if( pMsg->hwnd == m_List_Explorer.m_hWnd )
 {
  if(pMsg->message == WM_KEYDOWN)
  {
   if(::GetKeyState(VK_CONTROL) < 0 && pMsg->wParam == 'A')
   {
    for (int i=0; i<m_List_Explorer.GetItemCount(); i++)
     m_List_Explorer.SetItemState(i, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
     
    return TRUE;
   }
  }
 }
 
 return CDialog::PreTranslateMessage(pMsg);
}

대략 이런식이다...
:
Posted by Lunaness
루프문을 이용해서 처리를 하다보면
부득이하게 루프문을 강제 종료시켜야 할 때가 있다

내부적으로 처리하다가 FALSE뜨면 종료되겠지만
그게 아니라면 사용자가 직접 루프문 탈출을 걸어줘야 하는데
처리량이 많은 루프문이면 키보드 입력 이벤트를 감지 못한다

그때 이걸 쓰자

for (;;)
{
     if (GetAsyncKeyState(VK_ESCAPE)) break;
     /* 처리할 것 들 */
}


간단한 게임들이 대부분 이걸 쓴다고 한다;

뭐 복잡찬란한 프로그램들은 Direct Input을 쓴다는데....
여기서는 그건 필요 없으니 Pass~!

무조건 탈출하게 되어있지만, 조금만 수정하면 1회 진행까지는 하게 할 수 있다

BOOL bLoop = TRUE;
while(bLoop)
{
     if (GetAsyncKeyState(VK_ESCAPE)) bLoop = FALSE;
     /* 처리할 것 들 */
}

중지 명령이 떨어져도 하던건 마무리 하고 종료한다

Do~While 써도 된다고 하는데 뭐...
그거야 생각대로 하면 되고~
:
Posted by Lunaness