Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Элементы управления, как пр-мно изм. св-ва эл-тов управления? 
:(
    Опции темы
GGoga
Дата 23.6.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.5.2007
Где: Харьков

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



Здравствуйте уважаемые господа программисты. Помогите начинающему программисту в освоении 

Visual C++, а именно, библиотеки MFC.
Я хочу написать приложение для работы с БД, только не могу ничего сделать, потому как еще 

практически ничего не знаю в Visual Studio. Подскажите мне, как можно программно изменять 

свойства элементов управления, например, CStatic. Что нужно прописать, если я хочу изменить 

размер, положение, шрифт и т.д.


Вот что я делаю:

//-----------------------------------------------------------------------------

void CEmbadedDBView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// Название окна
GetDocument()->SetTitle(theApp.GetWindowTitle());

GetParentFrame()->RecalcLayout(FALSE);
// Убираем преобразование размеров фрейма
// ResizeParentToFit();

// Создать объект типа Static text
if(!m_wndStaticDB)
{
m_wndStaticDB = new CStatic;
m_wndStaticDB->Create(_T("Доступные БД:"), WS_CHILD | WS_VISIBLE,
CRect(10, theApp.GetWindowHeight()/30,
theApp.GetWindowWidth()/10 + 50, theApp.GetWindowHeight()/30 + 15), this);
}
}

//-----------------------------------------------------------------------------
Только вот я не знаю, как изменить параметры этикетки после создания. Ну, в принципе, 

аналогично, я не знаю, как можно программно управлять другими элементами. Подскажите, 

пожалуйста, как это сделать. Вот в Builder-е все просто, а здесь, пока как-то не освоился, и 

не могу ничего сделать.

И еще такой вопрос, какой лучше использовать элемент для отображения содержимого таблиц (я 

хочу оформить это в виде таблицы, как в Builder — DataGrid), и можно ли так вообще сделать?

Заранее ОГРОМНОЕ СПАСИБО!!!
PM MAIL ICQ Skype   Вверх
DigitSphinx
Дата 23.6.2007, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

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



*Это MFC ? или Windows Form Application ? где ты откопал такое «theApp.GetWindowHeight()» ???
Если WFA то тебе в раздел .NET , а управление контролями на форме в MFC не так просто как в Borland’e , ты должен знать основы WinAPI.
*Используй поиск до того как задать вопрос.
*Если что будет не понятно пиши что именно и приводи кусок кода с ошибкой



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
GGoga
Дата 24.6.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.5.2007
Где: Харьков

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



Это MFC.
theApp.GetWindowHeight() - это метод, который возвращает высоту установленного окошка.
Я уже немного расчехлился с элементами управления, хотя это и не так то просто самому сделать. Хорошо, что есть куча форумов, где можно почитать то, что нужно smile


