481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
1

Стандартное окно выбора цвета

11.05.2012, 21:55. Показов 5046. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть у кого нибудь исходник этого ?
Буду очень признателен.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2012, 21:55
Ответы с готовыми решениями:

Окно выбора цвета
Здравствуйте! Подскажите, есть ли в WinApi стандортное окно выбора цвета и как им воспользоваться?

Ганеев. Панель выбора цвета
Выскакивают ошибки которые вроде как не должны выскакивать... Избавиться от них можно удалив первую...

Использование фильтра выбора цвета
Здравствуйте! Не могу понять, как надо использовать фильтр цвета. Мне надо, чтобы при нажатии...

Диалоговое окно выбора файла
Никак не могу прикрутить к своей программе диалог выбора текстового файла. Я так понял проблема с...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32592 / 21061 / 8134
Регистрация: 22.10.2011
Сообщений: 36,332
Записей в блоге: 8
11.05.2012, 23:53 2
Исходник чего? Функции ChooseColor, или метод ее вызова?
0
481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
12.05.2012, 00:09  [ТС] 3
Цитата Сообщение от UI Посмотреть сообщение
Функции ChooseColor, или метод ее вызова?
и того и другово
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32592 / 21061 / 8134
Регистрация: 22.10.2011
Сообщений: 36,332
Записей в блоге: 8
12.05.2012, 00:19 4
Исходников самой функции не имею за ненадобностью, вызывается - вот так:

C++
1
2
3
4
5
6
7
8
9
    CHOOSECOLOR ch_color = { 0 };
    ch_color.lStructSize = sizeof(CHOOSECOLOR);
    ch_color.hwndOwner = hwndDlg;
    COLORREF cust_colors[16] = { 0 };
    ch_color.lpCustColors = cust_colors;
    if(ChooseColor(&ch_color))
    {
        // тут работаем с цветом из ch_color.rgbResult;
    }
1
481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
12.05.2012, 01:27  [ТС] 5
блин с цветом не когда не работал не могли бы вы подсказать какую глобальную переменную создать (как она выглядить должна) и как потом данные те которые пользователь нажал скопировать в неё?

Добавлено через 35 минут
спасибо не надо с глобальной переменной разобрался,но появилась ещё проблема,вот допустим я создал функцию-
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void col(){
HWND hwndDlg;
COLORREF ShowColorDialog(HWND);
     CHOOSECOLOR ch_color = { 0 };
    ch_color.lStructSize = sizeof(CHOOSECOLOR);
    ch_color.hwndOwner = hwndDlg;
    COLORREF cust_colors[16] = { 0 };
    ch_color.lpCustColors = cust_colors;
    if(ChooseColor(&ch_color))
    {
    colClndr=ch_color.rgbResult;
    }
     }
ну и вызываю допустим на нажатие клавиши -
C++
1
2
3
4
case WM_CHAR:
     col();
    SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG) CreateSolidBrush(colClndr ));
     break;
и у меня получается что когда я первый раз нажимаю на клавишу окно не появляется,а при повторном нажатии выскакивает окно,что я делаю не так ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32592 / 21061 / 8134
Регистрация: 22.10.2011
Сообщений: 36,332
Записей в блоге: 8
12.05.2012, 01:48 6
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Цитата Сообщение от Игорь с++ Посмотреть сообщение
когда я первый раз нажимаю на клавишу окно не появляется,а при повторном нажатии выскакивает окно
Без понятия, у меня нормально отображается, после первого нажатия. Хотя я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void col(HWND hwnd)
{
    CHOOSECOLOR ch_color = { 0 };
    ch_color.lStructSize = sizeof(CHOOSECOLOR);
    ch_color.hwndOwner = hwnd;
    COLORREF cust_colors[16] = { 0 };
    ch_color.lpCustColors = cust_colors;
    if(ChooseColor(&ch_color))
    {
        colClndr = ch_color.rgbResult;
    }
}
 
// ...
        case WM_CHAR:
            col(hwnd); // чтоб "хозяином" было именно твое окно, а не какой-то мусор
            SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG) CreateSolidBrush(colClndr));
            InvalidateRect(hwnd, 0, TRUE);
            break;
1
481 / 473 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
12.05.2012, 20:30  [ТС] 7
спасибо попробую чуть позже , отпишусь.

Добавлено через 11 часов 1 минуту
спасибо действительно помогло когда я назначил "хозяином" своё окно,теперь появляется как надо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2012, 20:30
Помогаю со студенческими работами здесь

Стандартное окно выбора цвета
Здравствуйте! Необходимо по нажатию на клавишу отобразить стандартное диалоговое окно выбора...

Как в access 2000 вызвать стандартное окно выбора файлов?
Здрасте всем) В аксессе 2000 нужно вызвать окно, в котором можно выбрать один файл с определенным...

Как можно вызвать стандартное окно для выбора папок?
Из С++ нужно вызвать стандартное окно для выбора папок. Что-то типа GetOpenFileName, только для...

Диалоговое окно выбора цвета
Когда вызываю СolorDialog , оно через раз появляется, один раз его видно, а второй раз он будто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru