블로그 이미지
생각처럼

카테고리

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

달력

« » 2025.1
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 31

공지사항

태그목록

최근에 올라온 글

[明, SW 개발자여 전문인으로 거듭나자!]
ZDNet Korea의 컬럼니스트 중 한명인 류한석 소장은 얼마 전 자신의 컬럼에 ‘한국에서 SW 개발자가 성공하지 못하는 세가지 이유’를 통해 어려운 사회적 현실을 이야기 했다. 그러한 이유가 아니더라도, SW 개발자로 성공한다는 것 자체는 다른 어떠한 직업과 견주어도 결코 쉬운 것만은 아닐 것이다. 

한국 자바 개발자의 1세대라 할 수 있는 김명호 박사 역시 개발자 출신으로 성공의 길을 걷고 있다고 할 수 있지만 “이 길이 아니다 싶으면 차라리 다른 일을 하라”는 말을 서슴지 않고 내던지고 있다. 요즘 시대에 개발자는 한국이라는 좁은 시장에서가 아니라 전세계적으로 통할 수 있는 전문성을 가져야 하는데, 이를 달성하는 것은 결코 쉬운 일이 아니기 때문이다. 

SW 개발자로 성공하려면, 단기간 학원 교육을 통해, 누구나 습득할 수 있는 주류 기술 몇 가지만 배워서는 안 된다. 코딩, 테스트, 디버깅, 이식, 성능, 설계, 스타일 등 다양한 소양을 갖춘 전문인이 진정한 개발자라고 할 수 있다. 단순히 코딩만을 할 줄 안다고 해서 전문인으로써의 ‘정신과 혼’을 담지 않고 있다면 ‘하급 노동자’에 지나지 않는다는 것이다. 

개발자와 아키텍트는 다르다
한국의 개발자들은 마치 개발자가 아키텍트로 가는 중간 단계로, 한번쯤 거쳐야 할 과정쯤으로 여기는 경향이 있다. 그러나 아키텍트와 개발자는 엄연히 다른 직업이다. 아키텍트가 되기 위해 개발자 경험이 있는 것은 좋지만, 막연하게 개발자를 거쳐 아키텍트가 된다고 생각하는 것은 옳지 않다는 것이 김박사의 설명이다. 

그는 “아키텍트가 될 자질을 갖추는 것은 개인의 소양에 따라 다르다. 이를 건설에 비유하자면, 개발자는 건설현장에서 일하는 인부고 아키텍트는 건축설계사라고 볼 수 있다. 미적, 공학적인 요소를 갖추었을 때 건축설계사가 되는 것처럼, 현장 인부가 자신의 경력을 통해서만 될 수는 없는 것이다”라며 “대신 그들은 미장이나 도색 전문가 혹은 작업반장이 될 수 있다. 즉, 해달 분야의 전문가로 훌륭히 성공할 수 있는 것이다”라고 말했다. 

그렇다고 벽돌을 나르는 수준의 초급 개발자가 10년 후 작업반장 수준의 상급 개발자가 되는 것은 아니다. 먹고 살기 위해서 개발을 한다면 행복해 질 수 없을 테고, 당연히 훌륭한 개발자가 될 수도 없다. 때문에 개발자들이 당면한 과제는 어떻게 하면 훌륭한 개발자가 될 수 있냐는 올바른 방법론이 필요하다.

이에 대해 김명호 박사는 몇 가지 지침을 가르쳐 준다. 

훌륭한 개발자가 되려면? 
1) 기본에 충실해야 한다. 
여기서 말하는 기본과 초급은 분명 다르다. 개발자라면 알고 있어야 할 프로그래밍의 기본 구조나 알고리즘 등의 기본에 충실하지 못하다면, 10년이 지나도 불행하기는 마찬가지일 것이다. 만약 개발자인 당신이 먹고 살기에 급급해서 수박 겉핥기로 몇몇 기술만 습득했다면 지금이라도 당장 시작하는 것이 중요하다. ‘언젠가는 적용해야 할 핵심기술’을 습득하는 것이 중요하다. 

2) 지식의 포트폴리오를 유지하라. 
재테크에서의 교훈에 따라 ‘달걀을 한 바구니에 담지 마라’는 것을 생각하자. 즉, 개발자는 어느 한 분야에 올인하지 말고 ‘남들도 다 아는’ 주류 기술과 ‘남들은 모르는’ 전문 기술로 분산 투자해야 한다는 것이다. 

