헬마입니다.

이란은 제가 The Old New Thing 을 읽으면서 관심가지는 글들을 번역해서 올려놓는 란입니다.

글의 원문은 이곳입니다.

-----------------------------------------------------------------------------------------

우리의 컨텍스트 메뉴 표시하기의 첫번째 시도에서 알 수 있던 한가지 버그는 등록정보 대화상자가 여러분이 클릭한 위치에 나타나지 않는다는 것이다. 등록정보가 대화상자가 미친게 아니다. 단지 등록정보 대화상자는 마우스가 클릭된 위치를 모르고 있을뿐이고 여러분이 등록정보 대화상자에게 위치를 알려주면 된다.

          CMINVOKECOMMANDINFOEX info = { 0 };
          info.cbSize = sizeof(info);
          info.fMask = CMIC_MASK_UNICODE | CMIC_MASK_PTINVOKE;
          info.hwnd = hwnd;
          info.lpVerb  = MAKEINTRESOURCEA(iCmd - SCRATCH_QCM_FIRST);
          info.lpVerbW = MAKEINTRESOURCEW(iCmd - SCRATCH_QCM_FIRST);
          info.nShow = SW_SHOWNORMAL;
          info.ptInvoke = pt;

여러분은 CMINVOKECOMMANDINFOEX 구조체의 fMask 에 CMIC_MASK_PTINVOKE 플래그를 설정하고 ptInvoke 멤버에 위치를 넣고 실행하는 것으로 위치를 알려줄 수 있다.

이렇게 바꾸면 등록정보가 대화상자가 더 이상 임의의 위치에 나타나는 대신 여러분이 클릭한 위치에 나타나는 것을 관찰할 수 있다.

다음 시간에는, 우리의 샘플 프로그램의 또 다른 문제점을 잡도록 하겠다.

Published Thursday, September 23, 2004 7:00 AM by oldnewthing

댓글을 달아 주세요