示例#1
0
static BOOL CALLBACK RenameProc(HWND wnd,UINT msg,WPARAM wp,LPARAM lp)
{
	switch(msg)
	{
	case WM_INITDIALOG:
		uSetWindowLong(wnd,DWL_USER,lp);
		{
			rename_param * ptr = (rename_param *)lp;
			ptr->m_scope.initialize(FindOwningPopup(wnd));
			uSetWindowText(wnd,uStringPrintf("Rename playlist: \"%s\"",ptr->m_text->get_ptr()));
			uSetDlgItemText(wnd,IDC_EDIT,ptr->m_text->get_ptr());
		}
		return 1;
	case WM_COMMAND:
		switch(wp)
		{
		case IDOK:
			{
				rename_param * ptr = (rename_param *)GetWindowLong(wnd,DWL_USER);
				uGetDlgItemText(wnd,IDC_EDIT,*ptr->m_text);
				EndDialog(wnd,1);
			}
			break;
		case IDCANCEL:
			EndDialog(wnd,0);
			break;
		}
		break;
		case WM_CLOSE:
			EndDialog(wnd,0);
			break;
	}
	return 0;
}
BOOL CALLBACK playlists_dropdown::RenameDialogProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) {
	switch (msg)
	{
	case WM_INITDIALOG:
		{
			uSetWindowLong(wnd, DWL_USER, lp);
			pfc::string_base* ptr = reinterpret_cast<pfc::string_base*>(lp);
			pfc::string8 title("Rename playlist: \"");
			title << *ptr << "\"";
			uSetWindowText(wnd, title);
			uSetDlgItemText(wnd, IDC_PLAYLIST_NAME, *ptr);
			Edit_SetSel(uGetDlgItem(wnd, IDC_PLAYLIST_NAME), 0, -1);
			SetFocus(uGetDlgItem(wnd, IDC_PLAYLIST_NAME));
		}
		return 1;

	case WM_COMMAND:
		switch (wp)
		{
		case IDOK:
			uGetDlgItemText(wnd, IDC_PLAYLIST_NAME, *reinterpret_cast<pfc::string_base*>(uGetWindowLong(wnd, DWL_USER)));
			EndDialog(wnd, 1);
			break;

		case IDCANCEL:
			EndDialog(wnd, 0);
			break;
		}
		break;

	case WM_CLOSE:
		EndDialog(wnd, 0);
		break;
	}
	return 0;
}
BOOL CALLBACK playlists_dropdown::SortDialogProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) {
	switch (msg)
	{
	case WM_INITDIALOG:
		{
			uSetWindowLong(wnd, DWL_USER, lp);
			HWND hCombo = uGetDlgItem(wnd, IDC_SORT_STRING);
			cfg::sort_string.setup_dropdown(hCombo);
			if (!cfg::sort_string.is_empty()) {
				ComboBox_SetCurSel(hCombo, 0);
				ComboBox_SetEditSel(hCombo, 0, -1);
			}
			SetFocus(hCombo);
		}
		return 1;

	case WM_CONTEXTMENU:
		{
			const HWND source = (HWND) wp;
			if (source != NULL && source == GetDlgItem(wnd, IDC_SORT_STRING)) {
				cfg::sort_string.on_context(source, lp);
				return TRUE;
			}
		}
		break;

	case WM_COMMAND:
		switch (wp)
		{
		case IDOK:
			{
				uGetDlgItemText(wnd, IDC_SORT_STRING, *reinterpret_cast< pfc::string_base * >(uGetWindowLong(wnd, DWL_USER)));
				pfc::string8 pattern;
				if (uGetDlgItemText(wnd, IDC_SORT_STRING, pattern)) {
					cfg::sort_string.add_item(pattern);
				}
				EndDialog(wnd, 1);
			}
			break;

		case IDCANCEL:
			EndDialog(wnd, 0);
			break;

		case IDC_FIELDS:
			{
				HMENU menu = CreatePopupMenu();
				uAppendMenu(menu, MF_STRING | MF_GRAYED | MF_DISABLED, 0, "Copy to clipboard:");
				uAppendMenu(menu, MF_SEPARATOR, 0, 0);
				for (int i = 1; i < tabsize(g_fields_list); i++) {
					if (!g_fields_list[i].label) break; // Only basic fields
					uAppendMenu(menu, MF_STRING, i, g_fields_list[i].label);
				}
				RECT rc;
				GetWindowRect(GetDlgItem(wnd, IDC_FIELDS), &rc);
				int cmd = TrackPopupMenu(menu, TPM_NONOTIFY | TPM_RETURNCMD, rc.left, rc.bottom, 0, GetDlgItem(wnd, IDC_FIELDS), 0);
				DestroyMenu(menu);
				if (cmd >= 0 && cmd < tabsize(g_fields_list) && !!g_fields_list[cmd].label) {
					uSetClipboardString(g_fields_list[cmd].label);
				}
			}
			break;
		}
		break;

	case WM_CLOSE:
		EndDialog(wnd, 0);
		break;
	}
	return 0;
}
示例#4
0
	BOOL dialog_proc( HWND wnd, UINT msg, WPARAM wp, LPARAM lp )
	{
		switch ( msg )
		{
		case WM_INITDIALOG:
			{
				this->wnd = wnd;

				uSendDlgItemMessage( wnd, IDC_OVERRIDE, BM_SETCHECK, cfg_control_override, 0 );

				{
					insync( lock );
					changed_info = false;
					changed_controls = false;
					update();
				}

				SetTimer( wnd, 0, 100, 0 );

				cfg_placement.on_window_creation(wnd);
			}
			return 1;

		case WM_TIMER:
			{
				insync( lock );
				if ( changed_info )
				{
					changed_info = false;
					update();
				}
			}
			break;

		case WM_DESTROY:
			{
				cfg_placement.on_window_destruction( wnd );
				KillTimer( wnd, 0 );
				uSetWindowLong( wnd, DWL_USER, 0 );
				delete this;
				dialog = 0;
			}
			break;

		case WM_COMMAND:
			if ( wp == IDCANCEL )
			{
				DestroyWindow( wnd );
			}
			else if ( wp == IDC_OVERRIDE )
			{
				insync( lock );

				cfg_control_override = uSendMessage((HWND)lp,BM_GETCHECK,0,0);

				BOOL enable = song_renderer != 0 && cfg_control_override;

				for ( unsigned i = 0, j = DUMB_IT_N_CHANNELS; i < j; ++i )
				{
					EnableWindow( GetDlgItem( wnd, IDC_VOICE1 + i ), enable );
				}

				changed_controls = true;
			}
			else if ( wp == IDC_RESET )
			{
				insync( lock );

				changed_controls = mute_mask != 0;
				mute_mask = 0;

				if ( changed_controls )
				{
					update();
				}
			}
			else if ( wp - IDC_VOICE1 < DUMB_IT_N_CHANNELS )
			{
				unsigned voice = wp - IDC_VOICE1;
				t_uint64 mask = ~(1 << voice);
				t_uint64 bit = uSendMessage((HWND)lp,BM_GETCHECK,0,0) ? 0 : ( 1 << voice );

				insync( lock );

				changed_controls = true;
				mute_mask = ( mute_mask & mask ) | bit;
			}
			break;
		}

		return 0;
	}
