Delphi XE6 및 VCL 스타일을 사용하고 있습니다. 나는 메인 애플리케이션과 dll을 가지고있다. 내 주요 응용 프로그램은 런타임 테마를 활성화하고 vcl 스타일 파일을 사용하고 있습니다. 나는 나의 DLL과 아주 비슷한 것을했다. 런타임 테마를 활성화하고 VCL.Themes, VCL.Styles를 VCL 스타일 파일과 함께 사용 및 리소스 파일에 추가했습니다. DLL이로드 될 때 리소스에서 VCL 스타일을로드하고 DLL GUI를 설정합니다. 기본 응용 프로그램과 DLL은 런타임 패키지로 빌드되지 않습니다.VCL 스타일의 DLL이 응용 프로그램의 TMenuItem에 영향을줍니다.
이제는 기본 스타일의 GUI를 사용하여 고유 한 스타일로 꾸며졌으며 DLL gui도 자신 만의 스타일로 스타일을 지정했습니다. 이 때까지 잘 작동하는 것 ...
메인 애플리케이션에서 버튼을 클릭하면 TPopupMenu가 열립니다. 메인 애플리케이션 스타일 대신 DLL GUI와 동일한 스타일로 스타일이 지정됩니다. 메뉴를 탐색 할 때도 AV를 받고 프로그램이 다운됩니다. 첨부 된 이미지를 살펴보십시오.
내가 뭘 잘못하고 있니? 내가 현재 볼 수있는 유일한 해결 방법은 다른 컨트롤에서 파생 된 내 자신의 사용자 지정된 TPopupMenu를 만드는 것입니다.
나는 내 응용 프로그램과 비슷한 간단한 데모 프로그램을 준비했습니다. 자체 스타일의 호스트 응용 프로그램과 리소스에 스타일이 추가 된 DLL로 구성됩니다. 그것을 실행하고 팝업 버튼을 클릭 한 다음 팝업에서 무언가를 선택하십시오. 그것은 충돌하고 일부 StdWindowProc 또는 그런 식으로 중지됩니다. 또한 해당 메뉴에서 무언가를 선택하려고 할 때 윈도우 시스템 메뉴 (왼쪽 상단 모서리)로 이동하면 시스템 메뉴가 DLL GUI 및 충돌로 스타일 화된다는 것을 알 수 있습니다. RAR 파일 링크 : 당신의 도움에 대한 dropbox.com/sh/f2jmbsmw18akpyg/AAA6SWdBmVhf6n6K-mvYLLmua?dl=0
감사합니다.
가장 가능성있는 설명은 런타임 패키지를 사용하지 않으면 모듈 사이의 경계를 넘어 VCL 객체를 전달한다는 것입니다. –
내가 생각할 수있는 또 다른 가능성은 VCL 스타일이 아마도 flubs 리소스 열거를 코딩하고 전체 프로세스에서 리소스를 열거한다는 것입니다. 코드를 빠르게 검사하면 AutoDiscoverStyleResources가 True이면 문제가 될 수 있음을 알 수 있습니다. 'EnumModules'에 대한 그 호출은 나에게 조금 어색해 보인다. –
이것을 디버깅 할 수 없다면 우리가 파헤쳐달라고 요청하는 것 같습니다. 그렇게하려면 문제를 나타내는 코드가 필요할 수 있습니다. –