괴짜 프로그래머의 일상사~@@
프로그래밍, 컴퓨터, 그리고 일상에 관한 소소한 이야기들...
Blog | Guestbook
Keyword | Local | Tag
T 132 / Y 700 / Total 3405190
Catergories
Calendar
«   2023/06   »
        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  
Tag
노자, 바이러스, 매크로, 만인드맵, 델파이, 성경, 맑고 향기롭게, 철학콘서트, 관리, 스타크래프트, 체스, 공간, flight museum, pdf, 디지로그, OpenGL, 이윤열, 포크, , 퀵 포맷,
Archive
Link
Search
  submit
Recent Articles
Recent Comments
Recent Trackbacks
2007/10/27 17:11
Notepad2 삽질 이야기
재즈벌레님께서 완전히 한글화하신 버전을 아래 링크에서 다운받으실 수 있습니다.
http://jazzbug.tistory.com/130

사용자 삽입 이미지

어제 올렸던 노트패드에 툴바가 표시된지 않는 문제가 있었습니다. 노트패드 소스는 제가 수정을 전혀 안했던터라 -- Scintilla 라이브러리 코드만 변경했죠 -- 원인이 뭘까 고민을 잠깐 해봤습니다. 그러다 문득 저렇게 이뿌게 표시되야할 프로그램이 투박하게 표시되는 것에서 매니페스트(manifest) 설정이 잘못되었음을 눈치챘습니다. 하나는 금방 찾은 셈이었습니다. 프로젝트 설정에서 매니페스트를 포함해서 링크하도록 고치고 원래있던 매니페스트 리소스를 제거했습니다. 이젠 되겠지 했는데 여전히 툴바는 표시되지 않았습니다. 그래서 디버깅을 했습니다.

[CPP]SendMessage(hwndReBar,RB_INSERTBAND,(WPARAM)-1,(LPARAM)&rbBand);[/CPP]
위 부분에서 문제가 있음을 찾을 수 있었습니다. 위 결과가 0이면 실패한 것인데 계속 0을 리턴하더군요. 답답한 것은 GetLastError도 없다는 겁니다. 단지 실패한 거죠. 이런 경우에는 보통 rbBand 구조체를 잘못 설정한 경우가 많습니다. 그래서 위쪽에 rbBand를 설정하는 부분을 꼼꼼히 살펴봤습니다. 이상하게 없더군요. 그래서 WTL의 밴드 삽입 코드를 복사해서 그 놈을 호출하도록 변경했습니다. 그래도 여전히 실패합니다. 구조체를 모두 다 채워요 여전히 툴바는 표시되지 않았습니다.

이쯤되면 막장이죠. ㅠㅠ 가장 최고의 방법은 되는 것과 비교하는 거죠. 어제 정수님께서 올려주신 버전을 OllyDbg로 꺼냈습니다. 리바 메시지 핸들러에 RB_INSERTBAND가 오는 경우에 브포가 걸리도록 설정하고 스택을 뒤졌습니다. 넘어온 구조체는 다음과 같더군요.

사용자 삽입 이미지

50이라고 선택된 곳 부터가 구조체 시작 지점입니다. RBBANDINFO의 첫 번째 필드는 cbSize로 구조체 크기입니다. 0x50바이트라는 거죠. 이번에는 제가 어제 컴파일한 바이너리를 넣고 확인했습니다. 저기에 0x64가 들어있습니다. 이제 먼가 잘못됐다는 것을 알았죠. 구조체 정의 부분으로 갔습니다.

[CPP]typedef struct tagREBARBANDINFOA
{
    UINT        cbSize;
    UINT        fMask;
    UINT        fStyle;
    COLORREF    clrFore;
    COLORREF    clrBack;
    LPSTR       lpText;
    UINT        cch;
    int         iImage;
    HWND        hwndChild;
    UINT        cxMinChild;
    UINT        cyMinChild;
    UINT        cx;
    HBITMAP     hbmBack;
    UINT        wID;
#if (_WIN32_IE >= 0x0400)
    UINT        cyChild;
    UINT        cyMaxChild;
    UINT        cyIntegral;
    UINT        cxIdeal;
    LPARAM      lParam;
    UINT        cxHeader;
#endif
#if (_WIN32_WINNT >= 0x0600)
    RECT        rcChevronLocation;  // the rect is in client co-ord wrt hwndChild
    UINT        uChevronState;      // STATE_SYSTEM_*
#endif
}   REBARBANDINFOA, *LPREBARBANDINFOA;[/CPP]
제가 사용하는 SDK는 비스타용으로 최신 버전입니다. 0x600이상이면 이라고 정의하는 부분이 보이시죠. 그 만큼이 추가된 20바이트 였습니다. Notepad2 프로젝트에서 _WIN32_WINNT를 정의하지 않아서 자동으로 0x600으로 정의됐고, 그로인해 구조체 크기가 달라졌던 겁니다. 당연히 XP에서는 동작할리 없겠죠.

