Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2010, 10:43   #1
IsDebuggerPresent
 
Регистрация: 06.07.2010
Сообщений: 3
Сообщение Вопрос по Visual C++ 6.0 MFC

Приветсвую!
Вот только начал писать на Visual C++ 6.0 MFC. До этого на VB.NET кодил.
Первая проблема в следующем: есть текстбокс IDC_EDIT1, как можно без DoDataExchange и лишних слов загнать туда текст с переменной? Например я хотел через SetWindowTextA и SetDlgItemTextA но они требуют хэндл объекта, как его получить?
Вторая проблема. Оптимальное решение первой я все таки нашел, однако не значит что она для меня решена полностью. Через ActiveX добавляю RichTextBox (SP6.0), присваюваю m_edit, и потом через m_edit.SetText ("text"); вывожу. Однако все это в ProgectDlg.cpp, а основной код программы в Project.cpp и переменные оттуда она не видит. Подскажите как связать ?
Третья проблема. когда пишу
static char Logical_Drive_String;
GetLogicalDriveStrings(sizeof(Logic al_Drive_String),&Logical_Drive_Str ing);
Logical_Drive_String пустой. Переменная должна быть не char ??
Заранее спасибо.
IsDebuggerPresent вне форума Ответить с цитированием
Старый 06.07.2010, 18:50   #2
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

Цитата:
Сообщение от IsDebuggerPresent Посмотреть сообщение
Приветсвую!
Вот только начал писать на Visual C++ 6.0 MFC. До этого на VB.NET кодил.
Первая проблема в следующем: есть текстбокс IDC_EDIT1, как можно без DoDataExchange и лишних слов загнать туда текст с переменной? Например я хотел через SetWindowTextA и SetDlgItemTextA но они требуют хэндл объекта, как его получить?
Код:
CString tmp = "lol";
SetDlgItemText(IDC_EDIT1, tmp);
Но лучше используйте класс-визард (Ctrl+W) и через него создайте переменную, которая будет ассоциирована с вашим эдит-боксом.

Цитата:
Сообщение от IsDebuggerPresent Посмотреть сообщение
Вторая проблема. Оптимальное решение первой я все таки нашел, однако не значит что она для меня решена полностью. Через ActiveX добавляю RichTextBox (SP6.0), присваюваю m_edit, и потом через m_edit.SetText ("text"); вывожу. Однако все это в ProgectDlg.cpp, а основной код программы в Project.cpp и переменные оттуда она не видит. Подскажите как связать ?
Если Вы недавно работаете с мфц, Project.cpp Вам вообще не должен понадобиться. Создавайте переменные в виде свойств класса CProjectDlg и в этом же классе с ними и работайте.

Но подскажу. Либо нужно при создании в Project.cpp объекта класса CProjectDlg передавать указатели на переменные этому классу, либо использовать волшебное слово extern для глобальных переменных.

Цитата:
Сообщение от IsDebuggerPresent Посмотреть сообщение
Третья проблема. когда пишу
static char Logical_Drive_String;
GetLogicalDriveStrings(sizeof(Logic al_Drive_String),&Logical_Drive_Str ing);
Logical_Drive_String пустой. Переменная должна быть не char ??
Заранее спасибо.
Код:
DWORD WINAPI GetLogicalDriveStrings(
        __in   DWORD nBufferLength,
        __out  LPTSTR lpBuffer
);
Переменная должна быть LPTSTR (это строка виндовозная). А nBufferLength - длина строки.
wyvern@localhost:~$ sudo emerge --unmerge world

Последний раз редактировалось wyvern; 06.07.2010 в 19:05. Причина: Неточности, неточности, работаем-с.
wyvern вне форума Ответить с цитированием
Старый 14.07.2010, 10:06   #3
IsDebuggerPresent
 
Регистрация: 06.07.2010
Сообщений: 3
Печаль

Цитата:
Сообщение от wyvern Посмотреть сообщение
Код:
CString tmp = "lol";
SetDlgItemText(IDC_EDIT1, tmp);
C:\Program Files\Microsoft Visual Studio\MyProjects\hXI9tslxx\hXI9tsl xx\hXI9tslxx.cpp(56) : error C2664: 'SetWindowTextA' : cannot convert parameter 1 from 'const int' to 'struct HWND__ *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

Я ж говорю что ТРЕБУЕТСЯ ХЕНДЛ ОБЪЕКТА А НЕ ЕГО ID !! Как получить?

А как через wizard ?

и еще: не могу сложить строку LPSTR с константой "autorun.inf". Как правильно это сделать?

C GetLogicalDriveStrings я разоабрался:
Код:
DWORD len = GetLogicalDriveStrings(sizeof(Logic_Drivers_String_Array)/sizeof(TCHAR),Logic_Drivers_String_Array);
IsDebuggerPresent вне форума Ответить с цитированием
Старый 14.07.2010, 13:47   #4
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

Цитата:
Сообщение от IsDebuggerPresent Посмотреть сообщение
Я ж говорю что ТРЕБУЕТСЯ ХЕНДЛ ОБЪЕКТА А НЕ ЕГО ID !! Как получить?

А как через wizard ?
Какой нафиг SetWindowText???
Тебе нужен CWindow::SetDlgItemText() http://msdn.microsoft.com/ru-ru/library/9a4tadza.aspx

Насчет визарда... Какая у тебя студия?

Цитата:
Сообщение от IsDebuggerPresent Посмотреть сообщение
и еще: не могу сложить строку LPSTR с константой "autorun.inf". Как правильно это сделать?
CString tmp = _TEXT("something");
tmp += _TEXT("autorun.inf");
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума Ответить с цитированием
Старый 14.07.2010, 14:20   #5
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

Во вложении простенький пример тебе. Поизучай.
Вложения
Тип файла: zip Example.zip (110.7 Кб, 16 просмотров)
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++ MFC Циклы Dobray Visual C++ 5 16.05.2010 20:42
среда разработки Visual C++, MFC shurik_7866 Visual C++ 1 12.02.2010 19:05
Ув.программисты,помогите! MFC,Visual C++ zatey_ka Помощь студентам 1 20.10.2008 14:45
Visual c++(MFC) CUtty Visual C++ 1 13.10.2008 21:21
Примеры для Visual C++ MFC RMih Visual C++ 2 29.01.2008 12:25