Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Обучение и начало програмирования на С++

Автор: NNS
Дата сообщения: 18.03.2006 20:59
Abs62
Хм... А с именем файла как быть? Т.е. Мне то нужно чтоб имя файла не менялось. К примеру, если первый файл имеет название File.txt, я создаю другой файл с именем File_1.txt и записываю в него "исправленный" вариант. Чтоб вернуть информацию в File.txt, мне придется гнать информацию из File_1.txt, обратно в File.txt. Долговато...
Автор: Abs62
Дата сообщения: 18.03.2006 21:26
NNS
А зачем гнать информацию обратно? Закрываешь и удаляешь File.txt, потом переименовываешь File_1.txt в File.txt. Пара строчек в программе, доли секунды на выполнение.
Автор: Mickey_from_nsk
Дата сообщения: 20.03.2006 06:23
NNS
Немного добавлю. Вместо File_1.txt лучше все-таки создать файл с уникальным именем во временном каталоге, а затем его, как было сказано выше, переименовать.
Abs62
Ну я бы не сказал, что то же самое. Если не ошибаюсь, там можно уже и memcpy использовать. Только надо размер правильно изначально выставить. Но где то вглубине, на уровне ОС, наверно действия останутся прежними.
Извратов в этом способе на порядок больше чем просто при копировании и переименовании. А уж по количеству разнообразных системных вызовов...
Автор: NNS
Дата сообщения: 23.03.2006 19:08
Abs62
Mickey_from_nsk

Спасибо вам, вы мне очень помогли!

Подскажите пожалуйста аналог под виндовс, ДОСовской функции clrscr();
Автор: Abs62
Дата сообщения: 23.03.2006 20:05
NNS
Для приложения с оконным интерфейсом - InvalidateRect окну. Это заставит его перерисоваться заново.
Для консольного приложения можно использовать уже упомянутую Mickey_from_nsk WriteConsoleOutput.
Автор: NNS
Дата сообщения: 23.03.2006 21:10
Abs62

Цитата:
Для консольного приложения можно использовать уже упомянутую Mickey_from_nsk WriteConsoleOutput.

Можно по подробней, как ее использовать для отчистки консольного экрана.
Автор: Abs62
Дата сообщения: 23.03.2006 23:51
NNS
Ну, например, так:

Код:
#define FILL_CHAR ' '
#define FILL_ATTRIBUTE BACKGROUND_BLUE