3) 분야 전문가나 해박한 지식을 갖춰라. 
앞서 언급한 대로 건설현장에서 미장이나 도색 전문가, 작업반장이 될 수 있는 분야별 전문가가 된다면 어디서든 존중 받을 수 있다. 그러나 여기서 중요한 것은 과도한 욕심을 부려서는 안 된다는 것이다. 분야의 전문가인 동시에 해박한 지식을 갖추고 있다면 그야말로 ‘천재’라고 할 수 있지만, 이 둘 중 한가지만 갖춰도 충분하다는 것이다. 모든 분야에 대해 피상적인 지식만을 갖추고 있다거나, 사장된 기술에 매달린다거나, 자아도취에 빠져 자신만의 방법이 옳다고 여기는 오류를 범할 수 있기 때문이다. 

4) 학습을 두려워 마라. 
이것이 김박사가 가장 강조하는 부분으로, 충분한 기본지식을 갖추고 있다면 새로운 지식을 습득하는 것에 두려움이 없으며 새로운 기술을 습득하고 끊임없이 발전해 나가는 것이야 말로 행복한 개발자가 되는 최우선 요소다. 만약 새로운 기술을 습득하는데 더디다고 느낀다면 그것은 기본이 부족하기 때문이며, 지금이라도 기본을 습득해 나간다면 신기술 습득에 대한 두려움은 사라진다. 

이러한 개발자를 위한 성공 방법론이 제시됐음에도 불구하고, 개발자가 선택할 수 있는 최악의 길은 ‘다른 길을 찾아가는 것’이다. 개발자가 뭐 그리 대단한 것인가? SW 개발자가 아니더라도 얼마든지 다른 분야에서 전문인이 될 수는 있는 것이다. 자신이 택했지만 SW 개발자로의 미래가 안 보인다고 생각된다면, 과감히 다른 길을 선택하라. 

개발자야 말로 ‘파레토의 80대 20의 법칙’이 가장 확실하게 적용되는 분야다. 20%의 능력 있는 개발자만이 훌륭하게 80%의 개발을 수행할 수 있다. 

[暗, 과연 한국에서 SW 개발자가 성공할 수 있나?]
김명호 박사는 SW산업에서 이러한 파레토의 법칙이 중요하다고 말한다. 뛰어난 소수의 전문인력이 SW산업을 발전시킬 수 있고, 이러한 인재를 정책적인 지원 하에 키워내야 한다는 것이다. 

그러나 현실은 그다지 밝지 않아 보인다. 정부의 정책이라는 것이 ‘노동정책’에 가깝기 때문이다. 즉, 대학과 같은 전문교육기관에 의한 전문가를 양성한다기 보다 실업자를 줄이기 위해 하급 개발자를 배출해 내는데 급급하고 있다는 지적이다. 

막상 현재 대학의 교육 현실은 어떠한가? 학부제를 도입한 이후, 학생들은 어려운 과목은 제외하고 쉽거나 학점을 잘 받을 수 있는 과목을 수강할 수 있게 된 상태다. 숙명여대 전산관련 학과의 한 교수는 “요즘 학생들은 알고리즘과 같이 기본을 다질 수 있는 과목은 어렵다고 회피한다. 그저 취업을 위한 학점 챙기기나 가벼운 프로그래밍 기술에 몰린다”고 안타까워한다. 

이럴 바에는, 오히려 비전공자가 낫다는 의견도 있다. 기본에 충실하지 않은 전공자들보다 학원에서 5~6개월 집중적으로 배우고, 취직해서 급여를 받는 이들이 더욱 충실도가 높고 급여도 적게 든다는 것에 SI업체들이 매력을 느낄 수도 있다는 것이다. 

실패 거듭하는 ‘SW 정책’
실제 이렇게 부실한(기본에 충실하지 못하다는 의미로, 이들이 모두 부실하다는 것은 아니다) 개발자들을 고용한 SI업체를 통해 프로젝트가 실패한 경우, 그 책임소재의 표적은 SI가 아닌 HW로 돌리는 경향이 있기도 하다. 어떻게 보면 이것이 ‘SW 분리발주 정책’을 창출한 계기 중 하나이며, 개발자의 ‘표준공임단가’를 책정하게 된 이유가 될 것이다. 