А то, что-то все книги, которые купил по Visual Studio, рассматривают одно и то же - рисование в окне. Вот и все... Вот Архангельский под Билдер настоящую энциклопедию написал - самостоятельно можно разобраться во всем, а по Студие еще ни одной подходящей книжки не видел :( Хотя, может плохо искал...
PM MAIL ICQ Skype   Вверх
jonie
Дата 24.6.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Мешков тебе в помощь : 
часть 1
часть 2
дискета
имхо библия по MFC


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
DigitSphinx
Дата 24.6.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

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



Цитата(GGoga @  24.6.2007,  17:04 Найти цитируемый пост)
Это MFC.
theApp.GetWindowHeight() - это метод, который возвращает высоту установленного окошка.

Я английский знаю , я имел ввиду что НЕТ такого в MFC !!!
Чтобы получить размеры окошка юзают
Код

CRect WinRect;
GetClientRect(&WinRect);
//Или 
GetWindowRect(&WinRect);

В зависимости от того что именно нужно.



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Любитель
Дата 24.6.2007, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 7
Всего: 92



Цитата(DigitSphinx @  24.6.2007,  23:05 Найти цитируемый пост)
Я английский знаю , я имел ввиду что НЕТ такого в MFC !!!

Есть smile


--------------------
PM MAIL ICQ Skype   Вверх
DigitSphinx
Дата 25.6.2007, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

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



Тогда я тоже хочу ! smile 


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
zkv
Дата 25.6.2007, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(Любитель @  24.6.2007,  23:53 Найти цитируемый пост)
Есть smile 

а что есть?  smile 
если под theApp подразумевается объект класса производного от CWinApp, то  в CWinApp такого метода (GetWindowHeight) нет. В моей версии MFC по крайней мере. 
PM MAIL   Вверх
Coocky
Дата 25.6.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата(GGoga @  24.6.2007,  16:04 Найти цитируемый пост)
theApp.GetWindowHeight() 


Цитата(Любитель @  24.6.2007,  23:53 Найти цитируемый пост)
Есть

 smile  smile 
MFC10_beta.dll ? smile 


Это сообщение отредактировал(а) Coocky - 25.6.2007, 17:05


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
GGoga
Дата 26.6.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.5.2007
Где: Харьков

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



Цитата(jonie @ 24.6.2007,  18:19)
Мешков тебе в помощь : 
часть 1
часть 2
дискета
имхо библия по MFC

БОЛЬШОЕ СПАСИБО за ссылки smile
Буду разбираться!

Добавлено через 10 минут и 46 секунд
Цитата(DigitSphinx @ 24.6.2007,  23:05)
Цитата(GGoga @  24.6.2007,  17:04 Найти цитируемый пост)
Это MFC.
theApp.GetWindowHeight() - это метод, который возвращает высоту установленного окошка.

Я английский знаю , я имел ввиду что НЕТ такого в MFC !!!
Чтобы получить размеры окошка юзают
Код

CRect WinRect;
GetClientRect(&WinRect);
//Или 
GetWindowRect(&WinRect);

В зависимости от того что именно нужно.

Да, такого в MFC нету smile Ну поскольку я еще самый настоящий чайник в Visual Studio, то решил получать высоту окна таким образом smile Конечно, это тупо, но все приходит с опытом, которого у меня сейчас практически нету smile
PM MAIL ICQ Skype   Вверх
GGoga
Дата 26.6.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.5.2007
Где: Харьков

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



Хотел бы задать еще такой вопрос по поводу написания обработчиков для кнопки.
Помогите найти ошибку или разобраться в том, что я неправильно сделал. Мне нужно написать обработчик на нажатие кнопки, которую создаю программно. Только вот я, вроде бы , прописываю все правильно, однако ничего не получается 

Вот значит код следующий

Код

...
    // Создать кнопку управления
    if(!m_wndButtonTab)
    {
        m_wndButtonTab = new CMyButton;
        if(!(m_wndButtonTab->Create(_T("Set"), WS_CHILD | WS_VISIBLE | WS_BORDER,
            CRect(5*nWidth / 16, 6*nHeightStr - 5, 7*nWidth / 16, 7*nHeightStr + 5),
            (CWnd*)m_wndStaticDB, IDC_BUTTON_TAB)))
        {
            MessageBox(_T("Не могу создать кнопку установки БД!"),
                _T("Внимание"), MB_OK | MB_ICONEXCLAMATION | MB_ICONWARNING);
            return -1;
        }
    }
...
// Прописываю вызов функции на нажатие кнопки в командах
BEGIN_MESSAGE_MAP(CEmbadedDBView, CFormView)
...
    ON_BN_CLICKED(IDC_BUTTON_TAB, &CEmbadedDBView::OnChangeTab)
...
END_MESSAGE_MAP()

...
// Объявляю функцию
...
public:
    // При нажатии на кнопку установки новой таблицы
    afx_msg void OnChangeTab();
...

// И записываю обработчик
...
void CEmbadedDBView::OnChangeTab()
{
    AfxMessageBox(_T("HELLO"), MB_OK);
}
...
 


Вот только ничего не работает. Сообщение при нажатии на кнопку не выскакивает. А вот если кнопку поместить на форму и прописать обработчик с помощью мастера, то все работает... Я вот думаю, что может на программно созданную кнопку оно не добавляет ее ID (IDC_BUTTON_TAB)? Вот как я его объявил:

// Создал свой header файл и записал в нем следующую строку
#define IDC_BUTTON_TAB 2004
 



Я подозреваю, что именно с ID и ошибка, т.е. данное значение не регистрируется для кнопки... Подскажите кто-нибудь, что я неправильно сделал и как сделать верно, чтобы начало работать?

Заранее спасибо 
PM MAIL ICQ Skype   Вверх
Coocky
Дата 26.6.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Ты уверен, что 2004 уже не используется? smile
Короче, зайти в ресурсы, найди в меню студии Edit->Resources Symbols-посмотри-юзается ли у тебя 2004 smile
Стоп!
Цитата

(CWnd*)m_wndStaticDB

А что это такое? Родитель?
А обрабатываеш где? В  CEmbadedDBView?

Это сообщение отредактировал(а) Coocky - 26.6.2007, 16:03


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
GGoga
Дата 26.6.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.5.2007
Где: Харьков

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



>Ты уверен, что 2004 уже не используется? smile
Вот я то как раз и не знаю, используется или нет...

>Добавлено @ 15:28

>Стоп!
Цитата(GGoga @  26.6.2007,  15:17 Найти цитируемый пост)
(CWnd*)m_wndStaticDB

>А что это такое? Родитель?
>А обрабатываеш где? В  CEmbadedDBView?

Да, m_wndStaticDB - это родитель (элемент типа CStatic*), а обрабатываю в CEmbadedDBView. А разве это не правильно? Родителем элемента m_wndStaticDB является CEmbadedDBView.

Добавлено через 3 минуты и 4 секунды
О, СПАСИБО!!!
Изменил родителя кнопки и ЗАРАБОТАЛО!!!

Добавлено через 10 минут и 16 секунд
А такой еще вопрос. Как можно преобразовать тип char[] в LPCTSTR?
PM MAIL ICQ Skype   Вверх
Coocky
Дата 26.6.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



char iho [25];
(LPCTSTR)iho;

Добавлено @ 16:04
LPCSTR-это указатель .
iho-тоже указатель.
typedef CONST CHAR  *LPCSTR, *PCSTR;
typedef char CHAR;
Какие проблемы? smile

Добавлено @ 16:06
Да.... Флеймовая тема получилась smile

Это сообщение отредактировал(а) Coocky - 26.6.2007, 16:07


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Gremlin
Дата 26.6.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 28.8.2006

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



Другие вопщем книжки надо читать!
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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