Perform함수는 SendMessage와 비슷합니다.
다음과 같이 해도 같은 동작을 할것입니다.
Key=0로 만드는 것은 Edit에서 Key입력을 무시하게 하려고 하는것입니다.
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key==VK_RETURN) //if(Key==13)
{
//Perform(WM_NEXTDLGCTL,0,0);
//this->Perform(WM_NEXTDLGCTL,0,0);
//Form1->Perform(WM_NEXTDLGCTL,0,0);
SendMessage(this->Handle , WM_NEXTDLGCTL,0,0);
// SendMessage(Form1->Handle , WM_NEXTDLGCTL,0,0);
Key = 0;
}
}
위에서 주석 부분은 모두 같은 내용입니다.
그리고 VK_RETURN 은
winuser.h에 정의되어있는 다음과 같이 정의되어있습니다.
#define VK_RETURN 0x0D
즉 0x0D는 13 이죠
if(Key==VK_RETURN) 대신
if(Key==13) 을 써도 똑같습니다.
키보드에서 엔터키의 ASCII값이 0x0D 즉 13이기때문에 저렇게 하는것이죠
그럼..
mmmmm 님이 쓰신 글 :
: 빌더 초보입니다. 검색하다 팁정보를 봤는데요..
: 엔터를 탭키처럼 사용하는 코딩중에 이것이 도무지 이해가 안가네여..
:
: void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
: {
: if(Key==VK_RETURN)
: Perform(WM_NEXTDLGCTL,0,0);
: Key = NULL;
: }
: 이것좀 자세히 설명좀해주시면 감사하겠습니다...
:
: 그리고 번외 질문인데.. 혹시 다들 질문게시판 검색어검색되시나요?? 안되길래..저만안되나해서여..
|