Чуть модифицировать Color Common Dialog - VB
Формулировка задачи:
Задача такая.
Есть форма, на ней Picturebox.
Надо чтоб пользователь мог задавать его цвет (как ему нравится).
Хочу сделать: пользователь щелкает правой кнопкой мыши по панельке (ну или DoubleClick), появляется окно Color, он задает цвет.
Ну, естественно в стандартном виде сделал.
Задачи:
1. поменять текст заголовка окна Color
2. вывести кнопку Help, написать на ней Reset (дефолтный цвет)
3. при нажатии на Help закрывать окно и сбрасывать цвет на дефолтный
4. окно должно выводиться в районе Picturebox, а не рядом с заголовком формы.
(Иначе все это не очень красиво выглядит)
Думал справлюсь с ходу.
Почему думал, потому что есть хороший опыт с Open/Save.
Но не тут то было.
>1. поменять текст заголовка окна Color
Стандартно задать нельзя.
Но справился.
Причем сразу обратил внимание, что получилось с SendMessage(hwnd а не с hWndParent
>2. вывести кнопку Help, написать на ней Reset
Вывел, но CDM_SETCONTROLTEXT (где Private Const ID_HELP = &H40E 'Help Button)
не работает (хотя по MSDN с Color вроде как и не должно, там Open/Save упомянаются, но как то нечетко). С Open/Save это работало. Пробовал hwnd, hWndParent ID_CANCEL для проверки - не помогает.
Конечно могу попробовать FindWindow(кнопка)+SetWindowText, но фиг ее знает - на китайском Help по-другому пишется.
Т.е. как -то надо найти ID_HELP.
>3. Как ID_HELP нажать, т.е. вставить код при нажатии.
Для Open/Save
Но здесь это кажется хитрее делается, пока не понял.
>4. окно должно выводиться в районе Picturebox, а не рядом с заголовком формы.
Пытался по простому.
выводит Color под заголовком myForm,
а у меня панель справа - далеко очень выводится
Пробовал
Что, только сабклассить, делать SetWindowPos и при этом смотреть "Где Taskbar?", чтоб не вылезла за экран? Ну, в принципе с Open/Save я такое делал, но хотелось нахаляву.
Есть форма, на ней Picturebox.
Надо чтоб пользователь мог задавать его цвет (как ему нравится).
Хочу сделать: пользователь щелкает правой кнопкой мыши по панельке (ну или DoubleClick), появляется окно Color, он задает цвет.
Ну, естественно в стандартном виде сделал.
Задачи:
1. поменять текст заголовка окна Color
2. вывести кнопку Help, написать на ней Reset (дефолтный цвет)
3. при нажатии на Help закрывать окно и сбрасывать цвет на дефолтный
4. окно должно выводиться в районе Picturebox, а не рядом с заголовком формы.
(Иначе все это не очень красиво выглядит)
Думал справлюсь с ходу.
Почему думал, потому что есть хороший опыт с Open/Save.
Но не тут то было.
>1. поменять текст заголовка окна Color
Стандартно задать нельзя.
Но справился.
Причем сразу обратил внимание, что получилось с SendMessage(hwnd а не с hWndParent
>2. вывести кнопку Help, написать на ней Reset
Вывел, но CDM_SETCONTROLTEXT (где Private Const ID_HELP = &H40E 'Help Button)
не работает (хотя по MSDN с Color вроде как и не должно, там Open/Save упомянаются, но как то нечетко). С Open/Save это работало. Пробовал hwnd, hWndParent ID_CANCEL для проверки - не помогает.
Конечно могу попробовать FindWindow(кнопка)+SetWindowText, но фиг ее знает - на китайском Help по-другому пишется.
Т.е. как -то надо найти ID_HELP.
>3. Как ID_HELP нажать, т.е. вставить код при нажатии.
Для Open/Save
Но здесь это кажется хитрее делается, пока не понял.
>4. окно должно выводиться в районе Picturebox, а не рядом с заголовком формы.
Пытался по простому.
выводит Color под заголовком myForm,
а у меня панель справа - далеко очень выводится
Пробовал
-не хочет перемещать.
Что, только сабклассить, делать SetWindowPos и при этом смотреть "Где Taskbar?", чтоб не вылезла за экран? Ну, в принципе с Open/Save я такое делал, но хотелось нахаляву.
Решение задачи: «Чуть модифицировать Color Common Dialog»
textual
Листинг программы
C.Flags = Flags& Or CC_RGBINIT Or CC_SHOWHELP Or CC_ENABLEHOOK C.lpfnHook = FARPROC(AddressOf CCHookProc) Private Function CCHookProc(ByVal hwnd As Long, _ ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д