BLOG ARTICLE accelerator | 1 ARTICLE FOUND

  1. 2007.01.07 리소스

리소스

programming/API 2007. 1. 7. 14:21
1. 윈도우즈 환경에서 리소스를 만드는 과정과 코딩과정이 분리되면 얻는 장점
  가. 분담 작업으로 전문성을 높임, 개발과 디자인을 동시에 수행함으로써 전체적인 개발 기간 단축효과
  나. 재사용에 유리
  다. 모듈 분할 컴파일 방식의 장점과 같이 매번 컴파일할 필요가 없음
  라. 실행중에 교체가 가능한 모듈임

2. 리소스 편집기들은 리소스 ID에 겹따옴표없이 IDR_MENU1 식으로 이름을 지정하면 이 이름을
  resource.h에 정수형의 매크로로 정의하고 사용되지 않은 정수를 배정한다. 정수 타입의 리소스 ID를
  문자열 포인터에 대입할 수 없으므로 적당히 캐스팅해야 하는데 이 캐스팅을 대신하는  매크로가
  MAKEINTRESOURCE 이다
  ( #define MAKEINTRESOURCE(i)    (LPSTR)((DWORD)((WORD)(i))) )

3. WM_COMMAND
  가. 메뉴 항목을 선택하면 WM_COMMAND 메시지가 발생
  나. 어떤 메뉴 항목이 선택되었는가는 WPARAM의 하위 워드로 전달되므로 LOWORD(WPARAM)을 읽어
    판단
  다. WndProc에서는 WM_COMMAND 메시지를 받을 경우 switch 문으로 다시 LOWORD(WPARAM)의
    값에 따라 분기를 하여 각 메뉴 항목에 따른 처리를 수행

4. Accelerator
  가. 설정 기능을 곧바로 실행하는 키보드 조합키
  나. HACCEL LoadAccelerators(HINSTANCE hInstance, LPCTSTR lpTableName);
    리소스로부터 엑셀러레이터 테이블을 읽어들이며 그 핸들을 리턴
  다. int TranslateAccelerator(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg);
    키보드 메시지를 WM_COMMAND 메시지로 변경하여 액셀러레이터가 동작할 수 있도록 함

5. 문자열 테이블
  가. 대량의 문자열을 사용하는 프로그램은 리소스에 문자열을 정의해 놓고 필요할 때마다
    리소스의 문자열을 읽어와 사용(최대 4K까지의 길이를 가질 수 있음)
  나. int LoadString(HINSTANCE hInstance, UINT uID, LPTSTR lpBuffer, int nBufferMax);
    hInstance가 정의하고 있는 uID 문자열을 길이 nBuffexMax의 lpBuffer 문자 배열로 읽어오라는 뜻)
  다. 장점
    1) 문자열 자체가 코드와 분리됨으로써 문자열만 따로 관리할 수 있으며 프로젝ㅌ를 유지하는데 도움
    2) 많은 문자열을 다루는 대형 프로젝트에는 메시지만을 전문적으로 관리하는 사람이 따로 있어
      문체의 일관성 확보와 메시지의 내용을 정확하게 할 수 있으며 수정하기도 편리
    3) 다국어 버전을 쉽게 만들 수 있으며 문자열을 고쳐도 소스를 다시 컴파일 할 필요가 없어
      개발 속도가 빨라진다.
AND