BOOL ClearConsole()
{
HANDLE hConsole;
CONSOLE_SCREEN_BUFFER_INFO BufInfo;
WORD size;
CHAR_INFO *pBuf;
SMALL_RECT WriteRegion;
COORD dwBufferCoord;
BOOL ret;

hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsole,&BufInfo);
size=BufInfo.dwSize.X*BufInfo.dwSize.Y;
pBuf=new CHAR_INFO[size];
for(WORD i=0;i<size;i++) {
pBuf[i].Char.AsciiChar=FILL_CHAR;
pBuf[i].Attributes=FILL_ATTRIBUTE;
}
dwBufferCoord.X=dwBufferCoord.Y=0;
WriteRegion.Top=WriteRegion.Left=0;
WriteRegion.Right=BufInfo.dwSize.X-1;
WriteRegion.Bottom=BufInfo.dwSize.Y-1;
ret=WriteConsoleOutput(hConsole,pBuf,BufInfo.dwSize,dwBufferCoord,&WriteRegion);
delete[] pBuf;
return(ret);
}
Автор: Mickey_from_nsk
Дата сообщения: 24.03.2006 11:46
Можно обойтись и без выделения памяти, хотя, наверно, это будет дольше.
Просто - по байтно выводить через WriteConsoleOutputCharacter. IMHO оно для этих целей больше подходит.
Автор: Abs62
Дата сообщения: 24.03.2006 20:00
Mickey_from_nsk
Тогда уж лучше FillConsoleOutputCharacter. Эффективнее получится.
Автор: NPC
Дата сообщения: 25.03.2006 10:58
господа, имееться Microsoft Visual C++ 2003, с MSDN july 2004.
скомпилировал проект, но как в окошко вешать разные компоненты???
ну всмысле под меню белое окно.
"win 32 project"
Автор: Abs62
Дата сообщения: 25.03.2006 12:20
NPC
А туда не надо компоненты вешать - там рисовать надо.
Задача-то какая стоит?
Автор: NPC
Дата сообщения: 25.03.2006 18:45
Abs62 задача в том, как туда ресурсы налепить в это белое окошко программы.
Автор: Abs62
Дата сообщения: 25.03.2006 19:14
NPC
Какие именно ресурсы? Меню есть, можно ещё тулбар(ы) добавить. Что ещё для счастья надо?
Автор: NPC
Дата сообщения: 25.03.2006 20:49
Abs62 да что нибудь, что бы вместо злочастного белого окна что нибудь было
я так понял в коде нужно прописать форму, которую бы грузил вместо белого окна.
Автор: Abs62
Дата сообщения: 25.03.2006 23:18
NPC
Переходя на MS VC, придётся отвыкать от понятия "форма" - это борландовская фича. В WinAPI, да и в MFC всё строится на понятии "окно".
Вот главное окно программы (то самое, белое). В нём можно что-нибуть нарисовать. Можно вывести текст. В нём можно создать дочерние окна для самых разных целей. Можно в качестве главного окна использовать окно диалога. И т.д., и т.п. Правда, программировать это придётся главным образом руками - навыки программирования мышкой пригодятся разве что для создания диалоговых ресурсов.
Рекомендую для начала прочитать "Программирование под Windows" Ч.Петцольда - это поможет разобраться в идеологии построения программ без использования VCL, на WinAPI (а "win 32 project" - это чистый WinAPI, без MFC).
Автор: KADABRA
Дата сообщения: 26.03.2006 08:58
NPC
Чтобы увидеть что-то наподобии "формы" надо создать MFC Application и выбрать тип Dialog application.
Автор: coyc
Дата сообщения: 26.03.2006 09:28
Здравствуйте
Нужна помощь начинающему. У меня есть xlm файл, который находится в интернете.
Пример кода

<?xml version="1.0" encoding="utf-8" ?>
<UserInfoResult xmlns="http://ws.darkagesworld.com">
<userInfo>
<nick>string</nick>
<clanName>string</clanName>
<clanPosition>string</clanPosition>
<race>string</race>
<gender>string</gender>
<persBirthDate>dateTime</persBirthDate>
<strength>int</strength>
<dexterity>int</dexterity>
<luck>int</luck>
<stamina>int</stamina>
<strengthEx>int</strengthEx>
<dexterityEx>int</dexterityEx>
<luckEx>int</luckEx>
<antiDexterityEx>int</antiDexterityEx>
<antiLuckEx>int</antiLuckEx>
<level>int</level>
<experience>int</experience>
<victories>int</victories>
<defeats>int</defeats>
<friends>int</friends>
<enemies>int</enemies>
<health>int</health>
</TraumaData>
</traumaList>
</userInfo>
</UserInfoResult>
[/code]
Мне надо что бы к примеру в Label выводилась информация, которая в <nick>string</nick>,
при нажатие на кнопку.
Автор: NPC
Дата сообщения: 26.03.2006 10:03
coyc читай название темы (программирование С++)
Abs62 теперь понятно!
так как в белом окне что то нарисовать?
KADABRA MFC не интересно.
Автор: Abs62
Дата сообщения: 26.03.2006 12:44
NPC
Рисуй в обработчике сообщения WM_PAINT (это в оконной функции, которую VC назвал WndProc). Например, добавь туда (между BeginPaint и EndPaint) следующее:

Код:
RECT r;
GetClientRect(hWnd,&r);
DrawText(hdc,"Hello, world!",-1,&r,DT_SINGLELINE | DT_CENTER | DT_VCENTER);
Автор: NPC
Дата сообщения: 26.03.2006 18:37

