Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переделать встроенный класс... 
V
    Опции темы
ShurikA
Дата 9.8.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Можно ли переделать внешний вид, и частично функциональность встроенного в SDK диалога?
ну на пример:

хотелось бы в диалог класса ColorDialog вставить ещё один контроль и пользоваться эго данными.


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Romikgy
Дата 9.8.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 2
Всего: 146



А что мешает те его туда добавить?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ShurikA
Дата 9.8.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Kak?


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Romikgy
Дата 9.8.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 2
Всего: 146



как и всегда создаешь контрол и в родителях указываешь нужный те диалог


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ShurikA
Дата 9.8.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Цитата(Romikgy @  9.8.2006,  09:13 Найти цитируемый пост)
как и всегда

никогда это не делал, без понятия как всегда...


Цитата(Romikgy @  9.8.2006,  09:13 Найти цитируемый пост)
создаешь контрол и в родителях указываешь нужный те диалог 

это понятно, 
но куда он вставит этот контрол?
если не сложно можно простайший пример...



--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Romikgy
Дата 9.8.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 2
Всего: 146



Цитата(ShurikA @  9.8.2006,  09:30 Найти цитируемый пост)
это понятно, но куда он вставит этот контрол?если не сложно можно простайший пример...

Код

HWND CreateWindow(

    LPCTSTR lpClassName,    // pointer to registered class name какой класс контрола
    LPCTSTR lpWindowName,    // pointer to window name название 
    DWORD dwStyle,    // window style  стиль окна/контрола
    int x,    // horizontal position of window  горизонталь
    int y,    // vertical position of window вертикаль
    int nWidth,    // window width ширина 
    int nHeight,    // window height высота
    HWND hWndParent,    // handle to parent or owner window родитель
    HMENU hMenu,    // handle to menu or child-window identifier меню
    HANDLE hInstance,    // handle to application instance приложени
    LPVOID lpParam    // pointer to window-creation data юзер даные
   );


терь понятно?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ShurikA
Дата 9.8.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Цитата(Romikgy @  9.8.2006,  10:15 Найти цитируемый пост)
терь понятно?

нет...

Добавлено @ 11:19 
Поставлю вопрос по другому:
Если я создаю новый класс отталкиваясь от ColorDialog , как мне обратиться к его существующим контролям?


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Romikgy
Дата 9.8.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 2
Всего: 146



Цитата(ShurikA @  9.8.2006,  10:17 Найти цитируемый пост)
Если я создаю новый класс отталкиваясь от ColorDialog , как мне обратиться к его существующим контролям?

Исходный код в студию


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ShurikA
Дата 9.8.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Код

// TextFontDialog.cpp : implementation file
//

#include "stdafx.h"
#include "FibIm.h"
#include "TextFontDialog.h"

#ifndef _WIN32_WCE // CFontDialog is not supported for Windows CE.

// CTextFontDialog

IMPLEMENT_DYNAMIC(CTextFontDialog, CFontDialog)

CTextFontDialog::CTextFontDialog(LPLOGFONT lplfInitial, DWORD dwFlags, CDC* pdcPrinter, CWnd* pParentWnd) : 
    CFontDialog(lplfInitial, dwFlags, pdcPrinter, pParentWnd)
{

}

CTextFontDialog::~CTextFontDialog()
{
}


BEGIN_MESSAGE_MAP(CTextFontDialog, CFontDialog)
END_MESSAGE_MAP()



// CTextFontDialog message handlers


#endif // !_WIN32_WCE



--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Earnest
Дата 9.8.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(MSDN)

To customize the dialog box, derive a class from CColorDialog, provide a custom dialog template, and add a message map to process the notification messages from the extended controls. Any unprocessed messages should be passed to the base class.

Шаблон диалога нужно указать в m_cc, например в конструкторе производного класса. В шаблон нужно поместить только добавочные контролы. Я так делала с CFileDialog. Нужно иметь в виду, что твой диалог будет дочерним по отношению к стандартному.

Добавлено @ 11:49 
Хотя с ColorDialog может быть не совсем так: возможно, там нужно полностью заменять шаблон.


--------------------
...
PM   Вверх
ShurikA
Дата 9.8.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



На самом деле в данный момент я веду речь о CFontDialog но это не важно.
 
интересная вещь: Я попробовал воспользоваться тем классом что написам выше без изменений, и при этом он ругается на то что не установлрнны фонты...  smile 


Цитата(Earnest @  9.8.2006,  10:44 Найти цитируемый пост)
возможно, там нужно полностью заменять шаблон. 

Как это делается?


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Earnest
Дата 9.8.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



В классе CFontDialog есть член m_cf. Это struct CHOOSEFONT, у которой есть поле lpTemplateName. Кроме того, нужно установить соответствующий флаг (см. ниже) и указать в hInstance тот модуль где находится ресурс.
Это все можно сделать, например, в конструкторе производного класса. Рисуешь свой шаблон, главное, чтобы все поля имели те же идентификаторы и тип, надо полагать.

Цитата

lpTemplateName
Pointer to a null-terminated string that names the dialog box template resource in the module identified by the hInstance member. This template is substituted for the standard dialog box template. For numbered dialog box resources, lpTemplateName can be a value returned by the MAKEINTRESOURCE macro. This member is ignored unless the CF_ENABLETEMPLATE flag is set in the Flags member. 



--------------------
...
PM   Вверх
ShurikA
Дата 9.8.2006, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Earnest, 
ещё пару вопросов и я догонюsmile
1.
Цитата(Earnest @  9.8.2006,  11:28 Найти цитируемый пост)
главное, чтобы все поля имели те же идентификаторы и тип

как я могу знать идентификаторы и тип?

Это сообщение отредактировал(а) ShurikA - 9.8.2006, 12:47


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Earnest
Дата 9.8.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



А Спай на что?

Добавлено @ 12:54 
Тип - в смысле Window Class (не надо вместо лист-бокса ставить статик)


--------------------
...
PM   Вверх
ShurikA
Дата 9.8.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Сделал так:
1. Скопировал шаблон как есть из SDK (FONT.dlg) в мой ресорс фаил.
2. В конструкторе своего класса:
Код

CTextFontDialog::CTextFontDialog(LPLOGFONT lplfInitial, DWORD dwFlags, CDC* pdcPrinter, CWnd* pParentWnd) : 
    CFontDialog(lplfInitial, dwFlags, pdcPrinter, pParentWnd)
{
    m_cf.lpTemplateName = MAKEINTRESOURCE(IDD_DIALOG_TEXT);
    m_cf.Flags |=CF_ENABLETEMPLATE;
}


теперь далаю с ним чего хочу smile
спасибо!


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.