C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[14930] Re:Re:Re:Re:[질문]한글메세지전송이 제대로 안됩니다.(팁엔트릭에있는거해도안되서 질문함)
야이바 [yaiva] 1584 읽음    2002-01-24 11:29
에혀..말씀대로 해줬더니 같은 에러메세지가 뜹니다..그것도 두번의 error 메세지가 메세지창에뜨네요.어쩌죠? 흑흑
:(콜론) 를 |(파이프) 로 바꾸는걸 예전에 해봤는데 수정없이 올린점 사과드리고요.
사실은 |(파이프)로 해도 같은 에러메세지가뜹니다.
제발도와주세요..저번에 다른님이 임프님한테 같은 질문했는데 답변이 없더라구요.
그래서 다시 한번 질문 올립니다.

에러메세지 ---->   E2062 invalid indirection


박지훈.임프 님이 쓰신 글 :
: 아, 그러셨군요.
: 처음부터 에러메시지와 에러가 발생한 위치를 알려주셨으면 금방 해결되었을텐데요. 문제는,
: SendMessage(hwnd22, WM_IME_CHAR, (WORD)((unsigned char)pString[i])<<8 : ((unsigned char)pString[i+1]), 1);
: 여기서 중간의 콜론(:) 입니다. 이건 원래 콜론이 아니라 파이프라인(|)이었어야 했는데요.
: 그러니까,
: SendMessage(hwnd22, WM_IME_CHAR, (WORD)((unsigned char)pString[i])<<8 | ((unsigned char)pString[i+1]), 1);
: 이렇게 되었어야 했습니다.
: (그 팁에서 코드만 보시지 마시고 설명을 보셨으면 '두 바이트를 붙여야 한다'는 말에서 유추가
: 가능하실 수도 있었을텐데...)
:
: 원래 그 팁은, 제가 운영하던 천리안 프로그래머포럼에 올렸던 팁들 중의 하나입니다.
: 제 개인 홈페이지로서 이 사이트를 처음 오픈했던 99년 6월에 이 사이트에다 긁어다 올렸는데..
: 아무래도 텔넷에서 긁어올 때 어떤 프로그램의 문제로 파이프라인 문자가 콜론으로 바뀌어버린
: 것 같습니다. 전에 다른 팁에서도 같은 문제가 발견되었었는데...
:
: 팁 글의 문제는 수정해놨습니다.
: 제 실수로 시간을 많이 뺏은 것 같아서 죄송하네요.
: 확인을 해봤어야 했는데...
:
: 그럼...
:
:
: 야이바 님이 쓰신 글 :
: : 이번엔 소스를 올려봅니다.
: :
: : 메세지를 받을 베이직으로짠 폼은 캡션이 Form1입니다.
: : 첨부파일로 첨부합니다. 참고로 비베가 안깔려있으면 작동되지 않을것입니다.
: :
: : void __fastcall TFormTest::Edit2KeyPress(TObject *Sender,char &Key)
: : {
: :    AnsiString test;
: :    HWND hwnd11;
: :    HWND hwnd22;
: :    int a=1;
: :    int i=0;
: :         hwnd11 = FindWindowEx(NULL,NULL,NULL,"Form1"); // 캡션이 Form1인 폼의 핸들값알아오기
: :
: :         hwnd22 = GetDlgItem(hwnd11,a); //받을 폼위의 edit box의 핸들값가져와서 hwnd22에 넣기
: :
: :      SendMessage(hwnd22, WM_IME_CHAR,      // edit box에 한글 전송하기
: :       (WORD)((unsigned char)pString[i])<<8 : ((unsigned char)pString[i+1]), 1);
: :
: : }
: : 소스는 저렇습니다. 문제는
: :
: :      SendMessage(hwnd22, WM_IME_CHAR,      // edit box에 한글 전송하기
: :       (WORD)((unsigned char)pString[i])<<8 : ((unsigned char)pString[i+1]), 1);
: : 여기서 pString이 무엇으로 선언되지 않았기에 선언하라고 에러메시지가떠서 char로 해줬더니
: : 이번엔 SendMessage 쪽에서 Invalid Indirection 에러가 뜹니다.
: :
: :
: :
: :
: :
: :
: : 박지훈.임프 님이 쓰신 글 :
: : : 제가 쓴 팁을 보시면..
: : : 시프트 연산을 해서 두 바이트를 붙여줘야 하는 이유를 적어놨는데, 그걸 무시하셨군요.
: : : 그런데 에러가 나신다면 그 에러가 뭔지를 알렺주셔야 답을 할 수 있지 않겠습니까? ^^
: : :
: : : 그럼...
: : :
: : :
: : : 야이바 님이 쓰신 글 :
: : : : C++builder  로 짠 프로그램에서
: : : : Edit box에다가 한글로 입력하면
: : : : 다른 폼(비주얼베이직으로 짠것)의 Edit box에다가 뿌려주는 기능을 구현했는데요
: : : : 문제는
: : : : 영문이나 숫자는 잘 넘어가는데 한글을 넣으면 ㅁㅁㅁㅁㅁㅁㅁ 라고 뜹니다.
: : : : WM_IME_CHART라고 해서 넘겨봤는데도 안되더군여.
: : : :
: : : :   SendMessage(hwnd22, WM_IME_CHAR,
: : : :  (unsigned char)(Key),1);
: : : :
: : : : 라고 코딩을 하였지만.
: : : :
: : : : 함수이름 자체가
: : : : void __fastcall TFormTest::Edit2KeyPress(TObject *Sender,char &Key) 입니다
: : : :  그래서 저기있는 char &Key라는 부분을 unsigned &Key라고 고쳐서 해보니깐
: : : : 에러가 나더라구여.형식이 틀리다고
: : : : unsigned 로 보내면 2byte문자를 표현할수있다고해서  (unsigned char)(Key),1); 라고
: : : : 해줬더니 저걸 타지않더군요.그냥 함수 자체에있는 char &Key를 타고 바로 hwnd22에다가 보내는거 같던데
: : : : 이거 어떻게 해결해야하나요?
: : : : 부탁드립니다..
: : : :
: : : : 참고로 팁앤 트릭에보면 임프님이 적어두신 강좌가있던데 그렇게하면
: : : : 에러가 팍팍 뜨더라구요.
: : : : 아무튼 방법좀 알려주세욤 ㅠ.ㅠ;;

+ -

관련 글 리스트
14345 [질문]한글메세지전송이 제대로 안됩니다.(팁엔트릭에있는거해도안되서 질문함) 야이바 1032 2002/01/10
14371     Re:[질문]한글메세지전송이 제대로 안됩니다.(팁엔트릭에있는거해도안되서 질문함) 박지훈.임프 1006 2002/01/11
14699         Re:Re:[질문]한글메세지전송이 제대로 안됩니다.(팁엔트릭에있는거해도안되서 질문함) 야이바 1199 2002/01/18
14743             Re:Re:Re:[질문]한글메세지전송이 제대로 안됩니다.(팁엔트릭에있는거해도안되서 질문함) 박지훈.임프 1067 2002/01/19
14930                 Re:Re:Re:Re:[질문]한글메세지전송이 제대로 안됩니다.(팁엔트릭에있는거해도안되서 질문함) 야이바 1584 2002/01/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.