Не работает SetBkColor.Нужна помощь.
От: urban1981  
Дата: 14.01.11 06:06
Оценка:
Здравствуйте. Есть "свой" 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.