2009년 10월 28일 수요일

클래스 이름 바꾸기

<대화상자 기반>

 

아래는 클래스 이름을 "BroadStorage"로 변경하는 예이다. 대화상자는 클래스 이름이 모두 #32770이다.

 

1. 리소스 파일을 텍스트 편집기로 연다.

2. 메인 대화상자에 아래와 같이 CLASS 항목을 추가한다.

IDD_BROADSTORAGE_DIALOG DIALOGEX 0, 0, 235, 230
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW | WS_EX_NOACTIVATE
CAPTION "Broad Storage Server"
CLASS "BroadStorage"
FONT 8, "MS Shell Dlg", 0, 0, 0x1

...
END

3. App의 InitInstance()의 맨 윗부분에 아래 코드를 추가한다.

WNDCLASS wndClass;
::ZeroMemory(&wndClass, sizeof(WNDCLASS));
::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wndClass);
wndClass.lpszClassName = _T("BroadStorage");
AfxRegisterClass(&wndClass);

<프레임 윈도우 기반>

 

1. App의 InitInstance의 맨 윗부분에 아래 코드를 추가하여 어플리케이션이 클래스를 등록하기전에 먼저 선수를 친다.

   WNDCLASS wc;
   memset(&wc, 0, sizeof(wc));
   wc.style          = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
   wc.lpfnWndProc    = AfxWndProc;
   wc.hInstance      = m_hInstance;
   wc.hIcon          = LoadIcon(IDR_MAINFRAME);
   wc.hCursor        = LoadCursor(IDC_ARROW);
   wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
   wc.lpszMenuName   = NULL;
   wc.lpszClassName  = "BroadStorage";
   AfxRegisterClass(&wc);

2. CMainFrame의 PreCreateWindow에 아래 코드를 추가한다.

 

        cs.lpszClass = "BroadStorage";

 

 

 

댓글 없음:

댓글 쓰기