2010-02-23 2 views
3

편집 상자를 소유하고 사용자가 주위를 이동하는 사용자 지정 컨트롤이 있습니다. 편집 상자는 일반적으로 다음과 같은 코드로 수정됩니다.하나의 MFC/Win32 컨트롤이 내 데스크톱 전체를 다시 칠하는 것처럼 보입니다.

edit.MoveWindow(&rc); 
edit.SetWindowText(text); 
edit.SetLimitText(N); 
edit.ShowWindow(SW_SHOW); 
edit.SetFocus(); 
edit.SetSel(0, CB_ERR); 

RECT rc는 사용자 지정 컨트롤의 로컬 좌표이며 편집은 부모 컨트롤로 만들어집니다. 나는 심지어이 이 확실히이라는 것을 확신하지 못한다. 그러나 때때로이 코드를 트리거 할 때 멋지고 매끄럽다. 내 데스크탑 전체가 다시 그려지는 것처럼 깜빡 인다. Invalidate (Rect)를 명시 적으로 호출하는 것을 볼 수 없습니다.

아이디어가 있으십니까?

+0

응용 프로그램에서 해당 코드를 주석 처리하면 바탕 화면이 계속 깜박입니까? – AshleysBrain

+0

'wodge'는 시원한 단어이고, 나는 그것을 일상 어휘에 적용하려고 노력할 것입니다. :) – Roel

답변

1

당신이 우리에게 보여주고있는 어떤 코드도 될 수 없습니다. 전체 데스크톱 플래시는 거의 항상 코드의 어딘가에서 InvalidateRect(NULL,...)을 호출하므로 계속 파고 있습니다.

이러한 호출 중 일부는 편집의 부모 창으로 메시지를 보내 게되며, 대부분 해당 메시지를 처리하는 동안 InvalidateRect가 발생합니다.

내가 도박을하는 사람이라면 SetFocus() 호출에서 다시 그리기를 트리거하는 호출로 걸 겠어.

관련 문제