특히 개발자에 대해 표준공임단가를 두어 금전적 보상에 제한을 두어서는 안 된다. 이는 능력 있는 전문가가 되고자 하는 이들의 의지를 꺾을 수 있기 때문이다. 핀란드의 한 대학에서 내놓은 조사자료에 의하면 ‘SW 개발생산성에 있어 훌륭한 개발자 1명의 개발생산성이 하급 개발자에 비해 20배 가량 높다’는 결과가 있다. 이는 급여 측면에서 볼 때에도 그 이상의 가치가 있는 것이다. 

현재 정부의 실업정책에 가까운 SW 정책은 이러한 측면에서 많이 부족하다는 지적이다. 즉, 표준공임단가에 묶여 있기 때문에 국내에서는 아무리 뛰어나다고 해도 인정받지 못하는 토양이 굳어져 가고 있으며, 이는 마찬가지로 기업 내부에서도 개발자에게 인색할 수 밖에 없다. 

또한 전문인을 양성하기 위해 수년의 기간이 필요하지만, 단기간 성과를 내야만 하는 국내의 프로젝트 특성도 개발자를 힘들게 하는 악순환에 한 몫 거들고 있다. 

소수의 전문인 중심 체계 필요
김명호 박사는 “정책적으로 획기적인 변화가 있어야 한다. 노동집약적 산업이 아닌 지식집약적 산업으로 바꾸기 위한 정책이 필요하다. 물론 교육도 마찬가지다. 전산 관련 대학 정원을 줄여서 의욕이 있는 전문가를 양성해 내고 이들을 대상으로 SW정책을 만들어 가야 할 것이다”라고 말했다. 

그는 또 “16만 명에 달하는 국내 개발자들 모두에게는 미안한 말이지만, 누구나 다 성공할 수는 없다. 끊임없이 노력할 수 있고 자기를 발전시킬 수 있는 소수 개발자들만이 성공할 수 있으며, SW 정책도 이들에게 마음 놓고 일할 수 있는 환경을 만들어 주는 산업으로 만들어야 정부차원의 ‘미래의 먹거리’ 산업으로 성장할 수 있을 것이다”라고 주장했다. @
Posted by 생각처럼
, |

출처 한걸음씩 걷기 | 
원문 http://blog.naver.com/23junlub/130025643666
지킬앤하이드 OST - 지금이순간

 

 

 

조승우

 

류정한

 

김우형

 

 

* 2008 지킬 홍광호 버전 추가

 

 

홍광호

 

지금이순간 
지금여기

간절히 바라고 원했던 이순간
나만의 꿈 나만의 소원 
이루어질지 몰라
여기바로 오늘

 

지금이순간
지금여기
말로는 뭐라 할수 없는 이순간

참아온 나날 힘겹던 날

다 사라져간다 연기처럼 멀리


지금이순간 마법처럼 
날묶어왔던 사슬을 벗어 던진다

지금 내겐 확신만 있을뿐
남은건 이제 승리뿐

 

그많았던 비난과 고난을 
떨치고 일어서 세상으로 부딪혀 맞설뿐

 

지금 이 순간
내모든걸 내육신마저 내영혼마저 다걸고

던지리라 바치리라 
애타게 찾던 절실한 소원을 위해

 

지금이순간 나만의 길
당신이 나를 버리고 저주하여도
내마음속 깊이 간직한 꿈

간절한 기도 절실한 기도

신이여 허락하소서

 

2006년도 지킬앤하이드에 캐스팅되었던 세 지킬의 '지금이순간'

개인적으로 노래만 놓고 봤을땐 김우형씨의 목소리가 젤 감동적이지만

무대를 직접 봐야만 평가할 수 있을것 같다

내년도를 기대하며...

Posted by 생각처럼
, |

우선 Visual C++ 컴파일러에서 생성된 프로젝트 파일(exe)를 개발 툴이 설치되지 않은 PC 에서

설치하기 위해서는 C++ 런타임 라이브러리가 필요합니다

 

 

하지만 이 패키지는 컴파일 하는 프로젝트가 Debug모드가 아닌 Release 모드로 생성된 exe파일에서만 동작이 가능합니다

물론 설치하는 C++ 런타임라이브러리를 Debug 모드 라이브러리로 설치해주면 적용됩니다

 

