Beispiel #1
0
//=================================================================================================
void GamePanel::UpdateBoxIndex(float dt, int index)
{
	if(index != INDEX_INVALID)
	{
		if(index != last_index)
		{
			box_state = BOX_COUNTING;
			last_index = index;
			show_timer = 0.3f;
		}
		else
			show_timer -= dt;

		if(box_state == BOX_COUNTING)
		{
			if(show_timer <= 0.f)
			{
				box_state = BOX_VISIBLE;
				box_alpha = 0.f;

				FormatBox();

				if(box_img)
				{
					D3DSURFACE_DESC desc;
					box_img->GetLevelDesc(0, &desc);
					box_img_size = INT2(desc.Width, desc.Height);
				}
			}
		}
		else
		{
			box_alpha += dt*5;
			if(box_alpha >= 1.f)
				box_alpha = 1.f;
		}
	}
	else
	{
		box_state = BOX_NOT_VISIBLE;
		last_index = INDEX_INVALID;
	}

	if(box_state == BOX_VISIBLE)
	{
		INT2 text_size = GUI.default_font->CalculateSize(box_text);
		box_big.left = 0;
		box_big.right = text_size.x;
		box_big.top = 0;
		box_big.bottom = text_size.y;
		INT2 size = text_size + INT2(24,24);
		INT2 pos2 = INT2(GUI.cursor_pos) + INT2(24,24);
		INT2 text_pos(12,12);

		// uwzglêdnij rozmiar obrazka
		if(box_img)
		{
			text_pos.x += box_img_size.x+8;
			size.x += box_img_size.x+8;
			if(size.y < box_img_size.y+24)
				size.y = box_img_size.y+24;
		}

		// minimalna szerokoϾ
		if(size.x < 256)
			size.x = 256;

		INT2 text_pos2(12, text_pos.y);
		text_pos2.y += size.y - 12;
		int size_y = 0;

		if(!box_text_small.empty())
		{
			INT2 size_small = GUI.fSmall->CalculateSize(box_text_small, size.x-24);
			box_small.left = 0;
			box_small.right = size_small.x;
			box_small.top = 0;
			box_small.bottom = size_small.y;
			size_y = size_small.y;
			size.y += size_y + 12;
		}

		if(pos2.x + size.x >= GUI.wnd_size.x)
			pos2.x = GUI.wnd_size.x - size.x - 1;
		if(pos2.y + size.y >= GUI.wnd_size.y)
			pos2.y = GUI.wnd_size.y - size.y - 1;

		box_img_pos = INT2(pos2.x+12, pos2.y+12);
		box_big.left = text_pos.x + pos2.x;
		box_big.right = box_big.left + text_size.x;
		box_big.top = text_pos.y + pos2.y;
		box_big.bottom = box_big.top + text_size.y;

		box_small.left += pos2.x + text_pos2.x;
		box_small.right += pos2.x + text_pos2.x;
		box_small.top += pos2.y + text_pos2.y;
		box_small.bottom += pos2.y + text_pos2.y;
		box_small.right = box_small.left + box_size.x-24;

		box_size = size;
		box_pos = pos2;
	}
}
Beispiel #2
0
LRESULT MainDialogProc(HWND hDlg,
	UINT Msg,
	WPARAM wParam,
	LPARAM lParam)
{
	HKL hKl;

	switch (Msg)
	{
		case WM_INITDIALOG:
		{
			WCHAR Buf[255];
			UpdateData(hDlg);
			hMainDlg = hDlg;

			SubclassWnd(GetDlgItem(hDlg, IDC_LIST), L"List");
			SubclassWnd(GetDlgItem(hDlg, IDC_EDIT1), L"Edit1");
			SubclassWnd(GetDlgItem(hDlg, IDC_KLID), L"Klid");
			SubclassWnd(GetDlgItem(hDlg, ID_CANCEL), L"CancelB");
			SubclassWnd(GetDlgItem(hDlg, IDC_ACTIVATE), L"ActivateB");
			SubclassWnd(GetDlgItem(hDlg, IDC_REFRESH), L"RefreshB");
			SubclassWnd(GetDlgItem(hDlg, IDC_UNLOAD), L"UnloadB");
			SubclassWnd(GetDlgItem(hDlg, IDC_LOAD), L"LoadB");

			CheckRadioButton(hDlg, IDC_FROMLIST, IDC_FROMEDIT, IDC_FROMLIST);
			SetWindowText(GetDlgItem(hDlg, IDC_KLID), L"00000419");

			swprintf(Buf, L"Current thread id: %d", GetCurrentThreadId());
			SetWindowText(GetDlgItem(hDlg, IDC_CURTHREAD), Buf);

			SetWindowText(GetDlgItem(hDlg, IDC_DELAY), L"0");

			return 0;
		} /* WM_INITDIALOG */

		case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
				case ID_CANCEL:
				{
					EndDialog(hDlg, ERROR_CANCELLED);
					break;
				}

				case IDC_ACTIVATE:
				{
					if((hKl = GetActivateHandle(hDlg)) != INVALID_HANDLE_VALUE)
					{
						Sleep(GetDelayMilliseconds(hDlg));
						if(!(hKl = ActivateKeyboardLayout(hKl, GetActivateFlags(hDlg))))
							FormatBox(hDlg, MB_ICONERROR, L"Error",
								L"ActivateKeyboardLayout() failed. %d", GetLastError());
						else UpdateData(hDlg);
						//FormatBox(hDlg, 0, L"Activated", L"Prev - %x, err - %d.", hKl,
						// GetLastError());
					}
					else MessageBox(hDlg, L"No item selected", L"Error", MB_ICONERROR);
					break;
				}

				case IDC_UNLOAD:
				{
					if((hKl = GetSelectedLayout(hDlg)) != INVALID_HANDLE_VALUE)
					{
						Sleep(GetDelayMilliseconds(hDlg));
						if(!UnloadKeyboardLayout(hKl))
							FormatBox(hDlg, MB_ICONERROR, L"Error",
								L"UnloadKeyboardLayout() failed. %d",
								GetLastError());
						else UpdateData(hDlg);
					}
					else MessageBox(hDlg,  L"No item selected", L"Error", MB_ICONERROR);
					break;
				}

				case IDC_LOAD:
				{
					WCHAR buf[255];
					GetWindowText(GetDlgItem(hDlg, IDC_KLID), buf, sizeof(buf));
					Sleep(GetDelayMilliseconds(hDlg));
					if(!LoadKeyboardLayout(buf, GetLoadFlags(hDlg)))
						FormatBox(hDlg, MB_ICONERROR, L"Error",
							L"LoadKeyboardLayout() failed. %d",
							GetLastError());
					else UpdateData(hDlg);
					break;
				}

				case IDC_REFRESH:
				{
					UpdateData(hDlg);
					break;
				}

				case IDC_NEWTHREAD:
				{
					if(!CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL))
					{
						FormatBox(hDlg, MB_ICONERROR, L"Error!",
							L"Can not create thread (%d).", GetLastError());
					}
				}

				case IDC_LIST:
				{
					if(HIWORD(wParam) == LBN_SELCHANGE)
					{
						WCHAR buf[25];
						if((hKl = GetSelectedLayout(hDlg)) != NULL)
						{
							swprintf(buf, L"%x", hKl);
							SetWindowText(GetDlgItem(hDlg, IDC_HANDLE), buf);
						}
					}
					break;
				}

			}

			return TRUE;
		} /* WM_COMMAND */


		case WM_INPUTLANGCHANGE:
		{
			FormatMsg(L"dlg WM_INPUTLANGCHANGE lParam=%x wParam=%x\n", lParam, wParam);
			return FALSE;
		}

		case WM_INPUTLANGCHANGEREQUEST:
		{
			FormatMsg(L"dlg WM_INPUTLANGCHANGEREQUEST lParam=%x wParam=%x\n", lParam, wParam);
			UpdateData(hDlg);
			return FALSE;
		}

		case WM_CLOSE:
		{
			EndDialog(hDlg, ERROR_CANCELLED);
			return TRUE;
		} /* WM_CLOSE */

		default:
			return FALSE;
	}

}