Поиск:

Ответ в темуСоздание новой темы Создание опроса
> форма на MSVC++ 6.0, с чего начать? 
:(
    Опции темы
eugeniy
Дата 23.3.2010, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!
Написана программная часть на С по работе с девайсом и работе с мускульной БД в IDE MSVC++ 6.0. Осталось сделать интерфейсную часть проекта. Использую IDE MSVC++ 6.0, нужно сделать форму след. содержания: чтобы выводилось фото человека, его ФИО, дата рождения, курс, факультет, в той же форме должно быть 6 кнопок и таблица, содержащая три столбца))) Прочитал книгу Холзнера Учебный курс Visual C++ 6.0. 14 уроков, но с визуальной средой всё равно проблемы, так как программирую под линукс всё)))
Помогите как и с чего начать?
PM MAIL WWW   Вверх
borisbn
Дата 23.3.2010, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Посмотри в сторону Qt
IMHO там нужно не 14 уроков, а 1-2
P.S. Правда "слезть" с него куда сложнее, чем "залезть" smile

Это сообщение отредактировал(а) borisbn - 23.3.2010, 07:31


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Albor
Дата 23.3.2010, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Создай проект использующий MFC, выбери диалоговое приложение. Получишь макет формы и панель элементов. Дальше интуитивно понятно.
PM MAIL ICQ   Вверх
eugeniy
Дата 24.3.2010, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



