2016-07-19 2 views
1

마우스로 양식을 드래그 할 때 양식의 위치를 ​​기반으로 일부 그래픽 렌더링을 업데이트하려고합니다. 양식이 테두리가 없기 때문에 이동하려면 ReleaseCaptureSendMessage을 사용하고 있습니다.ReleaseCapture를 사용하여 드래그하는 동안 WinForm 업데이트

그러나 드래그하는 동안 내 전화를 할 수 없습니다. SendMessage 값을 반환 할 때까지 실행되는 스레드를 생성 할 수 있다고 가정합니다. 그러나이 특정 문제에 대한 기본 메서드가 있는지 묻고 싶습니다.

public void MoveWindow() 
{ 
    ReleaseCapture(); 
    SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 
    .... 
} 

안부

+0

당신은 잘못하고있다. 우리가 잘못한 것을 볼 수는 없습니다. "내 전화를 할 수 없다"는 말조차도 할 수 없다. –

+0

@HansPassant 편집 된 게시물을 참조하십시오. –

+0

@HansPassant "내 전화를 걸 수 없습니다"는 것은 끌기 작업 중에 다른 메서드 호출을 수행하려는 것을 의미합니다. –

답변

0
당신은 동안과 운동의 끝에서 시작 올리는 형태의 이벤트를 사용할 수 있습니다

: 폼 이동하는 동안 뭔가를 형태의

  • 사용 Move 이벤트 .

  • 이동 시작시 작업을 수행하는 형식의 이벤트를 사용하십시오.

  • 이동의 마지막에 작업을 수행하는 양식의 이벤트를 사용하십시오.

private void Form1_Move(object sender, EventArgs e) 
{ 
    this.BackColor = this.Left/10 % 2 == 0 ? Color.Red : Color.Blue; 
} 
private void Form1_ResizeBegin(object sender, EventArgs e) 
{ 
    this.Text = this.Location.ToString(); 
} 
private void Form1_ResizeEnd(object sender, EventArgs e) 
{ 
    this.Text = this.Location.ToString(); 
} 
관련 문제