블로그 이미지
생각처럼

카테고리

전체보기 (209)
TOOL (1)
다이어리 (1)
Bit (200)
HELP? (0)
Total
Today
Yesterday

달력

« » 2025.2
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

공지사항

태그목록

최근에 올라온 글

HTML Help Workshop 사용법

Bit / 2012. 2. 3. 17:34

SI솔루션에 관계하는 일을 주로 하다보니 엑셀이나 워드처첨 단독 패키지에서 제공하는 도움말 같은것을 만들어서 배포할 기회는 기억에 없다. 7년전쯤 부터 Help Workshop를 사용해 왔는데 주로 웹에서 좋은 자료를 검색하고는 개인적인 용도로 컴파일 해서 레퍼런스로 정리해두는 용도로 사용해 왔다보이지 않게 새버전이 나오기도 해서 정리를 해보고자 한다.  Help Workshop VS6.0 서비스팩 5와 오피스XP(2002)에 포함되었던 걸로 확인한 바있다일단 다운받을 수 있는 링크를 첨부한다이 강좌는 전체적인 윤곽을 잡는 용도이며 향후 세부적이고 섬세한 내용은 워크샵의 도움말 파일을 참고하면 될것이다.

 

1.HTML Help Workshop 및 관련문서를 다운받자. [HelpDocs.zip(1.3MB), htmlhelp.exe(3.3MB)]

http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&DisplayLang=en

 

2.HTML 파일작성

도움말 예제는 문서자료(HelpDocs.zip)에 포함되어 있는 api.chm 파일을 디컴파일 해서 사용하기로 하자.

 

압축된 HTML파일들이 풀릴 경로와 도움말파일의 경로를 지정한 후 OK버튼을 클릭하자.

 

 OK 버튼을 클릭한다.

 

 기존의 WinHelp프로젝트를 이용할 것인지를 묻는 대화상자인데 여기는 스킵한다.

Help프로젝트파일과 경로를 지정한다.

<'; FONT-SIZE: 12pt; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림" lang=EN-US> 

Add버튼을 클릭하여 세가지 파일을 추가 시킨다.

 

마침버튼을 클릭하면 프로젝트생성이 마무리된다.

 

프로젝트컨텐츠인덱스 탭이 있는데 기본적으로 프로젝트 탭이 선택되어 있다.

 

여기서 저장버튼을 한번 클릭하자.

빙수기 모양의 Compile HTML file 버튼을 클릭하자.

안경모양의 View Compiled File 버튼을 클릭하자.

 

 

4.도움말 목차편집

도움말 화면의 목차에 해당하는 부분을 작성하자.

Contents탭을 처음으로 선택하면 그림과 같이 토픽파일을 추가할것인지 새로 생성할 것인지 물어보는데 여기서는 그림처럼 새로 생성하자.

 

 Contents탭에서 2번째 버튼은 폴더를 세번째 버튼은 엔트리를 추가하는 것만 다르고 추가하는방법은 같다그림과 같이 목차를 추가해보고 아래에 세부항목들을 추가해 보자. Entry title 트리에 나타날 제목을 입력하고 Add버튼을 클릭하여 연결할 HTML파일을 선택한다.

 

 예에서는 cmd_hh_display_search.htm 파일에 네임테그를 추가하여

    <H2><A name="Example">Example</A></H2>  연결하였다.

 

 

 

 

5.인덱스 파일작성 : 목차만들기와 유사한 작업이다.

인덱스 파일을 추가하고 저장될 경로와 이름을 지정한다.

 

 그림과 같이 인덱스 타이틀 셋을 추가하고 포함시킨 HTML파일 세을 연결시킨다.  두번째 열쇠모양 버튼을 클릭하면 다음과 같이 엔트리 작성 창이 열린다작성방법은 목차와 동일하다.

 

 

 

6.도움말 화면 인터페이스 설정

Project 탭에서 첫번째 버튼 Change Project Options 버튼을 클릭하면 다음과 같은 창이 열린다.

여기서는 도움말창의 타이틀을 지정하였다아직 윈도우를 하나도 작성하지 않아서 기본윈도우을 지정할 수 없다.

 Project 탭에서 세번째 버튼 Add/Modify Windows definition 버튼을 클릭하면 다음과 같은 창이 열린다.

 

일반탭에서 "My Windows"를 추가하고 타이틀을 입력하였다.

 

 Position 탭에서 도움말 차의 폭과 높이만 지정하였다.

 

 

네비게이션 페인의 폭을 지정하고 검색탭을 추가하다록 채크하였다.

 

확인버튼을 클릭하면 다음창이 열린다.

두가지 채크박스를 모두 채크하면 컴파일한 chm파일에 서치탭이 포함된다.

 

 

 

 

7.Context-Sensitive Help 위한 작업

 

맵핑파일 api.h를 다음과 같이 작성한다.

#define IDH_INDEX    1000

#define IDH_SEARCH           1002

#define IDH_TOPIC    1003

 

텍스트 파일 topic.txt을 다음과 같이 작성한다.

.topic 1000

HH_DISPLAY_INDEX command

.topic 1002

HH_DISPLAY_SEARCH command

.topic 1003

HH_DISPLAY_TOPIC command

 

프로젝트탭에서 네번째 버튼 HtmlHelp API information 버튼을 클릭한다.

Header file..  버튼을 클릭하고 api.h를 포함시킨다.

 

Header file..  버튼을 클릭하고 topic.txt를 포함시킨다.

 

 Add버튼을 클릭하여 Alias HTML파일을 연결한다.

 

 

8. Net2k5에서 Api를 이용한 도움말 표시

 

' Api를 사용한 도움말 호출 : 함수와 상수선언

Private Declare Function HTMLHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal hwndCaller As Integer, ByVal pszFile As String, ByVal uCommand As Integer, ByVal dwData As Integer) As Integer

Const HH_DISPLAY_TOPIC As Integer = &H0

Private Sub btnApi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApi.Click

      Dim hWndParent As Integer

      Dim hWndHTMLHelp As Integer

      hWndParent = Me.Handle.ToInt32

      '폼핸들도움말파일경로 + 보여줄파일 + 윈도우지정목차탭선택

      hWndHTMLHelp = HTMLHelp(hWndParent, My.Application.Info.DirectoryPath & "\api.chm::/cmd_hh_display_topic.htm>My Windows", HH_DISPLAY_TOPIC, 0)

End Sub

 

 

 

9. System.Windows.Forms.Help 개체를 활용하는 방법

 

Private Sub btnHelpContent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHelpContent.Click

     System.Windows.Forms.Help.ShowHelp(Me, "\api.chm")

End Sub

'인덱스탭으로 열기

Private Sub btnHelpIndex_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHelpIndex.Click

    System.Windows.Forms.Help.ShowHelpIndex(Me, "\api.chm")

End Sub

'찾기탭으로 열기

Private Sub btnHelpSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHelpSearch.Click

     System.Windows.Forms.Help.ShowHelp(Me, "\api.chm", HelpNavigator.Find, "cmd_hh_display_search.htm")

End Sub

지정한 위치에 해당파일이 없을경우 c:\WINDOWS\Help\ 에서 검색한다.

 

 

10. HelpProvider 컨트롤을 이용하여 Context-Sensitive Help 작성

  

'구성요소 에서 HelpProvider MyHelpProvider이름으로 추가

'-> HelpNameSpace 에 도움말파일지정 C:\test\api.chm

    : 컨트롤이 포커스를 가진상태에서 F1키를 눌렀을 때 해당하는 도움말이 올라오는 기능이나 타이틀바에서 물음표버튼을 클릭하고 원하는 컨트롤를 클릭하면 행당하는 도움말을 보여주는 기능이다.

구성요소판넬에서 HelpProvider를 폼에 삽입하고 MyHelpProvider로 이름을 변경한다.

 

HelpNameSpace 속성에 도움말파일을 C:\test\api.chm 지정한다.

폼의 MinimizeBox=False, MaxmizeBox=False, HelpButton = True로 한다.

컨트롤의 MyHelpProvider ShowHelp=True 로 준다.

 

인덱스탭의 인덱스 키워드로 조회

HelpNavigator=Index 

HelpKeyword = "검색"

 

HTML파일 지정

HelpNavigator=Topic

HelpKeyword = "cmd_hh_display_search.htm"

 

문서번호로 조회

HelpNavigator=TopicId

HelpKeyword = 1000

 

 

 

11. VB6에서 Api를 이용한 도움말 표시

 

Private Declare Function HTMLHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" _

   (ByVal hwndCaller As Long, ByVal pszFile As String, _

   ByVal uCommand As Long, ByVal dwData As Long) As Long

Const HH_DISPLAY_TOPIC = &H0

Const HH_HELP_CONTEXT = &HF

Const HH_DISPLAY_INDEX = &H2

 

Private Sub cmdSearch_Click()

   Dim hWndParent As Long

   Dim hWndHTMLHelp As Long

   hWndParent = Me.hWnd

   '폼핸들도움말파일경로+내용파일+네임테그인덱스탭선택

   hWndHTMLHelp = HTMLHelp(hWndParent, App.Path & "\api.chm::/cmd_hh_display_search.htm#Example", HH_DISPLAY_INDEX, 0)

End Sub

 

Private Sub cmdTopic_Click()

   Dim hWndParent As Long

   Dim hWndHTMLHelp As Long

   hWndParent = Me.hWnd

   '내용이 표시될 도움말 창을 지정했다이전 예제에서는 창을 하나만 만들었는데 목차나 인덱스 서치탭등이 없는 창을

   '추가로 만들어서 해당창을 호출해 보면 좋을것 같다.

   hWndHTMLHelp = HTMLHelp(hWndParent, App.Path & "\api.chm::/cmd_hh_display_topic.htm>My Windows", HH_DISPLAY_TOPIC, 0)

End Sub

 

 

 

12. VB6 GUI 설정을 이용한 방법

 

[프로젝트속성]에서 도움말 파일을 지정한다.

 

Context-Sensitive Help를 구성할 컨트롤의 HelpContextID 속성에  api.h에서 지정한 1000, 1002, 1003번을 입력하고 실행하면 해당컨트롤이 포커스를 가졌을 때 F1키에 반응하게 된다.

 

Posted by 생각처럼
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함