간만에 제대로 말렸네요. ㅋㅋㅋ
아래 파일은 수정된 버전입니다.



Trackback : http://jiniya.net/tt/trackback/635
Notepad2 탱고 패치 + 한글화 Notepad.7z 아직 매뉴부분만 한글화 진행 중이며, 팝업이나 버블쪽은 한글화 하지 못했습니다. http://jazzbug.tistory.com/130 2007/11/02 23:01
Notepad2 Tango Patch + Korean translation Notepad 3.0.20이 10월 30일에 올라왔군요. 어떤분의 블로그에 올라온 Notepad2를 보니 재즈벌레가 탱고패치한 버전인 듯 한데 패치가 적용되어 있지 않더군요. 리소스만 복사해서 붙여넣은것 같았습.. http://jazzbug.co.kr/130 2009/07/22 10:03
창원출장안마 codewiz :: Notepad2 삽질 이야기 http://https://www.busan-lovelymassage.com/changwon 2023/05/16 01:23
마산출장 codewiz :: Notepad2 삽질 이야기 https://www.changwon-ymassage.com/masan 2023/05/16 01:33
상남동출장안마 codewiz :: Notepad2 삽질 이야기 https://www.changwon-ymassage.com/sagnamdong 2023/05/21 05:45
BK (2007/10/27 23:35)
아.. 이제 제대로 표시가 되네요...
정말 감사 드립니다...

그리고.. 혹시.... 저번에 codWiz님이 한글화 하신걸 기반(? 뭐.. 거의 복사 수준이 될듯..)으로 한글화를 해볼까 하는데 괜찮을지요?
codewiz (2007/10/28 12:54)
된다니 다행이네요.
그리고 한글화와 관련된 것은 아래 tt님께서 올려주신 자료가 작업하시기 좀 더 편할 것 같네요.

tt (2007/10/28 02:12)
BK님 한글화 얘기가 나와서 말인데요. 공식 배포처 Notepad2 Links에 보시면 최신 버전의 한글화된 버전이 있습니다. 그걸로 하시면 더 편하실 듯 합니다. 저도 이 프로그램이 맘에들어 한글화 해볼까 했는데 양이 적지는 않더라구요.
codewiz (2007/10/28 12:54)
좋은 정보 감사합니다.
BK (2007/10/28 13:20)
오.. 그렇군요.. 좋은 정보 감사 드립니다..

rockenrollz (2007/10/30 16:45)
행님 위에꺼 제작하는데 참여하고 계시는거?
codewiz (2007/10/30 18:46)
아니. 어쩌다가 scintilla 라이브러리를 패치하면서 우연찮게 하게됐지.
http://www.jiniya.net/tt/490

BreathAir (2007/10/30 16:46)
프로그래밍 하면서 삽질을 참 많이 하게 되더군요..
아 이것도 능력 부족일까요? ㅠ
codewiz (2007/10/30 18:48)
누구나 다 삽질하는거 아닐까요? ㅎㅎ 한번 겪으면 나중에는 같은 문제에는 잘 당하지 않으니 그나마 다행이 아닐까하는 생각을 해봅니다.

rockenrollz (2007/10/30 21:04)
아...
근데 했던 삽질 까먹고 또하는 나를 보면....;;
codewiz (2007/10/31 20:25)
블로그에 죄다 적어. ㅋㅋ 나중에 찾아볼 수 있게. 흐흐~

(2007/11/02 23:02)
관리자만 볼 수 있는 댓글입니다.
codewiz (2007/11/03 00:31)
괜찮아요. 제가 만든 것도 아닌데요. ㅋ
혹시 한글화 작업을 하고 계신건가요? 그렇다면 위에 tt님께서 언급하신 것을 사용하시면 금방 만드실 수 있습니다. 시간 나면 작업해서 한글 버전을 올려놓도록 하겠습니다.

재즈벌레 (2007/11/03 01:50)
아.. 그렇군요... 괜한 삽질을 할 뻔했습니다.. ㅠ.ㅠ
공식홈에서 한글판을 다운받아서 다시 패키징해 봤습니다.
Tango가 대세~ ^__________^
codewiz (2007/11/05 12:16)
멋지게 작업해두셨네요. ㅎㅎ^^;;
리소스 툴을 어떤걸 사용하시는지 여쭤봐도 될까요?

lifecoach (2020/09/10 00:21)
this is great! love it!

https://lifecoachrochester.com (2021/11/29 23:03)
Well this is great site! Would definitely recommend this to my friends. Love the read

Name   Password   Home   Secret   Submit
 Prev   1  ...  104   105   106   107   108   109   110   111   112  ...  604   Next 
codewiz’s Blog is powered by Tattertools.com / Designed by faido