Text on windows background

change the background color of a dialog box win32api

I’m trying to change the background color of a dialog box (win 7, vs2010,c++).

I tried to catch WM_CTLCOLOR , WM_ERASEBKGND and change the color. I managed to catch only the WM_ERASEBKGND message but in this way I manage in debug mode to see that I changed the background color of the window, but when the dialogBox is finish to upload itself, the color is overrun by the defualt grey color of the DialogBox.

I’m creating the DialogBox using the CreateDialogParam func.

I tried to use the function:

but it didn’t help.

What should I do?

2 Answers 2

When you respond to WM_ERASEBKGND you must return TRUE , otherwise your default dialog procedure will set the color of the dialog to the default system color.

Also, your second parameter in your call to SelectObject is wrong, it should be TRANSPARENT , not TRANSPARENTE.

As member arx said, you need to handle WM_CTLCOLORDLG message to achieve what you want.

Here is a small demo app that you can copy and paste into your Visual Studio:

In your resource.h paste this:

Do not forget the empty line above!

In your resource file ( .rc extension ) paste this:

And finaly, the main.cpp :

Especially pay attention to the message loop, and the way I have stored the HWND of the dialog.

Also note that the brush you create is the brush you must destroy when you no longer need ( usually in response to WM_CLOSE ).

If there is anything else I can do to help, ask me and I will try to help you.

How to run a command in the background on Windows?

In linux you can use command & to run command on the background, the same will continue after the shell is offline. I was wondering is there something like that for windows…

5 Answers 5

I’m assuming what you want to do is run a command without an interface (possibly automatically?). On windows there are a number of options for what you are looking for:

Best: write your program as a windows service. These will start when no one logs into the server. They let you select the user account (which can be different than your own) and they will restart if they fail. These run all the time so you can automate tasks at specific times or on a regular schedule from within them. For more information on how to write a windows service you can read a tutorial online such as (http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx).

Better: Start the command and hide the window. Assuming the command is a DOS command you can use a VB or C# script for this. See here for more information. An example is:

You are still going to have to start the command manually or write a task to start the command. This is one of the biggest down falls of this strategy.

  • Worst: Start the command using the startup folder. This runs when a user logs into the computer
  • Changing the text and background color of a PDF file

    I’d like to change the background color and text color programmatically in PDF documents so that they’re nicer to read at night (kinda like in Adobe Reader: Edit -> Preferences -> Accessibility -> Replace Document Colors).

    Is there any good command line tool or API for Windows that can do that?

    So far I haven’t found any. It’s OK if it needs to save the newly colored PDF into a new file.

    4 Answers 4

    There is no way to do this directly, with no (Free Software or gratis) tool I’m aware of. (Because in the general case, you’ll have to change all colors of the PDF pages, not just the background alone, so you can still have some contrast and color differences.)

    What you describe for Adobe Reader does not change the PDF file itself, it changes the way the application renders the pages (by inverting colors, or similar). The PDF remains the same during and after viewing it.

    Читайте также:  Vhdx чем открыть linux

    However, you might be able to achieve a similar thing by applying a suitable ICC color profile to the input PDF and produce, with the help of (a very recent version of) Ghostscript, a new output PDF from this.

    The question would remain: what IS a «suitable» ICC color profil for your purpose??

    I’ve shortly considered to apply a gray-ish background to the PDF with the help of pdftk . background . command line. But this would probably make some or many PDFs unreadable. (A black background would surely make it unreadable, because most text is black and would remain so.)

    To create a PDF page (A4 size) which could serve as the gray background, you could use Ghostscript: gs -o gray.pdf -sDEVICE=pdfwrite -g5950x8420 -c «.8 setgray 0 0 595 842 rectfill showpage» .

    Then apply it to your original PDF (A4): pdftk original.pdf background gray.pdf output orig-with-backgr.pdf .

    Note, this will only change the background of these pages (or those areas of pages), where the original background is transparent, as most text-based PDFs are. It will not work for pages or areas where the background is opaque white or color.)

    You can also achieve a permanent color change (inverse colors) quite easily with the help of ImageMagick. But this will at the same time munch and make mincemeat of your nice vector PDFs, converting them into complete-raster image pages: convert nice.pdf -alpha off -invert inverted-colors-ugly-raster.pdf .

    Finally, here is a rather unreliable way to accomplish the inverting of colors with the help of Ghostscript. It sets up a colortransfer function for the output PDF file:

    It is unreliable, because not every PDF viewer will honor that setting. I’ve tested it a few times in the past.

    These viewers DO SHOW inverted colors:

    1. Adobe Reader
    2. Adobe Acrobat
    3. gv
    4. Ghostscript/gs
    5. Chrome’s native PDF renderer (‘pdfium’)

    These ones DON’T SHOW inverted colors:

    1. Chrome with PDF.js
    2. Firefox with PDF.js
    3. Zathura
    4. MuPDF

    Just in case the OP doesn’t really need to change the PDF document colors permanently, but only wants a PDF viewer other than Acrobat that can do similarly change the displayed colors.

    MuPDF: MuPDF is a lightweight PDF viewer (amongst other things). It can invert the displayed colors with the simple stroke of the i for any document while it is open. MuPDF is also available for Windows (and iOS, and Android, and OSX, and Linux). (It is made by the same company which brought us Ghostscript).

    MuPDF screenshots here: «normal» view (left) and «inverted» view (right)

    SumatraPDF: This is a very popular alternative PDF viewer for Windows. Its PDF rendering engine is based on MuPDF. Hitting . in presentation mode, it changes background to black. Hitting w in presentation mode, it changes background to white. (I don’t think it can also invert all colors, but I do not have the latest release available right now to check.) For startup adding -invert-colors to the command line, it will invert the colors for the rendered document.

    Zathura: A lightweight PDF viewer for Linux and OSX, which can be controlled by Vim-like keyboard shortcuts. ctrl + r will re-color the rendering of any opened document. Background will change to dark, texts will change to bright gray (however it will not invert a, say blue text to yellow, like MuPDF does). I’m not sure if it is available on Windows too.

    Evince: The Gnome PDF viewer, available for Linux, OSX and Windows. It can invert the colors of the open document too; the keyboard shortcut is ctrl + i .

    background

    CSS Internet Explorer Chrome Opera Safari Firefox Android iOS
    2.1 6.0+ 8.0+ 1.0+ 3.5+ 1.0+ 1.0+ 2.1+ 1.0+
    3 9.0+ 1.0+ 10.5+ 1.3+ 3.6+ 2.1+ 1.0+

    Краткая информация

    Значение по умолчанию transparent || none || repeat || scroll || 0% 0%
    Наследуется Нет
    Применяется Ко всем элементам
    Ссылка на спецификацию http://www.w3.org/TR/CSS21/colors.html#propdef-background

    Версии CSS

    Описание

    Универсальное свойство background позволяет установить одновременно до пяти характеристик фона. Значения могут идти в любом порядке, браузер сам определит, какое из них соответствует нужному свойству. Для подробного ознакомления смотрите информацию о каждом свойстве отдельно. В CSS3 допустимо указывать параметры сразу нескольких фонов, перечисляя их через запятую.

    Синтаксис

    = [background-attachment || background-image || background-position || background-repeat] | inherit

    = [background-attachment || background-color || background-image || background-position || background-repeat] | inherit

    Если наряду с фоновыми изображениями требуется задать цвет фона элемента, он указывается в последнюю очередь после перечисления.

    Значения

    Любые комбинации пяти значений, разделяемых между собой пробелом, определяющих стиль фона, в произвольном порядке. Ни одно значение не является обязательным, поэтому неиспользуемые можно опустить. inherit наследует значение у родительского элемента.

    Читайте также:  Не могу зайти безопасный режим windows 10 если система не загружается

    XHTML 1.0 CSS2.1 IE Cr Op Sa Fx

    Результат данного примера показан ниже (рис. 1).

    Рис. 1. Вид фона и фонового рисунка в блоке фиксированного размера

    HTML5 CSS3 IE Cr Op Sa Fx

    Объектная модель

    [window.]document.getElementById(» elementID «).style.background

    Браузеры

    Internet Explorer до версии 7.0 включительно не поддерживает значение inherit .

    2.10. CSS-фон

    Каждый блок html-элемента имеет фоновый слой, который может быть полностью прозрачным (по умолчанию) или заполнен цветом и/или одним или несколькими изображениями. CSS-свойства фона указывают, какой цвет background-color и изображения background-image использовать, а также их размер, расположение, способ укладки и т.д.

    Свойства фона не наследуются, но фон родительского блока будет просвечивать по умолчанию из-за начального значения в background-color: transparent .

    Фон не отображается у пустых элементов с нулевой высотой. Отрицательные значения свойства margin не влияют на фон элемента.

    Свойства фона html-элементов

    1. Базовый цвет: свойство background-color

    Свойство background-color устанавливает цвет фона элемента. Цвет рисуется за фоновыми изображениями. Для блочных элементов цвет фона распространяется на всю ширину и высоту блока элемента, для строчных — только на область их содержимого.

    Цвет фона обрезается в соответствии со значением background-clip самого нижнего слоя фонового изображения.

    Свойство не наследуется.

    background-color
    Значения:
    цвет Значение принимает все форматы цвета свойства color. Значение по умолчанию transparent .
    initial Устанавливает значение свойства в значение по умолчанию.
    inherit Наследует значение свойства от родительского элемента.

    Рис. 1. Свойство background-color для разных элементов

    2. Источник изображения: свойство background-image

    Свойство background-image устанавливает фоновое изображение (одно или несколько) элемента. Значение none считается слоем изображения, но ничего не рисует. Изображение, которое является пустым (нулевой ширины или нулевой высоты), которое не загружается или не может быть отображено (например, потому что оно не в поддерживаемом формате изображения) также считается слоем, но ничего не рисует.

    Семантически важные изображения должны предоставляться в разметке документа, например, с тегом .

    Свойство не наследуется.

    background-image
    Значения:
    изображение Обозначает 2D-изображение. Это может быть ссылка на URL, нотация image() или запись градиента. Значение по умолчанию none .
    inherit Наследует значение свойства от родительского элемента.

    3. Укладка изображений: свойство background-repeat

    Свойство background-repeat определяет, как фоновые изображения укладываются в области фона после того, как для них установлены размеры и позиционирование. Если значение свойства имеет два ключевых слова, первое используется для горизонтального направления, второе — для вертикального.

    Свойство не наследуется.

    background-repeat
    Значения:
    repeat-x Изображение повторяется в горизонтальном направлении. Вычисляется в repeat no-repeat .
    repeat-y Изображение повторяется в вертикальном направлении. Вычисляется в no-repeat repeat .
    repeat Изображение повторяется в обоих направлениях так часто, чтобы покрыть область отрисовки фона. Если изображение не помещается, оно обрезается. Вычисляется в repeat repeat . Значение по умолчанию.
    space Изображение повторяется столько раз, сколько оно помещается в области фона, не обрезаясь, изображения расположены на равном расстоянии друг от друга. Первое и последнее изображения касаются краев области. Если область рисования фона больше, чем область позиционирования фона, шаблон повторяется, чтобы заполнить область рисования фона. Если недостаточно места для двух копий изображения, то размещается только одно изображение, а свойство background-position определяет его положение. Вычисляется в space space .
    round Изображение повторяется так часто, чтобы заполнить область фона, масштабируясь и не обрезаясь. Вычисляется в round round .
    no-repeat Изображение размещается один раз и не повторяется. Вычисляется в no-repeat no-repeat .
    initial Устанавливает значение свойства в значение по умолчанию.
    inherit Наследует значение свойства от родительского элемента.

    Рис. 2. Свойство background-repeat

    4. Фиксация изображения: свойство background-attachment

    Свойство background-attachment указывает, является ли фоновое изображение фиксированными относительно области просмотра или прокручивается вместе с элементом или его содержимым.

    Свойство не наследуется.

    background-attachment
    Значения:
    scroll Фоновое изображение прокручивается вместе с текстом и другим содержимым. Значение по умолчанию.
    fixed Предотвращает перемещение, фиксирует фоновое изображение на заднем плане.
    local Фоновое изображение прокручивается вместе с содержимым элемента.
    initial Устанавливает значение свойства в значение по умолчанию.
    inherit Наследует значение свойства от родительского элемента.

    5. Позиционирование изображений: свойство background-position

    Если для элемента заданы фоновые изображения, свойство background-position указывает их начальное положение (после любого изменения размера) в соответствующей области расположения фона.

    Свойство не наследуется.

    background-position
    Значения:
    % Горизонтальное смещение вычисляется по формуле ширина области расположения фона — ширина фонового изображения. Вертикальное смещение по формуле высота области расположения фона — высота фонового изображения , где размер изображения — это размер, заданный свойством background-size . Значение по умолчанию 0% 0% .
    длина Значение длины дает фиксированную длину в качестве смещения.
    left Вычисляет до 0% для горизонтальной позиции, если задано одно или два значения, в противном случае смещение происходит относительно левого края.
    center Вычисляет в left 50% для горизонтального положения, если не указано иное горизонтальное положение, или как top 50% для вертикального положения, если оно задано.
    right Вычисляет в 100% для горизонтального положения, если задано одно или два значения, в противном случае смещение происходит относительно правого края.
    top Вычисляет в 0% для вертикальной позиции, если задано одно или два значения, в противном случае смещение происходит относительно верхнего края.
    bottom Вычисляет в 100% для вертикальной позиции, если задано одно или два значения, в противном случае смещение происходит относительно нижнего края.
    initial Устанавливает значение свойства в значение по умолчанию.
    inherit Наследует значение свойства от родительского элемента.
    Читайте также:  Не установился realtek hd windows 10

    Если указано только одно значение, второе значение считается center . Если заданы два значения в единицах длины или % , то первое значения представляет горизонтальную позицию, второе — вертикальную. Значения в единицах длины или % представляют смещение верхнего левого угла фонового изображения от верхнего левого угла области расположения фона.

    Пара ключевых слов может быть переупорядочена, в то время как комбинация ключевого слова и длины или процента не может. Например, center left — допустимое значение, а 50% left — нет.

    Если заданы три или четыре значения в единицах длины или % , то перед каждым значением должно стоять ключевое слово, которое указывает, от какого края дается смещение. Если даны три значения, недостающее смещение считается равным нулю.

    Положительные значения смещают внутрь от края области расположения фона. Отрицательные значения смещают наружу от края области расположения фона.

    Рис. 3. Свойство background-position

    Можно задать фоновую картинку так, чтобы она располагалась только по низу блока:

    Рис. 4. Фоновое изображение по низу блока

    Также благодаря свойству позиционирования, для одного блока можно использовать несколько фоновых изображений:

    Рис. 5. Задание для блока нескольких фоновых изображений

    6. Область рисования: свойство background-clip

    Свойство background-clip определяет область рисования фона. Фон всегда рисуется под рамкой элемента, если таковая имеется.

    Корневой элемент имеет другую область рисования фона, поэтому свойство background-clip на него не влияет.

    Свойство не наследуется.

    background-clip
    Значения:
    border-box Фон закрашивает область в пределах рамки элемента. Значение по умолчанию.
    padding-box Фон закрашивает область в пределах внутренних полей элемента.
    content-box Фон закрашивает только область содержимого.
    initial Устанавливает значение свойства в значение по умолчанию.
    inherit Наследует значение свойства от родительского элемента.

    Рис. 6. Свойство background-clip

    7. Область расположения фона: свойство background-origin

    Свойство background-origin указывает область расположения фона для элементов, которые выводятся на экране как единый блок (например, не абзацы текста).

    Свойство не наследуется.

    background-origin
    Значения:
    padding-box Фон позиционируется относительно верхних границ области внутренних полей элемента. Значение по умолчанию.
    border-box Фон позиционируется относительно верхних границ рамки элемента.
    content-box Фон позиционируется относительно верхних границ области содержимого элемента.
    initial Устанавливает значение свойства в значение по умолчанию.
    inherit Наследует значение свойства от родительского элемента.

    Если для элемента установлено background-attachment: fixed , свойство не будет иметь эффекта.

    Если для элемента заданы background-clip: padding-box , background-origin: border-box , background-position: top left , и элемент имеет ненулевую рамку, тогда верхняя и левая части фонового изображения будет обрезаны.

    Рис. 7. Свойство background-origin

    8. Размер изображений: свойство background-size

    Свойство background-size устанавливает размер фоновых изображений.

    Свойство не наследуется.

    background-size
    Значения:
    auto Значение по умолчанию. Высота и ширина изображения равны его оригинальным размерам.
    длина Размер задается парой значений, первое значение устанавливает ширину изображения, второе — высоту. Для того, чтобы фон масштабировался вместе с текстом, размеры изображения нужно задавать в em .
    % Задает размер фонового изображения в процентах от ширины или высоты элемента, которое заполняется фоном.
    cover Масштабирует изображение с сохранением пропорций так, чтобы его ширина или высота равнялась ширине или высоте блока.
    contain Масштабирует изображение с сохранением пропорций таким образом, чтобы оно целиком поместилось внутри блока.
    initial Устанавливает значение свойства в значение по умолчанию.
    inherit Наследует значение свойства от родительского элемента.

    Рис. 8. Свойство background-size

    9. Краткая запись свойств фона: свойство background

    Свойство background позволяет описать в одном объявлении следующие свойства фона: background-color , background-image , background-position , background-size , background-repeat , background-origin , background-clip и background-attachment . Необязательно указывать все перечисленные свойства, если какое-либо свойство будет пропущено, оно примет значение по-умолчанию.

    Если вы указываете в краткой записи фона свойство background-size , то его значения нужно будет записать через слеш / , чтобы отделить его от свойства background-position .

    10. Множественные фоны

    Фон блока элемента может иметь несколько слоев в CSS3. Количество слоев определяется количеством значений, разделенных запятыми, указанных в свойстве background-image . Значение none по-прежнему создает слой.

    Первое изображение в списке — это слой, отображаемый ближайший к пользователю, следующий отрисовывается за первым, и так далее. Цвет фона, если он есть, закрашивается под всеми остальными слоями.

    Рис. 9. Пример использования нескольких фоновых изображений

    Оцените статью