음.. 다들 아시다시피 C++ Builder 의 도움말 시스템은 구형 hlp방식이죠.
CHM을 쓰려면 HtmlHelp를 호출해야 하는데 HtmlHelp.lib를 임포트해 와야 하고.. 여러모로 귀찮은게 많습니다. 갑자기 이번에 만드는 플그램에서는 chm으로 해 봐야겠다는 생각이 들어서 자료들을 찾다보니 누군가 Application.OnHelp를 가로채서 아주 쌈박하게 풀어 놓은 코드가 있더군요.
대충의 작동원리는 중간에 명령을 번역하는 방식입니다.
그냥 프로젝트에 포함만 시키면 되도록 해서 기존의 HelpFile, HelpContext, HelpKeyword를 모두 지원하게 해 놓은거죠.
문제는 Pascal소스를 제가 C++로 바꿔서 테스트를 해 봤더니만.. 안되더라는 것이죠.
또다시 찾아보니.. 글쎄.. Delphi6, C++Builder6로 넘어오면서 Help시스템에 변화가 있었다는군요. CLX와의 호환성 때문이라나.. 아무튼 다이렉트호출로 인해 OnHelp가 동작하지 않게 변경되었다는군요. ㅠ ㅠ
유일한 방법은 WM_HELP를 가로채는 방법이라는군요.
쪼끔만 고쳐서 편하게 Help좀 쓸라구 했더니만.. 우쒸..
결국 지금은 Forms.pas에서 WMHelp 함수 소스를 보고 있슴다. LPARAM, WPARAM 분리하는걸로 간단하게 끝나지 않는군요. 어케 컴포넌트로 만들어 놓으면 아주 편리하게 쓸 수 있을 것 같은데.. 메시지를 어디서 가로챌지 아직 결정하지 못하고 있습니다.
컴포넌트로 만들지도 아직 결정을 못했고..
메시지멥을 쓰면 간단하긴 한데 매번 이런 삽질하는것도 귀찮고.. 컴포넌트 형태로 구현해서 폼의 WndProc를 가로챌지.. 음.. 어떤 방법이 좋을지 모르겠네요.
나날이 귀차니즘에 빠지고 있는 패패루였슴다.. -_-
|