예제 #1
0
파일: codepage.cpp 프로젝트: alexlav/conemu
uintptr_t SelectCodePage(uintptr_t nCurrent, bool bShowUnicode, bool bShowUTF, bool bShowUTF7, bool bShowAutoDetect)
{
	CallbackCallSource = CodePageSelect;
	currentCodePage = nCurrent;
	// Создаём меню
	CodePages = new VMenu(L"", nullptr, 0, ScrY-4);
	CodePages->SetBottomTitle(MSG(!Opt.CPMenuMode?MGetCodePageBottomTitle:MGetCodePageBottomShortTitle));
	CodePages->SetFlags(VMENU_WRAPMODE|VMENU_AUTOHIGHLIGHT);
	CodePages->SetHelp(L"CodePagesMenu");
	// Добавляем таблицы символов
	FillCodePagesVMenu(bShowUnicode, bShowUTF, bShowUTF7, bShowAutoDetect);
	// Показываем меню
	CodePages->Show();

	// Цикл обработки сообщений меню
	while (!CodePages->Done())
	{
		switch (CodePages->ReadInput())
		{
			// Обработка скрытия/показа системных таблиц символов
			case KEY_CTRLH:
			case KEY_RCTRLH:
				Opt.CPMenuMode = !Opt.CPMenuMode;
				CodePages->SetBottomTitle(MSG(!Opt.CPMenuMode?MGetCodePageBottomTitle:MGetCodePageBottomShortTitle));
				FillCodePagesVMenu(bShowUnicode, bShowUTF, bShowUTF7, bShowAutoDetect);
				break;
			// Обработка удаления таблицы символов из списка выбранных
			case KEY_DEL:
			case KEY_NUMDEL:
				ProcessSelected(false);
				break;
			// Обработка добавления таблицы символов в список выбранных
			case KEY_INS:
			case KEY_NUMPAD0:
				ProcessSelected(true);
				break;
			// Редактируем имя таблицы символов
			case KEY_F4:
				EditCodePageName();
				break;
			default:
				CodePages->ProcessInput();
				break;
		}
	}

	// Получаем выбранную таблицу символов
	uintptr_t codePage = CodePages->Modal::GetExitCode() >= 0 ? static_cast<WORD>(GetMenuItemCodePage()) : (uintptr_t)-1;
	delete CodePages;
	CodePages = nullptr;
	return codePage;
}
예제 #2
0
void CGame2View::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if (mMouseLbuttonDown)
	{
		// get client dc for conversion of final rect.
		// to logical coord. from device coord.
		CClientDC dc(this);

		mMouseLbuttonDown = FALSE;

		if(mBoundingBoxIsUp)
		{
			// erase our current box...
			DrawBoundingBox(mCurSelectRect);
		}

		mBoundingBoxIsUp = FALSE;

		// figure new box...
		mMouseEndLoc = point;
		OnPrepareDC(&dc);
		dc.DPtoLP(&mMouseEndLoc);

		mCurSelectRect.top		= min(mMouseStartLoc.y,mMouseEndLoc.y);
		mCurSelectRect.bottom	= max(mMouseStartLoc.y,mMouseEndLoc.y);
		mCurSelectRect.left	= min(mMouseStartLoc.x,mMouseEndLoc.x);
		mCurSelectRect.right	= max(mMouseStartLoc.x,mMouseEndLoc.x);



		if(	((mCurSelectRect.bottom - mCurSelectRect.top) < MIN_BOX_WIDTH)
			&&	((mCurSelectRect.right - mCurSelectRect.left) < MIN_BOX_WIDTH) )
		{
			mPointSelectMode = TRUE;
			mCurSelectPoint = mMouseEndLoc;
			// dc.DPtoLP(&mCurSelectPoint);
		}
		else
		{
			mPointSelectMode = FALSE;
			// dc.DPtoLP(&mCurSelectRect);
		}
		// do something here (we now have our selection rectangle
		// convert to logical coordinates from device..

		// show proper stuff as selected..
		ProcessSelected();

		// force a redraw
		Invalidate(FALSE);
		// GetDocument()->UpdateAllViews(this);

	}
	else
	{
		CScrollView::OnLButtonUp(nFlags, point);
	}
}