Цитата:
Рисуй в обработчике сообщения WM_PAINT (это в оконной функции, которую VC назвал WndProc). Например, добавь туда (между BeginPaint и EndPaint) следующее:

хм, а зачем тогда редактор ресурсов? где всякие кнопочки, переключатели и проч.?
Автор: Abs62
Дата сообщения: 26.03.2006 20:44
NPC
В окнах диалога, вестимо. Смотри функции CreateDialog, DialogBox и иже с ними.
Автор: Mickey_from_nsk
Дата сообщения: 27.03.2006 04:49
NPC
А тебе точно надо WinAPI? Может .NET Framework сгодится? Там это все куда как проще пишется.
Abs62

Цитата:
Переходя на MS VC, придётся отвыкать от понятия "форма" - это борландовская фича.

Я бы не был так категоричен. Окно в NET называется Form.
Другое дело, если эту штуку не использовать, писать на WinAPI, там ты прав.
Автор: Abs62
Дата сообщения: 27.03.2006 06:29
Mickey_from_nsk
Когда скачиваешь маленькую симпатичную утилитку, а она тебе заявляет, мол твой NET Framework не той версии, и надо бы ещё пару десятков мегабайт загрузить - программистов на .NET хочется расстрелять на месте.
Автор: Mickey_from_nsk
Дата сообщения: 27.03.2006 09:28
Abs62
Пардон, а вы все на Win98 работаете?
А Windows update уже отменили?

Просто, при работе современных программ, по любому разные версии Framework будут нужны. Кроме того, насколько я знаю, большинство народа работает на XP. (Ну по крайней мере вокруг меня), там 1.1 уж точно стоит.
Автор: dyr farot
Дата сообщения: 27.03.2006 10:21
обычно рядом с той симпатичной утилиткой рядом приписанно какой ей фреймвор нужен.
к тому же этих фреймворков не так уж и много ( три всего лиш ) и скачать их ( IMHO ) даже на диал-апе не проблема...
Автор: Abs62
Дата сообщения: 27.03.2006 17:30
Mickey_from_nsk
1.0 там стоит. 1.1 - уже извольте качать.
dyr farot
Это пока три. Я как-то не уверен, что MS на этом остановится. А скачать, конечно, можно, что я, собственно, и сделал , но радости при этом испытал мало.
Автор: NPC
Дата сообщения: 12.04.2006 13:37

Цитата:
А тебе точно надо WinAPI?

тогда как сделать что бы visual C++ 2003 работал именно с С++, а не с WinAPI?
Автор: cherokee100
Дата сообщения: 12.04.2006 23:53
Прошу прощения за тупейший вопрос, но сам никак разобраться.
Суть следующая. VC++, тот который в 2005.
Есть форма, на ней текстовое поле. Есть база данных Access. Требуется взять из базы значение очередной ячейки присвоить его свойсву текст поля.
Я давно еще работал с визуаль бейсиком, там проблема решалась просто - что-то вроде Data.Recordset (номер) и все. Здесь та же аналогия не проходит естественно. Перепробовал все, что можно, но так и нахожусь в ступоре.
Подскажите, плиз, как?? Если можно, пошагово, типа делай раз, делай два. Для тупых.
Спасибо.
Автор: Mickey_from_nsk
Дата сообщения: 13.04.2006 07:50
NPC

Цитата:
тогда как сделать что бы visual C++ 2003 работал именно с С++, а не с WinAPI?

Что ты имеешь в виду? При чем здесь С++ и WinAPI?
Или ты имеешь в виду "как будет выглядеть разработка для Windows без winAPI"?
Автор: NPC
Дата сообщения: 13.04.2006 10:32
Mickey_from_nsk нет, просто сделать так что бы программировать не на языке WinAPI, а на С++. надеюсь понятно

Страницы: 12345678910111213141516171819202122

Предыдущая тема: DELPHI. Счетчик ячеек со значенями, значений ячеек


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.