// /// Virtual called after the window holding a gadget has been created // void TControlGadget::Created() { PRECONDITION(GetGadgetWindow()); PRECONDITION(GetGadgetWindow()->GetHandle()); // Create control is necessary // Control->SetParent(GetGadgetWindow()); if (GetGadgetWindow()->GetHandle() && !Control->GetHandle()) { Control->Create(); Control->ShowWindow(SW_SHOWNA); } // Register control with the tooltip window (if there's one) // TTooltip* tooltip = GetGadgetWindow()->GetTooltip(); if (tooltip) { CHECK(tooltip->GetHandle()); // Register the control with the tooltip // if (Control->GetHandle()) { TToolInfo toolInfo(GetGadgetWindow()->GetHandle(), Control->GetHandle()); tooltip->AddTool(toolInfo); } } }
// /// Called when the control gadget is removed from the parent window. // /// Override the Remove() virtual to take the oportunity to unparent the /// control window from the owning Window // void TControlGadget::Removed() { TRACEX(OwlGadget, 1, "TControlGadget::Removed @" << (void*)this); Control->ShowWindow(SW_HIDE); // Sirma Update Control->SetParent(0); // Should we destroy the control at this point?? // Since it's no longer in the parent's child-list, there's a potential // leak. However, the semantics of this function is 'Removed' - therefore // one could be removing the control to be reinserted in another // gadgetwindow. // Unregister ourself with the tooltip window (if there's one) // if (GetGadgetWindow() && GetGadgetWindow()->GetHandle()) { TTooltip* tooltip = GetGadgetWindow()->GetTooltip(); if (tooltip) { CHECK(tooltip->GetHandle()); TToolInfo toolInfo(GetGadgetWindow()->GetHandle(), Control->GetHandle()); tooltip->DeleteTool(toolInfo); } } }
LRESULT CPlayList::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // Init the CDialogResize code DlgResize_Init(); //Bind keys... m_haccelerator = AtlLoadAccelerators(IDR_ACCELERATORS_PLAYLIST); // bind buttons with objects btnAdd.Attach(GetDlgItem(IDC_BTN_ADD)); btnRemove.Attach(GetDlgItem(IDC_BTN_REMOVE)); btnAddFolder.Attach(GetDlgItem(IDC_BTN_ADDFOLDER)); btnLoadPlayList.Attach(GetDlgItem(IDC_BTN_LOADPL)); btnSavePlayList.Attach(GetDlgItem(IDC_BTN_SAVEPL)); btnPrevMod.Attach(GetDlgItem(IDC_BTN_PREVMODULE)); btnPlayMod.Attach(GetDlgItem(IDC_BTN_PLAYSELECTION)); btnNextMod.Attach(GetDlgItem(IDC_BTN_NEXTMODULE)); HINSTANCE inst = _Module.GetResourceInstance(); // load & set button icons HICON icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_OPEN), IMAGE_ICON, 16, 16, LR_SHARED); btnLoadPlayList.SetIcon(icon); icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_SAVE), IMAGE_ICON, 16, 16, LR_SHARED); btnSavePlayList.SetIcon(icon); icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_PREV), IMAGE_ICON, 16, 16, LR_SHARED); btnPrevMod.SetIcon(icon); icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_PLAY), IMAGE_ICON, 16, 16, LR_SHARED); btnPlayMod.SetIcon(icon); icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_NEXT), IMAGE_ICON, 16, 16, LR_SHARED); btnNextMod.SetIcon(icon); // UINT uCToolTipCtrlStyle = TTS_NOPREFIX |TTS_NOFADE | TTS_NOANIMATE; // | TTS_BALLOON UINT uToolFlags = TTF_IDISHWND | TTF_SUBCLASS; ATLVERIFY(NULL != m_wndToolTip[0].Create(m_hWnd, 0, NULL, uCToolTipCtrlStyle)); // WS_POPUP|TTS_NOPREFIX|TTS_NOFADE|TTS_NOANIMATE CToolInfo toolInfo(uToolFlags, btnAdd.m_hWnd, 0, 0, _T("Add file(s)")); m_wndToolTip[0].AddTool(&toolInfo); m_wndToolTip[0].SetDelayTime(TTDT_INITIAL,0); m_wndToolTip[0].SetDelayTime(TTDT_RESHOW,0); m_wndToolTip[0].Activate(TRUE); ATLVERIFY(NULL != m_wndToolTip[1].Create(m_hWnd, 0, NULL, uCToolTipCtrlStyle)); toolInfo.Init(uToolFlags, btnRemove.m_hWnd, 0, 0, _T("Remove File(s)")); m_wndToolTip[1].AddTool(&toolInfo); m_wndToolTip[1].Activate(TRUE); ATLVERIFY(NULL != m_wndToolTip[2].Create(m_hWnd, 0, NULL, uCToolTipCtrlStyle)); toolInfo.Init(uToolFlags, btnAddFolder.m_hWnd, 0, 0, _T("Add Folder")); m_wndToolTip[2].AddTool(&toolInfo); m_wndToolTip[2].Activate(TRUE); // Create the listview columns playListView.Attach(GetDlgItem(IDC_LSV1)); playListView.SetView(LV_VIEW_DETAILS); // FIXME doesnt work //playListView.SetExtendedListViewStyle(LVS_SHOWSELALWAYS); playListView.AddColumn(_T("Filename"), LV_FIELD_FILENAME); playListView.SetColumnWidth(LV_FIELD_FILENAME, 150); // playListView.AddColumn(_T("Title"), LV_FIELD_TITLE); playListView.SetColumnWidth(LV_FIELD_TITLE, 120); // playListView.AddColumn(_T("Author"), LV_FIELD_AUTHOR); playListView.SetColumnWidth(LV_FIELD_TITLE, 250); // playListView.AddColumn(_T("Released"), LV_FIELD_RELEASED); playListView.SetColumnWidth(LV_FIELD_TITLE, 200); // playListView.AddColumn(_T("Path"), LV_FIELD_PATH); playListView.SetColumnWidth(LV_FIELD_PATH, 300); // playListView.AddColumn(_T("Status"), LV_FIELD_STATUS); playListView.SetColumnWidth(LV_FIELD_STATUS, 50); // playListView.AddColumn(_T("Type"), LV_FIELD_TYPE); playListView.SetColumnWidth(LV_FIELD_TYPE, 50); // playListView.AddColumn(_T("Load address"), LV_FIELD_LOAD_ADDRESS); playListView.SetColumnWidth(LV_FIELD_LOAD_ADDRESS, 32); // playListView.AddColumn(_T("#"), LV_FIELD_INDEX); playListView.SetColumnWidth(LV_FIELD_INDEX, 32); // register hotkeys for the playlist ::RegisterHotKey(m_hWnd, 1, MOD_ALT | MOD_CONTROL, VK_RIGHT); ::RegisterHotKey(m_hWnd, 2, MOD_ALT | MOD_CONTROL, VK_LEFT); // // register object for message filtering and idle updates CMessageLoop* pLoop = _Module.GetMessageLoop(); ATLASSERT(pLoop != NULL); pLoop->AddMessageFilter(this); pLoop->AddIdleHandler(this); return TRUE; }