^(코딩캣)^ = @"코딩"하는 고양이;

HLP 형식의 윈도우 도움말 제작하기 #5 [完]

Microsoft Windows/Win32 도움말 연동
2018. 11. 19. 18:06

HLP 형식의 윈도우 도움말 제작하기


본 시리즈에서는 윈도우 도움말 형식 중 하나인 HLP 형식의 도움말을 생성하기 위한 방법에 대해 정리한다. 참고로 HLP 파일은 Windows XP까지만 열기가 지원된다.

  1. HLP 형식의 윈도우 도움말 제작하기 #1
  2. HLP 형식의 윈도우 도움말 제작하기 #2
  3. HLP 형식의 윈도우 도움말 제작하기 #3
  4. HLP 형식의 윈도우 도움말 제작하기 #4
  5. HLP 형식의 윈도우 도움말 제작하기 #5 [完]

HLP 형식의 윈도우 도움말 제작하기 #5 (완결)


HLP 도움말은 Windows 3.1부터 Windows XP까지 지원하던 도움말 형식으로서, 내부적으로는 여러개의 RTF 문서 파일로 이루어져 있다. Windows Vista 이후에 출시되는 Windows 운영체제(Vista, 2008, 7, 2010, 8, 2012, 8.1, 10, ...)에서는 공식적으로 지원하지는 않는다. 이번 시리즈에서는 HLP 도움말을 제작하고, WinAPI에서 이를 불러오는 방법까지 알아보겠다.

준비물: 1. Windows XP 또는 그 이전 버전 운영체제, 2. Microsoft Word (아무 버전이나), 3. Microsoft Visual Studio 6.0

 

WinAPI에서 hlp 도움말 호출하기


WinAPI에서 .hlp 파일 내의 내용을 띄워주기 위해서는 .hlp 파일을 구성하는 각 파일마다 프로그램적으로 구분 가능한 일련번호가 부여되어야 한다. 프로젝트 화면에서 [Map...] 버튼을 누른다. "Map" 대화상자가 뜨면 [Add...] 버튼을 눌러 "App Map Entry" 대화상자를 연다.

"Topic ID:"에는 .rtf 파일에서 '#' 각주로 지정한 문서의 ID를 적고, "Mapped numeric value:"에는 .hlp 파일 내에서 중복되지 않는 유일한 값을 임의로 부여한다. "Comment:"에는 간단한 설명을 붙일 수 있다.

 

프로젝트 화면에 [MAP] 항목이 새로 나타나면서 위에서 적었던 내용들이 나타난다면 컴파일한다.

 

여기서부터는 코딩이 시작된다. Visual C++를 실행한다. Win32 Application을 선택하여 새로 만든다.

 

소스 파일이 있는 경로와 출력 파일(.exe 파일)이 있는 경로에 각각 Help Workshop에서 만든 .cnt 파일과 .hlp 파일을 붙여넣는다.

 

WinAPI로 버튼을 하나 만든 다음, 버튼을 클릭 시 메시지를 처리하는 부분에서 아래의 함수를 호출해본다.

WinHelp(소유주가 되는 창의 핸들, TEXT(".hlp파일명"), HELP_CONTEXT, 보여줄 문서의 일련번호);

 

이 함수의 원형은 다음과 같다. 성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환한다.

BOOL WinHelp(
    HWND      hWndMain,
    LPCTSTR   lpszHelp,
    UINT      uCommand,
    ULONG_PTR dwData
);

 

만일 이 함수를 C# 언어에서 사용하고자 하면, 다음과 같이 외부함수를 정의한다. 아래의 정의는 MS의 공식적인 변환은 아니며 소스코드의 특성에 따라 커스터마이징이 가능하다.

[DllImport("user32.dll", CharSet=CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool WinHelp(
    [MarshalAs(UnmanagedType.SysInt)] IntPtr hWndMain,
    [MarshalAs(UnmanagedType.LPTStr)] string lpszHelp,
    [MarshalAs(UnmanagedType.SysUInt)] int uCommand,
    [MarshalAs(UnmanagedType.SysInt)] IntPtr dwData
);

 

첫 번째 매개변수는 대체로 NULL을 쓰면 되고, 네 번째 매개변수는 Help Workshop의 Map 대화상자에서 부여된 일련번호를 입력한다.

 

버튼을 클릭 시 해당 내용이 보여지는 것을 확인할 수 있다.

 

네 번째 매개변수를 바꿈으로써 상황에 맞는 적절한 도움말을 보여줄 수 있다.

 

Epilogue


이것으로 HLP 형식의 도움말 파일을 생성하고 Windows API와 연동하는 방법에 대해 마친다.

 

카테고리 “Microsoft Windows/Win32 도움말 연동”
more...