2015-01-29 2 views
-1

그래서, 나는 C++에서 WinAPI를와 창을 생성하는 방법에 대한 this tutorial를 다음과 같은거야, 내가 클래스의 생성자에서 창을 만들 수 있다면 대신클래스의 생성자에 WinAPI가있는 창 만들기?

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { 
    ... 
} 

방법을 사용하는, 궁금해 그 프로그램의 기본 클래스에서 내 사용자 정의 클래스 Window의 생성자를 호출 할 수 있습니다 원하는 크기, 제목 등 입력하고 내 창에 대한 참조로, 자바에 JFrame처럼, 그래서 그것을 숨길 수 있도록 사용 , 그 위에 물건을 렌더해라.

이것이 가능하지 않다면, 그곳에서 작업 할 수있는 다른 해결책이 있는가? 비슷한 방법?

+0

네,하지만 내가 어떻게해야합니까 어디'hInstance','hPrevInstance'는'lpCmdLine'과에서'nCmdShow' 변수는 함수에 전달하는? –

+0

그렇지 않습니다. gha.st의 의견은 말이되지 않습니다. WinMain을 호출하지 마십시오. 응용 프로그램의 진입 점 (또는 가능한 진입 점 중 하나)이며 클래스의 멤버 함수가 될 수 없습니다. –

+0

@BenjaminLindley * 기침 *주의를 기울이는 것이 도움이됩니다. 나는 오늘의 빛 속에서 바라 보았을 때 말도 안되는 주석을 삭제했다 ... –

답변

1

JFrame 예제는 Window 개체를 생성하여 창을 만드는 방법을 찾고 있음을 알려줍니다.

WinMain 창을 만들지 않으므로 창 모양은 main()입니다.

이 창은 프로그램의 다른 곳에서 CreateWindow() 또는 CreateWindowEx()을 호출하여 만들어집니다.

기본 Winapi는이 기능 (C에서 사용하기위한 것임) 만 제공하지만 MFC 래퍼가 있습니다. 예 : CWnd은 윈도우 객체 (msdn)를 나타냅니다.

+0

고마워! 죄송합니다, 좀 바보 같은 질문 ... 나는 C++에 새로운 verry입니다. –

+1

그것은 귀중한 질문입니다. 처음에는 Winapi에 익숙하지 않은 많은 사람들이 Window-Object가 있어야한다고 생각하고 나중에 구조체 일 뿐이라는 것을 알게되었습니다. 나중에 MFC를 사용할 수도 있습니다. –

+0

다른 곳에서 창을 만들면 어디에서'HINSTANCE','LPSTR' 및'WinMain' 함수에 의해 제공되는'nCmdShow'' int를 얻을 수 있습니까? –

1

엔트리 포인트는 절대로 구성원 함수가 될 수 없지만 객체 지향 GUI 코드를 작성할 수 있습니다. 그냥 WinMain 메인 윈도우 객체를 만들고 다른 모든 것들이 거기에서 발생하게하십시오.

Raymond Chen은 객체 지향 Win32 GUI의 시작점으로 설계된 C++ version of a GUI scratch program을 가지고 있습니다.

그의 WinMain에서 볼 수 있듯이 UI 위젯 생성은 RootWindow 클래스로 위임됩니다.

int PASCAL 
WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, int nShowCmd) 
{ 
g_hinst = hinst; 

if (SUCCEEDED(CoInitialize(NULL))) { 
    InitCommonControls(); 

    RootWindow *prw = RootWindow::Create(); 
    if (prw) { 
    ShowWindow(prw->GetHWND(), nShowCmd); 
    MSG msg; 
    while (GetMessage(&msg, NULL, 0, 0)) { 
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
    } 
    } 
    CoUninitialize(); 
} 
return 0; 
} 
+0

"컴파일 사전 지시어"(오른쪽?)'#define STRICT','#define UNICODE' 및'#define _UNICODE '는 무슨 뜻입니까? –

+1

@ TheDDestroyer12 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx –

관련 문제