Здравствуйте. Есть "свой" Control TABCONTROL. Хочу задать цвет фона таким способом:
[DllImport("coredll.dll")]
private static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("coredll.dll")]
private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
public override Color BackColor
{
get
{
return this.BackColor;
}
set
{
if (hwndTab != IntPtr.Zero)
{
IntPtr hdc = GetDC(hwndTab);
SetBkColor(hdc, value.ToArgb());
ReleaseDC(hwndTab, hdc);
}
}
}
Не работает. Подскажите пожалуйста в чем дело.Маленько накопал инфрмации не знаю верной ли:
public static ReversibleHandle Create(Color backColor, FrameStyle style)
{
ReversibleHandle ret = new ReversibleHandle();
int mixmode;
Color color;
if (backColor.GetBrightness() < 0.5)
{
mixmode = 10;
color = Color.White;
}
else
{
mixmode = 7;
color = Color.Black;
}
ret.HDC = new HandleRef(null, GetDCEx(new HandleRef(null, GetDesktopWindow()), new HandleRef(null, IntPtr.Zero), 0x403));
ret.MixMode = SetROP2(ret.HDC, mixmode);
ret.ptr2 = (style == FrameStyle.Dashed)
? new HandleRef(null, CreatePen(2, 1, ColorTranslator.ToWin32(backColor)))
: new HandleRef(null, CreatePen(0, 2, ColorTranslator.ToWin32(backColor)));
ret.ptr3 = new HandleRef(null, SelectObject(ret.HDC, new HandleRef(null, GetStockObject(5))));
ret.ptr4 = new HandleRef(null, SelectObject(ret.HDC, ret.ptr2));
SetBkColor(ret.HDC, ColorTranslator.ToWin32(color));//!!!!!!!!!!!!!!!!!
return ret;
}
Может нужно спортировать функцию аналог методу ColorTranslator.ToWin32(переводит указанную структуру Color в цвет Windows).Если ДА то подскажите пожалуйста название функции.
Заранее благодарю.
14.01.11 14:25: Перенесено модератором из '.NET' — TK