응용 프로그램에서 개인 형식 (CF_PRIVATEFIRST
~ CF_PRIVATELAST
)으로 클립 보드에 데이터를 놓을 경우 WM_DESTROYCLIPBOARD
에 응답하여 해제해야합니다. 이러한 형식의 경우 시스템에서 자동으로 수행하지 않기 때문입니다.개인 클립 보드 형식 정리
그것은 하나의 응용 프로그램에서 사용되는 개인 포맷은 다른 응용 프로그램 (그들은 민간 영역에서 동일한 형식의 코드를 사용하는 경우에도)에서 볼 수없는 것을 사실 논리적으로해야한다.
a) 시스템에서 어떻게 이것을 시행합니까? 그것은 클립 보드 소유자 (윈도우 핸들)를 사용합니까?
b) 소유자 창이 닫히면 비공개 형식 항목이 클립 보드에서 자동으로 제거됩니까? (클립 보드 뷰어를 사용하면 보이지 않는 것처럼 보입니다.) 그래서 창 핸들을 다시 사용할 때 어떻게됩니까?
WM_DESTROYCLIPBOARD
에 대한 응답으로 메모리를 해제하는 것 외에도 응용 프로그램을 종료 할 때 메모리를 해제해야합니까? (클립 보드가 전역 메모리를 사용하여 어떤 프로세스에서든 데이터에 액세스 할 수 있다는 것을 알고 있으므로이 프로세스를 생성 한 프로세스가 종료 될 때 자동으로 해제되지 않는다고 생각합니다.)이상적으로 말하면, 응용 프로그램이 종료 될 때 개인용 형식 만 사용하고 표준 형식은 그대로 두십시오. 단, 클립 보드에서 하나의 형식 만 제거하는 API 호출을 찾을 수는 없습니다. 클립 보드를 비우고 비공개 형식을 명시 적으로 다시 쓰는 것 이외에이 작업을 수행하는 간단한 방법이 있습니까?
MSDN 설명서와 Google을 검색 한 결과 이러한 질문에 대한 답변을 찾을 수 없으므로 누구든지 도움을받을 수 있습니까?
는
가
동일한 이름을 사용하는 다른 응용 프로그램의 클립 보드 형식을 볼 수 없습니까? 개인용 형식을 사용하는 동일한 애플리케이션의 두 인스턴스간에 드래그 앤 드롭 할 수 있습니다. 2 가지 다른 응용 프로그램에 대해 이것이 올바르지 않아야하는 이유는 알 수 없습니다. – user2543253
@ user2543253 당신이 '같은 번호를 사용하면'이라고 생각한다고 가정합니다. 개인 클립 보드 형식에는 이름이 없습니다. 문제는 개인용 클립 보드 형식 번호가 모든 응용 프로그램간에 공유되는 경우 여러 가지 용도로 동일한 번호를 사용하는 두 응용 프로그램을 방지하기 위해 개인 형식의 중앙 레지스터가 있어야한다는 것입니다. 그리고 그들은 더 이상 개인적인 포맷이 아니라 CF_TEXT 같은 공개적이고 문서화 된 포맷입니다.등록 된 클립 보드 형식과 혼동하고 있습니까? –
"RegisterClipboardFormat"으로 등록 할 때 나는 같은 이름을 의미했습니다. 왜냐하면 그들은 같은 숫자를 얻었 기 때문입니다. 문서를 다시 읽으면 "하나 이상의 응용 프로그램에서 동일한 등록 된 클립 보드 형식을 사용하여 데이터를 복사하고 붙여 넣을 수 있습니다." "등록 된 형식과 혼동"한다는 것은 무엇을 의미합니까? 클립 보드 형식이 개인 형식으로 등록되지 않습니까? – user2543253