@ 사족
보이는 Caption을 어떻게 해달라고 요청은 있어도
classname을 어떻게 해달라고 요청도 하는군요
Classname이나 Caption이 아니더라도
Window를 찾는 방법은 여러가지가 있을것 입니다.
@ Form의 ClassName변경하는 방법
Form의 ClassName을 변경하는 방법은?
Form의 CreateParams를 override하여서
TCreateParams 구조체의 WinClassName을 변경해주시면 됩니다.
다음과 같이...
void __fastcall TForm1::CreateParams(Controls::TCreateParams &Params)
{
TCustomForm::CreateParams(Params);
StrLCopy(Params.WinClassName, _D("Ca. Test"), (sizeof(Params.WinClassName) / sizeof(Char)) - 1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND hWnd=FindWindowW(L"Ca. Test",NULL);
if(hWnd==this->Handle)
{
ShowMessage("TForm1의 ClassName은 Ca. Test 입니다.");
}
}
//---------------------------------------------------------------------------
그럼..
빌더초보 님이 쓰신 글 :
: 안녕하세요.
:
: 밑에도 글을 남겼었는데 제가 초보라 질문을 정확하게 올리지 못한거 같습니다.
:
: 다시 한번 요약해서 질문해 보겠습니다.
:
: 지금 상대 업체와 제가 서로 프로그램을 맞춰야 하는 부분이 있어서요..
:
: FindWindow 함수를 보면 FindWindow(class name, caption)이런식으로 되어 있는걸로 알고 있습니다.
:
: 상대 업체에서 class name으로 프로그램 조회를 하자고 하였습니다.
:
: 상대 업체의 class name 은 "ca.Traking" 이어서
:
: Q&A를 찾아서
:
: FindWindow("ca.Traking", 0); 이런 식으로 했더니 핸들값이 잘 넘어 오더라구요.
:
: 문제는 저인데..
:
: 제 프로그램의 class name을 "ca.Test"로 해달라고 하드라구요.
:
: 제가 실행할 폼을 만들어서 폼 이름을 Test로 했더니
:
: 헤더파일에 class TTest : public TForm 이런식으로 클래스가 만들어져더라구요.
:
: 제 생각엔 TTest를 "ca.Test"로 변경해 줘야 할꺼 같은데
:
: 그냥 이름을 바꾸려고 하면 에러가나고.. 어떻게 변경해야 하는건지...
:
: 제가 혹시 잘못 생각하고 있는것인지 어떻게 class name을 "ca.Test"로 바꿔줘야 하는지 정확히 모르겠네요.
:
: 고수님들의 답변 부탁 드립니다.