2012-10-20 3 views
3

경계선없는 콘솔 창을 만들려고합니다.
테두리 스타일을 제거한 WS_POPUP에 windowstyle을 설정할 수 있었지만 약간의 결함이있었습니다. Glitches..C++ : 콘솔 창을 WS_POPUP으로 설정

이 다시 그려 얻을, 또는 그런 일하지 않았다 콘솔 창에 대한 몇 가지 부분이 있습니다,하지만 난 기능을 전체 창에서 InvalidateRect()를 사용하여, 다른 다시 그릴 시도했지만 것으로 보인다 그들은 작동하지 않는 것 같습니다.
누군가가 SetWindowPos() (SWP_FRAMECHANGED 포함)를 사용하여 제안했지만 아무 것도하지 않습니다.

지금 잠시 동안이 probelm 만지작하고는 clientarea가 제대로 그리기되지 함께 할 수있는 뭔가가 확신 한

또한 바닥 glitchy 부분 것 (이것에 저를 인용하지 않음) 먼저 아래로 스크롤 할 때 검정색/투명하게 바뀌지 만 내 프로그램의 텍스트는 때때로 그 아래에 표시되지 않습니다. 내 지식으로는 배경이 없으므로 '카멜레온'효과가 있습니다.

아이디어가 있으십니까?

+2

콘솔은 보통 그런 종류의 잘하지 않습니다

마지막 코드는 다음과 같을 것이다. – chris

+0

나는 그것을 볼 수있다. 하지만 그건 정말 도움이되지 않습니다. –

+0

마지막에 무엇을 갖고 싶니? – Maximus

답변

3

나는 그것을 마침내 발견했습니다. (막시무스에게 큰 감사)
나는 그가 제안한 것처럼 SetWindowRgn()을 사용해야 만했다.

HWND hWnd = GetConsoleWindow(); 
RECT rcScr, rcWnd, rcClient; 

GetWindowRect(hWnd, &rcWnd); 
GetWindowRect(GetDesktopWindow(), &rcScr); 
GetClientRect(hWnd, &rcClient); 

MoveWindow(hWnd, (rcScr.right/2) - 330, (rcScr.bottom/2) - 180, rcWnd.right - rcWnd.left, rcWnd.bottom - rcWnd.top, 1); 
SetWindowLong(hWnd, GWL_STYLE, WS_POPUP); 
SetWindowRgn(hWnd, CreateRectRgn(rcClient.left + 2, rcClient.top + 2, rcClient.right + 2, rcClient.bottom + 2), TRUE); 
ShowWindow(hWnd, 1); 
+0

최근 버전의 Windows에서 'ShowWindow()'만 보내면 cmd를 올바르게 다시 볼 수 있다는 것을 알게되었습니다. –

+0

@ charles.milette 필자의 테스트 결과에 따르면 "legacy console 사용"이 선택되지 않은 상태에서 새로운 cmd.exe를 사용하는 Windows 10의 경우에만 해당됩니다. 나는이 문제를 단순히 "문제를 클립으로 보지 말라"는 것이 아니라 찾고자합니다. – user6003859

관련 문제