Вопрос № 28586: Здравствуй уважаемые эксперты!
Пытаюсь начать писать на visual c++ 7.0. Но после delphi дело идет туго. Очень прошу вас выслать мне
на почту простенький итсходник в котом по нажатию кнопки меняется текст в statictext /
тоесть на фор...Вопрос № 28588: Здравствуйте уважаемые эксперты.
Недавно столкнулся с еще одной проблемой при работе с сопроцессором. Есть массив целочисельных значений, необходимо найти его минимальное значение с помощью вставки на асме. "Решение" в моем исполнении п...Вопрос № 28595: Разбераюсь ВСВ, создал проект-заготовку MDI Application. При создании каждого нового окна создается ...Вопрос № 28608: Уважаемые експерты! Как скопировать файл, отображая процесс копирования
при помощи прогресс бара. Если можно, дайте пример кода а не просто то чем это реализуется. Доку на msdn смотрел - примеров не нашел, а без примера не понятно. Прога на MFC. Испо...Вопрос № 28622: Пожалуйста помогите с TreeView!!!! Какое значение присвоить индексу в компоненте TreeView, чтобы он реагировал по клику именно на выбранный узел? ...
Вопрос № 28.586
Здравствуй уважаемые эксперты!
Пытаюсь начать писать на visual c++ 7.0. Но после delphi дело идет туго. Очень прошу вас выслать мне
на почту простенький итсходник в котом по нажатию кнопки меняется текст в statictext /
тоесть на форме лежит кнопка и statictext и по нажатию кнопку текст заменяется на какой нибудь другой.
в delphi достаточно было добавит в обработчик кнопки строку
label.caption:='new text';
а как это сделать в visual 7?
заранее спасибо.
Отвечает: Jadd
Здравствуйте, Ивченков Владислав Владимирович!
Все просто, не боись. Создаешь Dialog Based приложение. Идешь в редактор ресурсов. Кидаешь на форму static text. А дальше все зависит от тебя. Хочешь немного меньше кода (где-то на одну строку), тогда жмешь правой клавишей на statictext и выбираешь Properties. Переименовываешь id на какой-нибудь свой(например IDC_STATIC1). Дальше жмешь правой кнопкой мыши и выбираешь Add Variable. Присваиваешь имя переменной. А адальше два раза кликешь на кнопке и тебе будет предложено добавить обработчик нажатия. Добавляешь
и переходишь в редактор кода. В нем пишешь m_static.SetWindowText("Hello World!");
Другой способ не звязан с множеством тыканий мыши. Он исходит из того, что все компоненты - окна и происходят от одного предка CWnd. Значит можно получить указатель на любой из них. Например, вот так:
CWnd *pWnd = GetDlgItem(IDC_STATIC1); //IDC_STATIC1 - наш статик из первого примера
pWnd->SetWindowText("Hello World!");
Как видишь, ничего сложного. Дерзай в изучении.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 31.10.2005, 09:07
Отвечает: azat
Здравствуйте, Ивченков Владислав Владимирович!
Сделать замену текста можно так:
SetWindowText(hStatic, "new text");
Ответ отправил: azat (статус: 5-ый класс)
Отправлен: 31.10.2005, 10:51
Отвечает: estiGi
Здравствуйте, Ивченков Владислав Владимирович!
если нет связанной переменной получаем контрол по его идентификатору:
void CMyDialog::OnButtonClick () {
CWnd * wnd = GetDlgItem (IDC_STATIC1);
wnd->SetWindowText ("New Text");
}
если связать с контролом переменную
Связываем контрольную переменную, CStatic m_static
void CMyDialog::OnButtonClick () {
m_static->SetWindowText ("New Text");
}
Связываем переменную по значению, CString m_static
void CMyDialog::OnButtonClick () {
m_static = "New Text";
UpdateData (false);
}
главное условие - у статика должен быть идентификатор не IDC_STATIC, потому он равняется -1, т.е. ему надо его изменить
Ответ отправил: estiGi (статус: 4-ый класс)
Отправлен: 31.10.2005, 22:21
Вопрос № 28.588
Здравствуйте уважаемые эксперты.
Недавно столкнулся с еще одной проблемой при работе с сопроцессором. Есть массив целочисельных значений, необходимо найти его минимальное значение с помощью вставки на асме. "Решение" в моем исполнении приведено ниже.
Вроде все должно работать, но переменная min инициализируется лишь дважды. А именно:
1 - ну тут все ясно
2 - происходит инициализация значением NaN, в самом конце цикла.
Подскажите как тут быть.
Заранее всем благодарен.
Приложение:
Отправлен: 31.10.2005, 04:31
Вопрос задал: Юра (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Raptor1
Здравствуйте, Юра!
Так вроде работает, основные ошибки - уыш надо увеличивать на размер float - в данном случае на 4 байта, даные надо не только ложить в стек но и доставать во избежание переполнения
const DWORD N=10;
float mas[N], min,temp;
DWORD i;
for (i=0; i<N; i++)
mas[i]=rand()%100*15-i*0.5;
__asm
{
finit
lea esi, mas
mov ecx, N
dec ecx
fld [esi] //(1)
fst min
add esi,4
}
pMin:
__asm
{
fld [esi]
add esi,4
fcom min
fstsw ax
sahf
ja A1
fst min
}
A1: __asm
{
fstp ST(2)
loop pMin
};
Ответ отправил: Raptor1 (статус: 9-ый класс)
Отправлен: 02.11.2005, 23:40
Вопрос № 28.595
Разбераюсь ВСВ, создал проект-заготовку MDI Application. При создании каждого нового окна создается
Приложение:
Отправлен: 31.10.2005, 07:43
Вопрос задал: Mi1982 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Jadd
Здравствуйте, Mi1982!
Для того, чтобы делать SaveItem, нужно определить объект или предмет сохранения. Если это - содержимое Memo в дочернем окне, тогда твоя процедура будет, как в приложении, при условии, что путь к файлу и указатель но дочернее окно, ты все таки сохранишь где-то в переменных-членах класса.
Приложение:
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 31.10.2005, 09:13
Вопрос № 28.608
Уважаемые експерты! Как скопировать файл, отображая процесс копирования при помощи прогресс бара. Если можно, дайте пример кода а не просто то чем это реализуется. Доку на msdn смотрел - примеров не нашел, а без примера не понятно. Прога на MFC. Использую диалог, выбираешь файл, потом куда копировать, копируется (кстати в это время интерфейс не отвечает) и вот хотелось бы отображать процесс на прогресс баре на этой же форме. Спасибо.
Отправлен: 31.10.2005, 10:49
Вопрос задал: Romanus (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: estiGi
Здравствуйте, Romanus!
Интерфес не отвечает, потому что надо копировать в отдельном потоке.
Смотри в приложении
С мелочами думаю разберешься сам. Смори подробней функцию CopyFileEx в МСДН
Приложение:
Ответ отправил: estiGi (статус: 4-ый класс)
Отправлен: 31.10.2005, 22:33
Отвечает: Raptor1
Здравствуйте, Romanus!
Для WINNT/2000 это делается с помощью CopyFileEx. Если ты хочешь это сделать сам то надо сделать два отображаемых в память файла (CreateFileMapping), один исходный второй для копирования и копировать кусками некоторого размера (MapViewOfFile) с отображением процесса вручную в нужном тебе окне.
Ответ отправил: Raptor1 (статус: 9-ый класс)
Отправлен: 02.11.2005, 23:40
Вопрос № 28.622
Пожалуйста помогите с TreeView!!!! Какое значение присвоить индексу в компоненте TreeView, чтобы он реагировал по клику именно на выбранный узел?
Приложение:
Отправлен: 31.10.2005, 13:47
Вопрос задала: Ariy (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Tsechoev Bagaudin
Здравствуйте, Ariy!
Если добавлять дочерний элемент для выделенного узла, то
TreeView2->Items->AddChildFirst(TreeView2->Selected,Edit2->Text);
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 31.10.2005, 22:45
Отвечает: Татьяна
Здравствуйте, Ariy!
для определения индекса текущего узла
TreeView2->Selected->Index;
--------- Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 6-ой класс)
Отправлен: 01.11.2005, 17:27