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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[1072] [Forms] 폼의 ClassName 마음대로 변경하기
장성호 [nasilso] 13666 읽음    2012-01-13 02:03
음..

조금전에  QnA 게시판에 질문이 올라와서
답변달아 주고.. 여기에 팁으로 남겨둡니다.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=65946

ClassName을 변경한다는 뜻은?
FindWindow(classname,caption) 로 window-handle을 찾을수 있도록
window(OS)에 등록되는 classname을 변경한다는 뜻입니다.


보통은
제목이 혹시 의아하실지 모르겠는데요
RadStudio에서 Form의 ClassName 변경은
그냥 Object-Inspector에서  Form의 Name을 변경해주면 됩니다.
아주 간단하죠


VCL의 className 제한

그런데 VCL에서 Form의 이름에는 제한이 많습니다.

1. 특수문자를 Classname에 사용할수 없고
2. 첫자리에는 숫자가 들어갈수 없으며
3. 공백문자를 넣을수 없습니다.


classname변경하기
특수문자가 포함되도 되구..
여튼 원하는데로 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 입니다.");   
    }   
}   
//---------------------------------------------------------------------------


그럼..

+ -

관련 글 리스트
1072 [Forms] 폼의 ClassName 마음대로 변경하기 장성호 13666 2012/01/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.