Фишка: определение цвета фона чарта

 

Может быть полезна для автоматического задания цвета объектов для черного/белого фона.

int getBackgroundColor()
{
  int h = WindowHandle(Symbol(), Period());
  int hDC = GetWindowDC(h);
  int col = GetPixel(hDC, 2, 2);
  if(col==-1) {
    // левый верхний угол не виден
    int rect[4];
    GetWindowRect(h, rect);
    int wW = rect[2] - rect[0]; // ширина окна
    int wH = rect[3] - rect[1]; // высота окна
    col = GetPixel(hDC, wW-3, wH-3); // правый нижний угол
    if(col==-1) col = GetPixel(hDC, 2, wH-3); // ЛНУ
    if(col==-1) col = GetPixel(hDC, wW-3, 2); // ПВУ
  }
  ReleaseDC(h, hDC);
  return(col);
}
Файлы:
 
Интересно! Такие вещи надо в копилке (Code Base) выкладываь.
 
Zhunko писал(а) >>
Интересно! Такие вещи надо в копилке (Code Base) выкладываь.

Соберу несколько, выложу в Code Base.

 
Erics писал(а) >>

Может быть полезна для автоматического задания цвета объектов для черного/белого фона.

Можно наверное использовать и эту для получения цвета фона.
The GetBkColor function returns the current background color for the specified device context.

Declare Function GetBkColor Lib "gdi32" Alias "GetBkColor" (ByVal hdc As Long) As Long

А этой может быть можно цвет фона изменить?

Declare Function SetBkMode Lib "gdi32" Alias "SetBkMode" (ByVal hdc As Long, ByVal nBkMode As Long) As Long

 
diakin писал(а) >>

Можно наверное использовать и эту для получения цвета фона.
The GetBkColor function returns the current background color for the specified device context.

Declare Function GetBkColor Lib "gdi32" Alias "GetBkColor" (ByVal hdc As Long) As Long

А этой может быть можно цвет фона изменить?

Declare Function SetBkMode Lib "gdi32" Alias "SetBkMode" (ByVal hdc As Long, ByVal nBkMode As Long) As Long

Проверил: GetBkColor выдает белый фон в любом случае.

 
Спасибо. Оч хорошо.
 
Erics:

Может быть полезна для автоматического задания цвета объектов для черного/белого фона.


Что вернёт функция WindowHandle, если открыто больше одного окна с параметрами symbol и timeframe?
 
PapaYozh:

Что вернёт функция WindowHandle, если открыто больше одного окна с параметрами symbol и timeframe?
Вернёт дескриптор окна, на котором она вызвана.
 
Zhunko:
Вернёт дескриптор окна, на котором она вызвана.
А если она вызвана из другого окна, но в ней явно прописаны ТФ и символ нескольких одинаковых окон?
 
granit77:
А если она вызвана из другого окна, но в ней явно прописаны ТФ и символ нескольких одинаковых окон?
Вернёт то, которое наверху Z-последовательности. Активное окно с графиком всегда наверху.
Причина обращения: