2014-11-21 5 views
0

비디오를 재생하는 응용 프로그램이 있습니다. MCI를 사용하여 비디오를 재생하고 패널 컨트롤에 연결합니다. 기본 폼과 모든 컨트롤에서 마우스 클릭을 잡으려고합니다. 그러나 MCI로 재생중인 비디오를 클릭하면 마우스 클릭이 감지되지 않습니다.MCI 명령으로 재생 한 비디오의 마우스 클릭 감지

MCI 명령으로 재생 한 비디오에서 마우스 클릭을 어떻게 감지 할 수 있습니까?

+0

패널 컨트롤에 무언가를 첨부 할 경우 그 클릭을 어떻게 처리합니까? UI 컨트롤은 클릭 수를 처리 할 수 ​​있어야합니다. – techvice

+0

어떤 이유로 든 작동하지 않습니다. 그게 내가 패널에서 마우스로 클릭 수를 캡처하고 메인 폼 컨트롤에 추가하는 패널 핸들을 mci 비디오를 전달, 시도했다. 마우스 클릭은 전체 양식을 통과하고 양식 뒤에있는 것을 클릭합니다. 메인 폼은 결코 마우스 클릭을 포착하지 못한다. – iedoc

답변

0

마침내 mci 비디오 핸들의 경계선없는 양식을 만들어서 작업하게되었습니다. TransparencyKey를 backcolor로 설정했습니다. 이렇게하면 동영상은 계속 표시되지만 마우스 클릭은 기본 양식으로 전달됩니다.

나는 그것 때문에 난 아직도 왜

public VideoForm() 
    { 
     this.FormBorderStyle = FormBorderStyle.None; 
     this.TransparencyKey = Color.White; 
     this.TopMost = true; 
    } 

    public void PlayVideo(int width, int height, ScreenControl control) 
    { 
     string mciCommand = string.Format("open \"{0}\" Type mpegvideo alias {1} parent {2} style child", control.Location(), control.Name, this.Handle.ToString()); 
     int error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero); 

     mciCommand = string.Format("put {0} window at 0 0 {1} {2}", control.Name, width, height); 
     error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero); 

     mciCommand = string.Format("seek {0} to 0", control.Name); 
     error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero); 

     mciCommand = string.Format("play {0} repeat", control.Name); 
     error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero); 

     this.Show(); 
    } 
을 이해하기 위해 노력하고있어 형태, 내부에서 설정하여 작동하지 않습니다 어떤 이유로 기본 폼에서 폼의 크기와 위치를 설정하고있어