하지만 기본으로 참조하는 C++ 런타임라이브러리는 Release 모드 전용 런타임라이브러리입니다.

 

하여 컴파일 시 비주얼 스튜디오 상단의 Tool 메뉴 에서

 

 

이런 식으로 Release 로 선택하여 컴파일을 한 후 생성된 exe 파일을 적용시키면 이상 없이 실행됩니다.

Posted by 생각처럼
, |
Posted by 생각처럼
, |

출처 프로페셔널 되기 | 네이밍
원문 http://blog.naver.com/ugigi/70014475645

출처 : http://www.freevbcode.com/ShowCode.asp?ID=3700

 

OLE Automation using Word (Article)

 

Author : ahmed

Category : Miscellaneous

Difficulty : Beginning

 

Version Compatibility : Visual Basic 6

 

More Information : 이 문서는 새로운 word 문서를 생성하고 새롭게 생성된 문서에 내용을 삽입함으로서 OLE automation을 사용하는 방법을 보여준다.

 

25286번 읽혔다.

 

How to use OLE automation?

 

많은 개발자들은 처음에 VB를 통해 개발을 시작한다. OLE, Automation, ActiveX, COM 등등에 대해서 들어보았을 것이다. 하지만 이런 기술 모두에 대해서 알지는 못한다. 여러분이 초보자이고 OLE에 대해서 알기를 원한다면 이 문서를 읽는 것이 좋다. OLE automation 기술을 사용해서 코드를 작성하는 방버을 배울 수 있다.

 

이 프로그램에서, Word 객체를 사용할 것이다. 두개의 객체를 사용할 것이다, 하나는 Word Application class이고 하나는 Word Document 클래스이다. Word application과 Word document를 오픈할 것이다. 사용자는 문서를 저장할 수 있을 것이다. 다음의 절차는 어플리케이션을 생성하기 위한 것이다.

 

새로운 EXE 프로젝트를 시작하라. 메뉴의 [프로젝트 - 참조]에서 Microsoft Word 9.0 object libraryf를 선택하라. 여러분의 컴퓨터에 Word 프로그램에 설치되어 있는 것이 좋다는 것을 기억하라. 프로젝트에 새로운 모듈은 추가한다. 모듈의 일반적인 선언 부분에 다음의 코드를 추가하라:

 

Public objapp as new word.application

Public objdoc as object

 

프로젝트의 폼을 오픈하고 폼에 네개의 버튼을 추가한다. 버튼은 다음과 같은 기능을 한다 :

 

1. 실행

2. 저장

3. 닫기

4. 종료

 

'실행' 버튼을 더블클릭하고 다음의 코드를 추가하라:

 

Private sub cmdLaunch_click()

 

If Not(objdoc is nothing) the

    msgbox "Application already running"

    exit sub

End if

 

objapp.visible = true

 

' 어플리케이션에 도큐먼트 추가하기

 

Set objdoc = objapp.documents.add()

 

' 도큐먼트에 새로운 텍스트 추가하기

objdoc.content = "This is my first OLE application"

 

End Sub

 

코드에 대해서 알아보자. 어플리케이션이 이미 실행중인지 확인한다, 실행중이 아니면 어플리케이션을 디스플레이한다. word application을 열고 새로운 도큐먼트를 추가하고 어플리케이션에 새로운 텍스트를 추가한다.

 

이제 저장 버튼에 코드를 추가한다:

 

Private Sub cmdSave_click()

 

If objDoc is nothing then

    msgbox "Application not running"

else

    objdoc.Save

End If


End sub

 

어플리케이션이 실행중인지 아닌지 체크한다. 실행중이면 도큐먼트를 저장하고 그렇지 않으면 어플리케이션이 실행중이 아니라는 메시지를 출력한다.

 

Private Sub cmdClose_click()

    If objDoc is nothing then

        Insbu "Application not running"

    else

        objApp.Quit

        Set objDoc = Nothing

        Set objApp = Nothing

    End if

End Sub

 

어플리케이션이 실행중인지 아닌지 체크한다. 실행중이면 "Application" 클래스의 "Quit" 메소드를 이용해서 어플리케이션을 종료한다. 어플리케이션을 메모리에서 제거하는 것이 중요하다는 것을 기억하라. 다음의 코드는 메모리에서 객체를 제거한다.

 

Set objDoc = Nothing

Set objApp = Nothing

 

