가 TFrame
하위 클래스가 CM_ENABLEDCHANGED) 사용할 수 없습니다.재정은 다음과
첫 번째 아이디어는 가상 메서드 TControl.SetEnabled
을 재정의하는 것이 었습니다. 그 구현을 살펴보면 실제로 값이 다를 때 제어 메시지 CM_ENABLEDCHANGED
을 수행하는 것을 보았습니다.
올바른 방법으로 프레임의 Enabled
상태를 툴바에 적용하는 방법에 대해서는 잘 모르겠습니다.
일반적인 방법은 무엇입니까? 이 질문에 기본적으로 의견을 기반으로 하듯이, 내가 그것을 바꿔 보자 최우선 SetEnabled
또는 CM_ENABLEDCHANGED
처리 중 어떤 장점과 단점
이 있습니까?
것, 나는 나 자신의 생각 :
- 재정
SetEnabled
: 나는 새 값이 이전 값에서 차이가 있는지, 다시 확인해야 할 것입니다- . 그것은 중복 될 것입니다. (- 나에게 머리 스플리터를 호출 - 어느 성능에 큰 영향을,하지만 것 나에게 냄새가 난다.)
- 는
CM_ENABLEDCHANGED
처리 :이 메시지에 대한 코드를 상속 서스테인 어떻게- 를? 이 메시지에 대한 구현은 적어도
TControl
및TWinControl
입니다. 내가 수업 시간에 메시지를 처리한다면 여전히 처형 당할 것인가?TCustomHistoryFrame
?CM_ENABLEDCHANGED
처리
- 를? 이 메시지에 대한 구현은 적어도
는 프레임이 창 핸들이 있습니까? 아니면 그냥 부모에게 컨트롤을 주입합니까? 어떤 경우에는 패널 전체를 많이 감싸고 비활성화 할 수 있습니다. –
@DavidHeffernan 나는 당신을 올바르게 이해하는지 잘 모르겠습니다. 모든'TWinControl' 자손 (예 :'TFrame')은 TWinControl.CreateWindowHandle에 의해 윈도우 핸들을 얻습니다. 반면에 프레임은 물론 시각적 구성 요소 래퍼의 일종입니다. 모든 것을 (특히'tbMainFunction'을)'TPanel'에 넣으면, 그걸 사용 불가능하게하는 것과 똑같은 문제는 없을까요? –
'TFrame'이 윈도우 화되었는지 아닌지 확실하지 않았습니다. –