示例#5
0
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);
}
示例#6
0
	static BOOL CALLBACK ConfigProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp)
	{

		switch (msg)
		{
		case WM_INITDIALOG:
		{
			uSendDlgItemMessageText(wnd, IDC_PLISTEDGE, CB_ADDSTRING, 0, "None");
			uSendDlgItemMessageText(wnd, IDC_PLISTEDGE, CB_ADDSTRING, 0, "Sunken");
			uSendDlgItemMessageText(wnd, IDC_PLISTEDGE, CB_ADDSTRING, 0, "Grey");

			uSendDlgItemMessage(wnd, IDC_SPINPL, UDM_SETRANGE32, -100, 100);
			uSendDlgItemMessage(wnd, IDC_SWITCH_SPIN, UDM_SETRANGE32, 0, 10000);

			refresh_me(wnd);
			initialised = true;
		}

		break;
		case WM_DESTROY:
		{
			initialised = false;
			SendMessage(wnd, WM_COMMAND, IDC_APPLY, 0);

		}
		break;
		case WM_COMMAND:
			switch (wp)
			{

			case (EN_CHANGE << 16) | IDC_PLHEIGHT:
			{
				if (initialised)
				{
					BOOL result;
					int new_height = GetDlgItemInt(wnd, IDC_PLHEIGHT, &result, TRUE);
					if (result) cfg_plheight = new_height;
					//						if (g_plist) uSendMessage(g_plist, LB_SETITEMHEIGHT, 0, get_pl_item_height());
					playlist_switcher_t::g_on_vertical_item_padding_change();
				}

			}
			break;
			case IDC_APPLY:
				if (playlist_switcher_string_changed)
				{
					playlist_switcher_t::g_refresh_all_items();
					playlist_switcher_string_changed = false;
				}
				break;

			case IDC_PLAUTOHIDE:
			{
				cfg_pl_autohide = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				g_on_autohide_tabs_change();
				//					if (g_main_window)
				//					{
				//						bool move = false;
				//					if (create_plist()) move = true;
				//						if (create_tabs()) move = true; 
				//						if (move) {move_window_controls();RedrawWindow(g_main_window, 0, 0, RDW_INVALIDATE|RDW_UPDATENOW);}
				//					}
			}
			break;
			case IDC_MCLICK:
				cfg_mclick = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				break;
				//case IDC_SHIFT_LMB:
				//		cfg_playlists_shift_lmb = SendMessage((HWND)lp,BM_GETCHECK,0,0);
				//		break;
				//case IDC_DELETE:
				//cfg_playlist_panel_delete = uSendMessage((HWND)lp,BM_GETCHECK,0,0);
				//break;
			case (EN_CHANGE << 16) | IDC_PLAYLIST_TF:
				cfg_playlist_switcher_tagz = string_utf8_from_window((HWND)lp);
				playlist_switcher_string_changed = true;
				break;
			case IDC_SIDEBAR_TOOLTIPS:
				cfg_playlist_sidebar_tooltips = SendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				break;
			case IDC_USE_PLAYLIST_TF:
				cfg_playlist_switcher_use_tagz = SendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				playlist_switcher_t::g_refresh_all_items();
				playlist_switcher_string_changed = false;
				break;
			case IDC_TABS_MULTILINE:
			{
				cfg_tabs_multiline = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				g_on_multiline_tabs_change();
#if 0
				if (g_main_window && g_tab)
				{
					//		create_tabs();
					long flags = WS_CHILD | TCS_HOTTRACK | TCS_TABS | (cfg_tabs_multiline ? TCS_MULTILINE : TCS_SINGLELINE) | WS_VISIBLE | WS_CLIPSIBLINGS | TCS_SINGLELINE;

					uSetWindowLong(g_tab, GWL_STYLE, flags);
					move_window_controls();
				}
#endif
			}
			break;
			case IDC_MCLICK3:
			{
				cfg_plm_rename = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
			}
			break;
			case IDC_PLDRAG:
			{
				cfg_drag_pl = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
			}
			break;
#if 0
			case IDC_MCLICK2:
			{
				cfg_mclick2 = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
			}
			break;
			case IDC_TABS:
			{
				cfg_tabs = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				if (g_main_window)
				{
					create_tabs();
					move_window_controls();
				}
			}
			break;
#endif
			case (CBN_SELCHANGE << 16) | IDC_PLISTEDGE:
			{
				cfg_plistframe = uSendMessage((HWND)lp, CB_GETCURSEL, 0, 0);
				playlist_switcher_t::g_on_edgestyle_change();
			}
			break;

			}
		}
		return 0;
	}