Private Sub cmdExit_Click()

    If objdoc is nothing then

        Unload me

        end

    else

        msgbox "Please close application first"

    End if

End Sub

 

열린 폼을 언로드하고 어플리케이션의 인스턴스를 제거하기 위해서 "End" 명령어를 사용한다. 그것이 다이다.

 

Summary

이 문서는 OLE automation을 사용하는 방법을 보여준다. 이 문서는 VB 환경에서 Word document를 생성하는 방법을 보여준다. 새로운 Word 도큐먼트를 생성하기 위해서 Application과 Document 두개의 클래스만을 사용했다.

 

Posted by 생각처럼
, |

Windows CE 구조

Bit/Win Ce / 2012. 2. 3. 17:35

출처 jay_korea의 블로그 | 대머리
원문 http://blog.naver.com/jay_korea/30002745693

허거걱... 한참을 이번 포스트를 쓰고 있었는데... 갑자기 새로운 internet page가 열리는 바람에

작성해 놓은 내용이 모두 다 훨훨~~ 날아갔다. T_T

다시 작성해야겠다.

 

이번 에는 Windows CE의 구조를 정리해 볼까 한다.

내용은 내가 Embedded World 와 마소, WECOM (http://wecom.dstcorp.com/)에 올려놓은 기고 내용을 기반으로 내 마음에 맞게 다시 수정, 보충해 볼꺼다.

 

 
 
위의 그림에서 확인해 볼수 있듯이, Windows CE는 Kernel을 비롯하여 여러개의 System Processor로 구성되어있다.
여기서의 Processor라는 의미는 일반적으로 우리가 잘 알고있는 실행 file인 "*.exe"를 의미한다.
 
대부분의 개발자들이 관심있어하는 Windows CE의 Kernel은 "NK.exe" 이다.
Kernel의 size는 약 250KByte 정도 된다 (작은 size의 Kernel이다.)
 
그런데 웃끼게도 Windows CE환경에서는 Kernel(NK.exe)만 가지고는 아무것도 할수가 없다.
(물론 조금은 할수 있다. 근데 거의 할수 없다고 볼수 있다.  ㅎㅎㅎ ^^ )
Windows CE의 Kernel은 스케쥴링, API(Application Programming Interface)실행, Memory관리 등
몇몇 기본 service만 제공할뿐이다.  ( 서비스 맞나 !! )
 
그럼 OS의 여러 다른 기본 서비스는 ?
예를 들어 File system, Data Base, UI (User Interface), Graphic 과 Window 처리 등등......
 
이들 여러 서비스는 앞에서 얘기했던 "System Processor"라는 것들이 제공 해준다.
 (얘네 들은 확실한 서비스를 제공하는게 원칙이다 ㅎㅎㅎ ^^ )  
   
System Processor는 일반적으로 아래와 같은 것들이 있다.
 
"Filesys.exe" File system 및 Data Base 그리고 system설정(Registry)들을 관리, 서비스 해준다.
 
"Device.exe" Device Driver관리자로 Driver들을 load하고 관리해준다.
 
"GWES.exe" Graphic Windowing Event Subsystem이라 부르고, graphic, event등 UI부분의 서비스를 제공한다.
 
"Explorer.exe" Windows CE의 기본 UI Shell이다. Windows 2000, XP와 같은 바탕화면 과 Task Bar등을 표시하고 User Application의 실행을 도와준다.
 
여기에 하나 빠진게 있다. (그림에도 빠졌다.)
"Service.exe" 라고~  ( 얜 진짜로 확실하게 서비스만 해주는 얘다.. ^^ )
이 System Processor는 Device driver에서 하기에는 좀 그런 protocol관련 service들을 load하고 관리해준다. 뿐만 아니라 간단한 Application같은 Thread의 등록을 이 service.exe에 하여 특정 기능을 수행할수 있다.
나중에 다시 확인해 보겠지만, Windows CE의 device driver들은 쫌 이상하게 되있어서 protocol service들을 device driver로 만들어 사용할수도 있다.
 
오늘은 퇴근후 쫌 중요한 미팅이 있어서 여기 까장 쓸란다...
 
또 허접할 다음 포스트를 기대해 주시라 ~~   ^^
 
Posted by 생각처럼
, |
Posted by 생각처럼
, |
Posted by 생각처럼
, |
Posted by 생각처럼
, |

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 생각처럼
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함