borisbn:
С QT уже времени мало ковыряться, 2 месяца до сдачи проекта, думал либо в Делфи интерфейсную часть сделать потом в библиотеку собрать и подключить к VC++, либо в VS2005 написать на VB, но думаю что будут проблемы с интеграцией языков, поэтому решил в той же среде делать где и программная часть написана. Только вот дилема получается, либо Win32Application создавать и делать на чистом С используя WinAPI, либо создать проект MFCAppWizard(exe) и юзать С++ и МFC, но С++ не знаю((( соответственно с MFC особо не знаком, да и говорят что очень надо долго ковыряться, чтобы хоть простейшую форму накидать...но с другой стороны и с WinAPI никогда не работал, поэтому получается такая шляпа! где быстрее будет и понятней не известно(

Albor:

Все эти кнопки и прочие элементы я уже накидал на форму и отредактировал, а как теперь с самой проги на С, вызвать обработчик событий по тому или иному действию? (Например, у меня прога делает запрос к БД по определённому критерию, та возвращает результат запроса (например: дата рождения) и помещает в переменную, и как теперь мне тут поступить чтобы эта "дата рождения" отобразилась в интерфейсной части в поле??? ), получается как-то надо обработать это событие? вот здесь и возникает вся суть выше изложенного(
PM MAIL WWW   Вверх
Earnest
Дата 24.3.2010, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если используешь MFC, принцип простой. Весь обмен нужно запихать в функцию DoDataExchange в виде DDX-statements, которые связывают поля формы и переменные со значениями. Выглядит примерно так:

void CMyDialog::DoDataExchange (CDataExchange* pDX)
{
   CMyParams* pParms = get...   // здесь ты добываешь указатель на данные, которые нужно читать\писать
   DDX_Text  (pDX, IDC_NAME, pParms->m_sName);  // IDC_NAME - ид-р поля с именем
   ... // остальные переменные в том же духе 
}
В принципе, если ты делал диалог мастером, то он должен был тебе костяк накидать.

Далее, когда нужно прочитать данные с формы, вызываешь UpdateData (TRUE). А когда записать в форму - UpdateData (FALSE).
Скажем, пользователь нажимает кнопку "Запомнить", ты вызываешь в обработчике этой кнопки UpdateData (TRUE), а потом посылаешь заполненную структуру в БД. 


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


Опытный
**


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

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



Я думаю, что интерфейсная часть должна использовать программу на С, а не наоборот. Раз уж у программы есть взаимодействие с пользователем, то пусть запрос отображаемых данных инициируется формой (пользователем), вызывая функции С-кода. Данные можно разместить в переменных формы, как писала Earnest, а можно и напрямую взаимодействовать с элементами формы, получая соответствующий указатель ф-цией GetDlgItem(ID_ITEM). 
PM MAIL ICQ   Вверх
Alca
Дата 25.3.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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





--------------------
PM WWW ICQ Skype Jabber   Вверх
eugeniy
Дата 25.3.2010, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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





если можно поподробней, что это и для чего?

Это сообщение отредактировал(а) eugeniy - 25.3.2010, 23:18
PM MAIL WWW   Вверх
Alca
Дата 25.3.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



гуишная либа на чистом WinAPI

Это сообщение отредактировал(а) Alca - 25.3.2010, 23:23


--------------------
PM WWW ICQ Skype Jabber   Вверх
eugeniy
Дата 26.3.2010, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Earnest @ 24.3.2010,  09:08)
void CMyDialog::DoDataExchange (CDataExchange* pDX)
{
   CMyParams* pParms = get...   // здесь ты добываешь указатель на данные, которые нужно читать\писать
   DDX_Text  (pDX, IDC_NAME, pParms->m_sName);  // IDC_NAME - ид-р поля с именем
   ... // остальные переменные в том же духе 
}

можно здесь поподробней пожалуйста.
Доустим имеется поле "фамилия" - тип static, и поле куда выводиться фамилия - edit box.
фамилия: edit box.
визардом добавил переменную m_surname, Category - control, variable type - CEdit.

как теперь запихать в поле edit box - определённую фамилию, которая допустим содержиться в переменной в коде на С?

Добавлено через 1 минуту и 16 секунд
Цитата(Alca @ 25.3.2010,  23:22)
гуишная либа на чистом WinAPI

да я вот уже не знаю с винапи или с мфц ковыряться? вроде с мфц как-то больше советов дают
PM MAIL WWW   Вверх
Albor
Дата 26.3.2010, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

m_surname.SetWindowText(_T("Иванов"));

Если бы ты визардом добавил переменную типа CString для Edit-контрола, то визард бы сам добавил строчку DDX... и тебе бы нужно было просто присвоить значение полю m_surname и вызвать UpdateData. Лично я предпочитаю первый способ (без DDX), а если на форме много элементов, то пользуюсь указателями на них и переменные в классе не создаю.

Это сообщение отредактировал(а) Albor - 26.3.2010, 08:17
PM MAIL ICQ   Вверх
eugeniy
Дата 15.4.2010, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



исходный файл на С переделал под visual c++...
но всё равно не получается в edit box вывести содержимое переменных row[4],row[5],row[6],birth,kurs_name[0],fakultet_name[0]
прилагаю к вашему вниманию мой проект
http://ifolder.ru/17299372

если вам не составит труда, посмотрите пожалуйста, что там не так...
сейчас при компиляции пишет:
--------------------Configuration: reader - Win32 Debug--------------------
Compiling...
readerDlg.cpp
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(100) : error C2064: term does not evaluate to a function
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(102) : error C2059: syntax error : '{'
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(102) : error C2143: syntax error : missing ';' before '{'
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(102) : error C2447: missing function header (old-style formal list?)
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(102) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(112) : error C2065: 'birth' : undeclared identifier
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(117) : error C2440: '=' : cannot convert from 'class CReader *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(118) : error C2227: left of '->Reader_Init' must point to class/struct/union
c:\program files\microsoft visual studio\vc98\bin\reader\readerdlg.cpp(119) : error C2146: syntax error : missing ')' before identifier 'EndDialog'
Error executing cl.exe.

readerDlg.obj - 9 error(s), 0 warning(s)




PM MAIL WWW   Вверх
Earnest
Дата 15.4.2010, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



eugeniy, мало желающих найдется качать твой проект и ковыряться в нем. Если у тебе не компилируется, так приведи конкретный код, который не компилируется. Только бога ради не полный проект. Цени чужое время.


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


Опытный
**


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

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



По приведенным ошибкам, необходимо проверить фигурные скобки и ; , то бишь - синтаксис.
PM MAIL ICQ   Вверх
eugeniy
Дата 15.4.2010, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все ошибки исправил

Цитата

Если у тебя не компилируется, так приведи конкретный код, который не компилируется.



BOOL CReader::Card_read()
{
    while((row = mysql_fetch_row (res)))
                    {
                                snprintf(kurs,50,"SELECT tech_name FROM kursnames WHERE kurs_id = %s", row[34]);
                                mysql_query(conn,kurs);                            
                                    
                                if (!(res=mysql_store_result(conn)))
                                        //exiterr(2);

                                kurs_name = mysql_fetch_row(res);

                                snprintf(fakultet,100,"SELECT tech_name FROM faculty WHERE faculty_id = %s", row[35]);
                                mysql_query(conn,fakultet);        
                                    
                                if (!(res=mysql_store_result(conn)))
                                    //    exiterr(2);

                                fakultet_name = mysql_fetch_row(res);

                                birth=strtok(row[10], " ");

                                
                                printf("%s %s %s %s %s %s\t",row[4],row[5],row[6],birth,kurs_name[0],fakultet_name[0]);
                                fprintf(file,"%s %s %s %s %s %s\t",row[4],row[5],row[6],birth,kurs_name[0],fakultet_name[0]);
                                
                            
                            printf("\n");
                            fprintf(file, "\n");
                    }
}

как мне с этого кода вывести значение переменных в диалог в поля edit box?

вот вроде бы конкретный код...


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


 




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


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

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