virtual bool show_config_popup(HWND wnd_parent) { uie::visualisation_ptr p_vis; service_ptr_t<spectrum_extension> p_this; get_vis_ptr(p_vis); if (p_vis.is_valid()) p_this = static_cast<spectrum_extension*>(p_vis.get_ptr()); service_ptr_t<spectrum_extension> p_temp = p_this; if (!p_temp.is_valid()) uie::visualization::create_by_guid(get_visualisation_guid(), reinterpret_cast<uie::visualisation_ptr &>(p_temp)); pfc::array_t<t_uint8> m_data; if (!p_temp->b_active) { try{ get_vis_data(m_data); p_temp->set_config(&stream_reader_memblock_ref(m_data.get_ptr(), m_data.get_size()),m_data.get_size(),abort_callback_impl()); }catch (const exception_io &) {}; } spec_param param(p_temp->cr_fore, p_temp->cr_back, p_temp->mode, p_temp->m_scale, p_temp->m_vertical_scale, p_temp.get_ptr(), true, get_frame_style()); bool rv = !!uDialogBox(IDD_POPUP_SPECTRUM_NEW, wnd_parent, SpectrumPopupProc, (LPARAM)(¶m)); if (rv) { p_temp->cr_fore = param.cr_fore; cfg_vis2 = param.cr_fore; p_temp->cr_back = param.cr_back; cfg_vis = param.cr_back; p_temp->mode = param.mode; cfg_vis_mode = param.mode; p_temp->m_scale = param.m_scale; cfg_scale = param.m_scale; p_temp->m_vertical_scale = param.m_vertical_scale; cfg_vertical_scale = param.m_vertical_scale; set_frame_style(param.frame); if (p_temp->b_active) { p_temp->flush_brushes(); p_temp->clear(); } else { m_data.set_size(0); try{ p_temp->get_config(&stream_writer_memblock_ref(m_data), abort_callback_impl()); set_vis_data(m_data.get_ptr(), m_data.get_size()); } catch (pfc::exception &) {}; } } return rv; }
void window_visualisation::get_name(pfc::string_base & out)const { uie::visualization_ptr ptr; uie::visualization::create_by_guid(get_visualisation_guid(), ptr); ptr->get_name(out); }
LRESULT window_visualisation::on_message(HWND wnd,UINT msg,WPARAM wp,LPARAM lp) { if(msg == WM_CREATE) { m_wnd = wnd; long flags = WS_EX_CONTROLPARENT; if (m_frame == 1) flags |= WS_EX_CLIENTEDGE; if (m_frame == 2) flags |= WS_EX_STATICEDGE; uSetWindowLong(wnd, GWL_EXSTYLE, flags); SetWindowPos(wnd,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); list_vis.add_item(this); initialised = true; ui_extension::visualisation::create_by_guid(get_visualisation_guid(), p_vis); if (p_vis.is_valid()) { GetClientRect(wnd, &rc_client); window_visualisation_interface::g_create(m_interface, this); try{ p_vis->set_config(&stream_reader_memblock_ref(m_data.get_ptr(), m_data.get_size()),m_data.get_size(),abort_callback_impl()); }catch(const exception_io &){}; p_vis->enable(ui_extension::visualisation_host_ptr(m_interface.get_ptr())); } } else if (msg == WM_DESTROY) { if (p_vis.is_valid()) p_vis->disable(); flush_bitmap(); m_interface.release(); initialised = false; list_vis.remove_item(this); m_wnd=0; } else if (msg == WM_PAINT) { if (p_vis.is_valid()) { RECT rc_paint; if (!GetUpdateRect(wnd, &rc_paint, 0)) { rc_paint = rc_client; } HDC dc = GetDC(wnd); HDC dc_bmp = CreateCompatibleDC(0); if (!bm_display) make_bitmap(dc); HGDIOBJ meh = SelectObject(dc_bmp,bm_display); BitBlt(dc,0,0,rc_client.right,rc_client.bottom,dc_bmp,0,0,SRCCOPY); SelectObject(dc_bmp,meh); DeleteDC(dc_bmp); ReleaseDC(wnd, dc); ValidateRect(wnd, &rc_paint); } } else if (msg == WM_WINDOWPOSCHANGED) { LPWINDOWPOS lpwp = (LPWINDOWPOS)lp; if (!(lpwp->flags & SWP_NOSIZE)) { GetClientRect(wnd, &rc_client); flush_bitmap(); } } else if (msg == WM_ERASEBKGND) { return FALSE; } return uDefWindowProc(wnd,msg,wp,lp); }