2012-07-04 2 views
0

마우스가 내 양식의 특정 영역 (마우스가 50,50 (픽셀)에서 시작하여 1000,500으로 끝나는 사각형이라고 상상할 수 있음)에서 벗어 났는지 여부를 감지하도록 타이머를 설정했습니다. 마우스가 그 직사각형 안에 있으면 두 번째 창이 튀어 나와 마우스를 따라 툴팁처럼 작동합니다. 문제는이 직사각형 위의 드레 이프 위쪽 메뉴이며, 메뉴를 사용하려고하면 메뉴를 이동하자마자 두 번째 창이 팝업 (타이머가 visible 속성을 true로 설정 함)합니다. 메뉴를 닫을 때 (초점이 맞지 않아서 짐작할 수 있습니다.)메뉴가 VB6에서 열려 있는지 어떻게 알 수 있습니까?

메뉴 중 하나가 열려있을 때이를 감지 할 수 있다면 if 문을 사용하여 툴팁 창을 표시하지 않도록 설정할 수 있습니다. 그 일을하는 법을 알지 못합니다.

답변

0

"메뉴"와 약간의 인터넷 검색을 위해 WIN32API.txt를 검색하는 방법을 알아 냈다고 생각하지만 실제로는 잘 모르겠습니다. 아마도이 솔루션은 내 컴퓨터에서만 작동합니다. 5000의 간격으로 타이머에이 코드를 넣는

...

Dim hMenu As Long 
hMenu = GetMenu(Form1.hwnd) 
MsgBox GetMenuState(hMenu, 0, MF_BYPOSITION) 

는보기 메뉴의 상태로 할 수 있습니다. 닫힌 상태에서는 숫자가 무작위로 표시되지만 (1552, 1296 등) 메뉴를 열면이 기본 값에서 128만큼 오프셋됩니다. 닫을 때 상태가 1552 인 메뉴는 열려있을 때 1680입니다.

왜 오프셋이 128인지 또는 모든 컴퓨터에서 작동하는지 (단지 안전해야 함, 불일치를 확인하도록 프로그래밍 할 것임, 128로 오프셋되지 않음) 나에게 효과가있는 것으로 보입니다. .

이 해결 방법에 문제가 있거나 더 좋은 방법이있는 경우 다른 답변으로 응답 해주세요. 답장을 보내 주시면 기꺼이 답변 해 드리겠습니다.

+1

상태는 비트 필드입니다. 이를 보시려면 계산기에서 숫자를 이진수로 변환 한 다음 비트 마스크를 조사하십시오. – Deanna

+0

@Deanna 여왕 모든 것 VB6,이 질문에 대한 답을 알고 있습니까? http://stackoverflow.com/questions/11515724/attempting-to-learn-polymorphism-etc-in-vb6-but-my-code-doesnt-do-what-i-wan/ – TimFoolery

+0

@Deanna Disregard; 우리가 알아 냈어. 사용자 오류가 심각합니다. :에스 – TimFoolery

관련 문제