2009-06-26 2 views
0

CreateWindowEx() 함수를 사용하여 "편집"창을 만듭니다. 즉, 사용자가 입력 할 수있는 곳을 만듭니다.창 만들기 CreateWIndowEx()를 사용하여 정적으로 추가 할 수 있습니다.

g_hwndMain CreateWindowEx 함수 = (0, WC_TEXT,
NULL,
WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
0, 0, 400, 200,
phwnd, NULL, g_hInstance, NULL);

하지만 정적 인 창도 있습니다. 창문을 만드는 동안 그것을 할 수있는 방법이 있습니까? 또는 창을 만든 후에 사용할 수있는 다른 함수는 무엇입니까? SWP_NOSENDCHANGING 및 SWP_NOREPOSITION 사용하여 창을 만든 후 SetWindowPos 함수를 사용하여 시도했지만 그 트릭을 않았다. 어떤 아이디어?


아니요, 나는 움직일 수없는 창을 의미합니다. 기본적으로, 내가 만든 창은 텍스트를 받아 들일 수 있어야하고 동시에 움직일 수 있어야합니다.

+0

"static"이란 읽기 전용입니까? 그런 다음 텍스트를로드 한 후 [EM_SETREADONLY] (http://msdn.microsoft.com/en-us/library/bb761655(VS.85) .aspx)를 보냅니다. – RichieHindle

+0

정적 인 경우 창을 이동할 수 없습니다. – arul

+0

하지만 편집 컨트롤입니다 ... WS_CAPTION 등을주지 않으면 어쨌든 주위를 이동할 수 없습니다 ...? – RichieHindle

답변

0

도움 주셔서 감사합니다. 좋아 지금까지 나는이 WM_WINDOWPOSCHANGING 메시지

BOOL OnWindowPosChanging(HWND hwnd, WINDOWPOS *pwp) 
{ 

    return 0; 
} 

LRESULT CALLBACK 
WndProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) 
{ 
    switch (uiMsg) { 

     HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGING, OnWindowPosChanging); 
    } 

    return DefWindowProc(hwnd, uiMsg, wParam, lParam); 
} 

을 처리하기 위해 수행 한 나는 나의 창을 만들 때, 나는이 수행

g_hwndMain = CreateWindowEx(0, 
          TEXT("EDIT"), 
          NULL, 
          WS_BORDER, 
          0, 0, 400, 200, 
          phwnd, NULL, 
          g_hInstance, NULL); 

        if (!g_hwndMain) { 
         RemoveImages(spHTMLDoc);//Just so I know that the window has been created properly 
        } 
        else{       

         SetWindowPos(g_hwndMain, HWND_TOP, 500, 500, 300, 300, SWP_NOSENDCHANGING | SWP_SHOWWINDOW); 
        } 

SWP_NOMOVE 플래그가 코드가 위치를 변경하지 않습니다 그러나 사용자는 여전히 마우스를 사용하여 윈도우의 위치를 ​​움직여 변경할 수 있습니다. 그러나 이것이 바로 제가 막고 싶은 것입니다. 창의 크기는 이어야합니다. 내 코드에 누락 된 것이 있습니까?

+0

오케이, 알아 냈습니다. CreateWIndow에서 WS_CHILD 플래그를 네 번째 매개 변수로 추가하십시오. 이것은 트릭을 할 것입니다. 당신의 도움을 주셔서 감사합니다!!! – GotAmye

+0

WS_CHILD 대신 WS_POPUP을 사용하는 것이 더 좋습니다. – GotAmye

0

해당 창에 대해 WM_WINDOWPOSCHANGING 메시지를 처리 ​​한 다음 함께 전달하기 전에 WINDOWPOS 구조의 flags 멤버에 대한 SWP_NOMOVE 플래그를 설정해야합니다.

blog post에는 예가 있습니다 (크기는 변경되지 않지만 기술은 동일합니다).

관련 문제