|
안녕하세요. 질문하신 내용의 궁극적인 해답은 아닙니다.
다만, Invalid Indirection 오류 메세지는
아래 와 같은 오류가 있어 발생하는 것 같습니다.
[질문 중 일부]
: SendMessage(Edit1->Handle, WM_IME_CHAR,
: (WORD)((unsigned char)Key[1])<<8 | ((unsigned char)Key[2]), 1);
: 컴파일해보니 Key[1]부분에서 Invalid Indirection이라는 에러메시지가 뜹니다.
: 이런 경우 어떻게 수정을 해야 할 지 궁금해요....
위 내용중 Key[1], Key[2]는 잘못된 표현인것같습니다.
Key는 단순 워드형변수로 배열형식의 표현은 적절치 못한것 같습니다.
굳이 2바이트를 1바이트씩 잘라서 값을 얻으시려면 공용체를 쓰시던지,
번지연산자로 메모리 번지를 참조해서 얻을 수 있습니다.
SendMessage(Edit2->Handle, WM_IME_CHAR,
(WORD)((unsigned char)*(&Key+1)<<8) | ((unsigned char)*(&Key)), 1);
즉 &Key는 2바이트 중 첫번째 바이트의 번지 *(&Key)는 그번지에 저장된 값.
&Key+1 2바이트 중 두번째 바이트의 번지 *(&Key+1)은 그번지에 저장된 값.
그리고 팁란에 있는 아래 내용 중 pString은 어딘가
char pString[100];
또는
char *pString = "문자열";
과 비슷하게 선언되어 있을 거고요.
SendMessage(RichEdit1->Handle, WM_IME_CHAR,
(WORD)((unsigned char)pString[i])<<8 : ((unsigned char)pString[i+1]), 1);
그럼 참고하시길...
Jun 님이 쓰신 글 :
: 안녕하세요...
: tip에 있는 한글을 메세지로 보내기를 보고 적용을 해 보았는데요...
: 제가 하고자 하는 작업은 edit가 하나 있고 richedit가 있고 richedit의 readonly는 true상태로 설정해 놓았을 때 richedit에서 키보드를 입력하면 그 글자가 edit로 찍히도록 하고자 합니다...
: 그래서 아래와 같이 처리를 해주었습니다...( tip을 보기 전에는..)
:
: richedit의 keypress이벤트에서
:
: AnsiString now_key = AnsiString(Key);
: Edit1->Text = now_key;
: Edit1->SetFocus();
: Edit1->SelLength = 0;
: Edit1->SelStart = 1;
:
: tip을 보고 적용해보았는데요..
:
: Edit1->Clear();
:
: SendMessage(Edit1->Handle, WM_IME_CHAR,
: (WORD)((unsigned char)Key[1])<<8 | ((unsigned char)Key[2]), 1);
:
: Edit1->SetFocus();
: Edit1->SelLength = 0;
: Edit1->SelStart = 1;
:
: 컴파일해보니 Key[1]부분에서 Invalid Indirection이라는 에러메시지가 뜹니다.
: 이런 경우 어떻게 수정을 해야 할 지 궁금해요....
:
: SendMessage(Edit1->Handle, WM_CHAR,
: (WORD)(Key),1);
: 로 해주면 영문은 들어가는데 한글을 안 들어가구요.....
:
: 답변 부탁드리겠습니다..
:
|