하이라이트 컨텍스트 메뉴에 다시 추가하시겠습니까?

하이라이트 컨텍스트 메뉴에 다시 추가하시겠습니까?

이 질문은 이전에 요청되었지만 대답은 "음, 다양한 옵션을 지원하는 것은 각 응용 프로그램에 달려 있습니다."입니다. 그래도 메모장, 브라우저 등 무엇이든 선택 항목을 마우스 오른쪽 버튼으로 클릭하면 상황에 맞는 메뉴가 만들어집니다. 앱은 어떻게 그렇게 합니까? 왜 추가할 수 없나요? 하이라이트 컨텍스트 메뉴에 어떻게 추가하나요? 대답이 없는 것보다 대답이 없는 것이 낫습니다.

답변1

짧은 답변: 새 메뉴 항목을 추가한 경우,프로그램은 항목을 클릭했을 때 무엇을 해야할지 알 수 없습니다.새로운 메뉴 항목이 어떤 일을 하게 하려면 실제로 프로그램의 코드를 변경해야 합니다. 이것이 "각 응용 프로그램에 따라 다릅니다"가 유효한 대답인 이유입니다.


대부분의 다른 운영 체제와 마찬가지로 Windows는 GUI 프로그램을 구축하기 위한 일련의 기능을 제공합니다. 일부는 시스템의 일부("창 만들기")이고 다른 일부는 대부분 편의를 위한 것입니다("클릭할 수 있는 버튼 그리기").

대부분의 프로그램은 이러한 기능을 사용하여 메뉴(일반 및 컨텍스트)를 표시합니다. 기본적으로 Windows에 항목 목록을 제공하고 메뉴 형식으로 화면에 표시되도록 요청하고 선택한 내용을 프로그램에 알립니다.

Windows는 항목 목록의 출처가 어디인지 특별히 신경 쓰지 않습니다. 일부 메뉴는 프로그램 자체에 의해 생성됩니다(예: "최근 파일" 목록). 최근 파일 목록을 생성하는 프로그램의 일부를 실제로 다시 작성하지 않고는 이를 변경할 수 없습니다. 메모장의 "파일", "편집" 또는 "도움말" 메뉴와 같은 다른 메뉴는 파일 자체에 저장된 "리소스"에서 생성되며 .exe이러한 리소스를 편집하는 도구가 있습니다(예: 메뉴 항목 재정렬 또는 변경) 프로그램 아이콘).

그러나 새로운 메뉴 항목을 추가하기 위해 그러한 도구를 사용한다면, 프로그램이 작동하지 않을 것입니다.어떻게 해야할지 모르겠어. 각 메뉴 항목과 관련된 마법은 없으며 단일 숫자인 "명령 ID"만 있습니다. 예를 들어, 많은 프로그램에서 흔히 사용되는 "Copy"에는 명령 ID 12("IDM_COPY")가 할당되어 있으며 단일 프로그램에 특정한 항목(예: "New Game")에는 1234나 2468 또는 기타 항목이 있을 수 있습니다. 상황에 맞는 메뉴를 열고 "복사"를 클릭하면 Windows는 메모장에 "명령 ID 12가 선택되었습니다"라고만 알리고, 그런 일이 발생할 때마다 실제로 선택한 텍스트를 클립보드에 넣는 것은 메모장에 달려 있습니다.

  • 잘라내기 → ID 11 → 메모장에서 클립보드에 텍스트를 넣은 후 문서에서 삭제합니다.
  • 복사 → ID 12 → 메모장은 클립보드에 텍스트를 넣습니다.
  • 붙여넣기 → ID 13 → 메모장은 클립보드에서 텍스트를 가져와서 문서에 삽입합니다.
  • 노래 → ID 12 → 메모장에서 텍스트를 클립보드에 넣습니다.
  • 다시 복사 → ID 3456 → 메모장은 ID 3456이 무엇을 의미하는지 전혀 모르기 때문에 아무 작업도 수행하지 않습니다.

참고 사항: 위의 내용은 약간 단순화되었습니다. 메모장의 상황에 맞는 메뉴는 실제로 앞서 언급한 Windows에서 제공하는 유틸리티 기능의 일부인 "편집 가능한 텍스트" 컨트롤에 의해 구현됩니다. 그러나 기본 메뉴는 전적으로 메모장의 일부입니다.

참고 사항: 일반적으로 스킨이나 테마를 적용할 수 있는 일부 프로그램은 실제로 자체적으로 다양한 컨트롤을 그립니다. 팝업 메뉴는 제목 표시줄이 없는 창에 불과하므로 이는 특별히 어렵지 않습니다. 이러한 프로그램의 코드를 직접 본 적은 없지만 세부 사항은 크게 변하지 않을 것이라고 생각합니다.

관련 정보