示例#7
0
static BOOL CALLBACK SpectrumPopupProc(HWND wnd,UINT msg,WPARAM wp,LPARAM lp)
{
	switch(msg)
	{
	case WM_INITDIALOG:
		uSetWindowLong(wnd,DWL_USER,lp);
		{
			spec_param * ptr = reinterpret_cast<spec_param*>(lp);
			ptr->m_scope.initialize(FindOwningPopup(wnd));
			uSendDlgItemMessage(wnd, IDC_BARS, BM_SETCHECK, ptr->ptr->mode == MODE_BARS, 0);
			HWND wnd_combo = GetDlgItem(wnd, IDC_FRAME_COMBO);
			EnableWindow(wnd_combo, ptr->b_show_frame);
			if (ptr->b_show_frame)
			{
				ComboBox_AddString(wnd_combo, _T("None"));
				ComboBox_AddString(wnd_combo, _T("Sunken"));
				ComboBox_AddString(wnd_combo, _T("Grey"));
				ComboBox_SetCurSel(wnd_combo, ptr->frame);
			}
			wnd_combo = GetDlgItem(wnd, IDC_SCALE);
			ComboBox_AddString(wnd_combo, _T("Linear"));
			ComboBox_AddString(wnd_combo, _T("Logarithmic"));
			ComboBox_SetCurSel(wnd_combo, ptr->m_scale);

			wnd_combo = GetDlgItem(wnd, IDC_VERTICAL_SCALE);
			ComboBox_AddString(wnd_combo, _T("Linear"));
			ComboBox_AddString(wnd_combo, _T("Logarithmic"));
			ComboBox_SetCurSel(wnd_combo, ptr->m_vertical_scale);
		}
		return TRUE;
	case WM_ERASEBKGND:
		SetWindowLongPtr(wnd, DWL_MSGRESULT, TRUE);
		return TRUE;
	case WM_PAINT:
		ui_helpers::innerWMPaintModernBackground(wnd, GetDlgItem(wnd, IDOK));
		return TRUE;
	case WM_CTLCOLORSTATIC:
		{
			spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
			if (GetDlgItem(wnd, IDC_PATCH_FORE) == (HWND)lp) {
				HDC dc =(HDC)wp;
				if (!ptr->br_fore) 
				{
					ptr->br_fore = CreateSolidBrush(ptr->cr_fore);
				}
				return (BOOL)ptr->br_fore;
			} 
			else if (GetDlgItem(wnd, IDC_PATCH_BACK) == (HWND)lp) 
			{
				HDC dc =(HDC)wp;
				if (!ptr->br_back) 
				{
					ptr->br_back = CreateSolidBrush(ptr->cr_back);
				}
				return (BOOL)ptr->br_back;
			}
			else
			return (BOOL)GetSysColorBrush(COLOR_3DHIGHLIGHT);
		}
		break;
	case WM_COMMAND:
		switch(wp)
		{
		case IDCANCEL:
			EndDialog(wnd,0);
			return TRUE;
		case IDC_CHANGE_BACK:
			{
				spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
				COLORREF COLOR = ptr->cr_back;
				COLORREF COLORS[16] = {get_default_colour(colours::COLOUR_BACK),GetSysColor(COLOR_3DFACE),0,0,0,0,0,0,0,0,0,0,0,0,0,0};
				if (uChooseColor(&COLOR, wnd, &COLORS[0]))
				{
					ptr->cr_back = COLOR;
					ptr->flush_back();
					RedrawWindow(GetDlgItem(wnd, IDC_PATCH_BACK), 0, 0, RDW_INVALIDATE|RDW_UPDATENOW);
				}
			}
			break;
		case IDC_CHANGE_FORE:
			{
				spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
				COLORREF COLOR = ptr->cr_fore;
				COLORREF COLORS[16] = {get_default_colour(colours::COLOUR_TEXT),GetSysColor(COLOR_3DSHADOW),0,0,0,0,0,0,0,0,0,0,0,0,0,0};
				if (uChooseColor(&COLOR, wnd, &COLORS[0]))
				{
					ptr->cr_fore = COLOR;
					ptr->flush_fore();
					RedrawWindow(GetDlgItem(wnd, IDC_PATCH_FORE), 0, 0, RDW_INVALIDATE|RDW_UPDATENOW);
				}
			}
			break;
		case IDC_BARS:
			{
				spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
				ptr->mode = (uSendMessage((HWND)lp, BM_GETCHECK, 0, 0) != TRUE ? MODE_STANDARD : MODE_BARS);
			}
			break;
		case IDC_FRAME_COMBO|(CBN_SELCHANGE<<16):
			{
				spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
				ptr->frame = ComboBox_GetCurSel(HWND(lp));
			}
			break;
		case IDC_SCALE|(CBN_SELCHANGE<<16):
			{
				spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
				ptr->m_scale = ComboBox_GetCurSel(HWND(lp));
			}
			break;
		case IDC_VERTICAL_SCALE|(CBN_SELCHANGE<<16):
			{
				spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
				ptr->m_vertical_scale = ComboBox_GetCurSel(HWND(lp));
			}
			break;
		case IDOK:
			{
				spec_param * ptr = reinterpret_cast<spec_param*>(uGetWindowLong(wnd,DWL_USER));
				EndDialog(wnd,1);
			}
			return TRUE;
		default:
			return FALSE;
		}
	default:
		return FALSE;
	}
}