당신은 이와 같은 것을 찾고있을 수도 있습니다 (테스트되지 않았고, 나의 WTL은 녹슬었고주의해야합니다).
class TrayIconHandler : public CWindow, public CMessageMap {
public:
BEGIN_MSG_MAP(TrayIconHandler)
// Message handlers to taste
END_MSG_MAP()
};
class MainWindow : public CWindowImpl<MainWindow> {
public:
BEGIN_MSG_MAP(MainWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
// Other message handlers
CHAIN_MSG_MAP_MEMBER(tray_icon_)
END_MSG_MAP()
LRESULT OnCreate(UINT, WPARAM, LPARAM, BOOL&) {
tray_icon_.m_hWnd = m_hWnd;
}
private:
TrayIconHandler tray_icon_;
};
물론 두 개의 클래스가 서로 다른 소스 파일 및/또는 헤더에있을 수 있습니다.
코드를보고 나도 내가 성취하려고 시도하는 것이 가능할 지 확신하지 못합니다. 두 파일 (아마 두 개의 클래스)을 가질 수 있습니까? 둘 다'm_hWnd' 멤버가 같은 창을 참조합니까? – Paul
가능합니다. 그러나 여전히 너무 광범위합니다. –
글쎄, 예를 들어 트레이 아이콘을 가져 가라. 'WM_CREATE'에서'NOTIFYICONDATA'를 초기화하고,'Shell_NotifyIcon (NIM_ADD)'를 호출합니다. ' "TaskbarCreated"에, 나는 그것을 다시 만든다. 마우스 오른쪽 버튼을 클릭하면 메뉴가 표시됩니다. 모든 기능을 깨끗하게 별도의 파일로 옮길 수 있습니까? 나는 여분의 창 (너무 우아한 IMO가 아님)을 생성하여 작업을 해결 한이 클래스를 찾았습니다. http://www.naughter.com/ntray.html – Paul