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

» Visual C++

Автор: Qraizer
Дата сообщения: 15.12.2006 14:05
Принтер нормально разделяется, если юзать стандартный API печати. Тогда всё идёт в первую очередь через DLL-драйвер и спуллер. А как оно потом идёт через драйвер порта - это уже не наши проблемы.
Если использовать для печати непосредственно команды принтеру, то работа будет идти, минуя весь слой разделения, и единственное, что останется - разделение самого порта. А за это отвечает, как уже было отмечено, флажки при открытии LPT в CreateFile() и сам драйвер. Вообще-то я сильно подозреваю, что драйверу наплевать на разделение: что ему послали, то он и передаст в порт. Так что ИМХО это нужно делать только флажками в CreateFile(), ну или всё писать одним вызовом WriteFile() - единый поток данных драйвер ИМХО точно не прервёт для другого потока данных. Впрочем, никто не мешает поэксериментировать - запустить пару-тройку экземпляров программы и понаблюдать.
Автор: IUnknown777
Дата сообщения: 16.12.2006 15:50
Помогите пожалуйста!
Как конвертировать из BSTR в CString?
Автор: Arion
Дата сообщения: 16.12.2006 18:15

Цитата:
Вообще-то я сильно подозреваю, что драйверу наплевать на разделение: что ему послали, то он и передаст в порт.

Именно. Про то что его устройство открывают через CreateFile, драйвер не знает. Распределением прав занимается диспетчер объектов Windows.


Цитата:
Как конвертировать из BSTR в CString?

А какие с этим проблемы?

Код:
BSTR MyBSTRString = SysAllocString(TEXT("Hello world!"));
CString sStr(MyBSTRString);
Автор: Jozz
Дата сообщения: 17.12.2006 20:06
Доброго времени всем!
Если ктонить может дайте направление куда копать...)
Проблема такая:
Немогу разобраться как работать с BitBlt.
Создаем обычный однооконный проект, далее в OnPaint делаем следующее:

CPaintDC dc(this); // device context for painting
    CDC dcMemory;
dcMemory.CreateCompatibleDC(&dc);
    dcMemory.FillSolidRect(0,0,800,600,RGB(255,0,0)); // Что то делаем в резервном контексте.
    dc.BitBlt(0,0,800,600,&dcMemory,0,0,SRCCOPY);

После компиляции ничего нет ( Что я делаю неправильно, или не делаю?
Все делаю по примеру из MSDNа, класс зарегистрировал с флагом CS_BYTEALIGNCLIENT....
Автор: IUnknown777
Дата сообщения: 18.12.2006 18:09
Скажите пожалуйста, какие сообщения приходят от Select на html на диалоге?
кроме DHTML_EVENT_ONCLICK

Добавлено:
Jozz
я точно не знаю, но мне кажется ты должен использовать не dcMemory, а dc.
потому что у тебя CDC dcMemory пустой, не присоедененный никуда.

Добавлено:
Arion
спасибо, не в этом была ошибка)
Автор: Jozz
Дата сообщения: 19.12.2006 20:24
IUnknown777
На сколько я понимаю, методом CreateCompatibleDC(&dc) мы создаем копию dc в памяти, а поосле манипуляций пи помощи метода BitBlt(0,0,800,600,&dcMemory,0,0,SRCCOPY) копируем из памяти в контекст устройства(монитора) Все это для того чтобы исключить мерцания изображения из-за частых перерисовываний, но что-то у меня не работает...
Автор: Cactuc
Дата сообщения: 28.12.2006 14:04
Jozz

Цитата:
После компиляции ничего нет ( Что я делаю неправильно, или не делаю?

Надо еще
CBitmap bmp, *obmp;
bmp.CreateCompatibleBitmap(&dc, width, height);
obmp = dcMemory.SelectObject(&bmp);
...
dcMemory.SelectObject(obmp);
bmp.DeleteObject();
Автор: MFPSoftware
Дата сообщения: 04.01.2007 22:56
Ребят. Заказал себе на сайте триальную версию VC 2005 Pro. Пришел ДВД, я его установил, но никак не могу заставить его работать с консольными проектами.

К примеру, мне нужно написать программу Hello World. В универе (до этого я писал только там на VC 6, кажется) мне бы пришлось сделать только такой минимум:

#include <iostream.h>
int main()
{
cout << "Hello World" << endl;
}

Но тут это не работает. Файла iostream.h он не находит и начинает ругаться. Полазав по папкам с VC, я нашел там файл iostream. Добавил его, на наличие файла он перестал ругаться, но теперь начал писать, что cout и endl не объявлены, как будто я не добавлял файла iostream.

Много раз переустанавливал VC и на разные компьютеры, везде так. Не думаю, что дистрибутив может быть битым, так как он оффициальный, с сайта мелкосовта, хоть и триальный.

Друг, попробовав бесплатно-загружаемую с того же самого сайта, версию Express Edition сказал, что у него обсалютно такие-же проблемы.

Вот и не пойму, в чем дело. Что нужно сделать, что-бы писать консольные приложения?
Автор: vshersh
Дата сообщения: 05.01.2007 09:03
MFPSoftware
Похоже дело не в студии, а в Ansi-стандарте
Попробуй написать:

Цитата:
#include <iostream>

using namespace std;

int main()
{
cout << "Hello World" << endl;
}

Автор: Qraizer
Дата сообщения: 05.01.2007 17:42
MFPSoftware
Давненько Вы, батенька, в стандарт не заглядывали. Как минимум с 1998-го года. Книжки-то хоть есть какие? Хотя бы пятилетней давности...
Автор: MFPSoftware
Дата сообщения: 05.01.2007 21:00
Я его только начал изучать в институте. Там стоит версия 6 и на такие штуки не ругается =))) А препод нам этого не рассказывал. Вот и получилось так.

Вот еще такая проблема. Хотелось бы узнать, как сделать так, что бы внизу экрана, в разделе Output по умолчанию выводились сведения о Build, а не о Debug, как это сделано с самого начала, а то каждый раз после компиляции неудобно смотреть, где и какая ошибка там вылезла. ( http://img64.imageshack.us/img64/396/vceu7.jpg )


Еще меня достал такой досадный момент:
После неудачной компиляции, вместо того, что бы явно мне сказать, что у меня ошибка, компилятор мне просто выдает предыдущую откомпилированную версию, это крайне неудобно и просто раздражает. Как избавиться от этого?
Автор: CrackMe
Дата сообщения: 07.01.2007 09:46
Как установить ms visual c++ 6.0 sp0 ent без виртуальной явы машины (она мне не нужна, а по дефолту отменить устаноку нельзя). Плюс подскажите какие ветви реестра нужны ms visual c++ 6.0 sp0 ent. заранее спасибо
Автор: vshersh
Дата сообщения: 09.01.2007 09:13
CrackMe
6-я версия msvc ставится без жавы нормально и так. Возможно ты говоришь о 7-й?
из реестра пишется в

Цитата:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio

и в ряд соседних узлов, в которых пропиысываются устанавливаемые утилиты (Spy++... etc)
Автор: maina
Дата сообщения: 24.01.2007 16:10
ПОМОГИТЕ, ПЛИЗ, ВТОРАЯ ЗАДАЧКА!
(ВСЕГО ИХ 4 ЗАДАЧИ, КОТОРЫЕ НУЖНО СДАТЬ КО ВТОРНИКУ)
КТО МОЖЕТ ПОМОГИТЕ...


Тема 2. Обработка строк
Из входного потока вводится произвольное число строк. Каждая строка содержит одно или более слов, разделенных пробелами и (или) знаками табуляции.
Написать программу, которая формирует и выводит на экран новую, поместив в нее трех-буквенные слова исходной строки. Слова в новой строке должны быть разделены только одним пробелом.
Например, для входной строки:
add street abound bad across set ad
должны получить:
add bad set


ТРЕБОВАНИЯ:

Тема 2. Обработка строк
Для данной задачи требуется разработать два варианта программы. В обоих вариантах можно использовать как библиотеку ввода-вывода С, так и библиотеку ввода-вывода С++.

В первом варианте строка представляется массивом символов, и доступ к элементам мас-сива осуществляется с помощью указателей. Для ввода строки необходимо использовать функ-цию gets(str) из библиотеки С или метод cin.getline(str, SZ) из библиотеки С++. Об-работка строки в соответствии с условием задачи должна быть организована с помощью от-дельной функции. В функции main() организуется цикл по вводу строк, пока не будет обна-ружен конец файла; в цикле для каждой введенной строки вызываются функции обработки строки и вывода результата. Сами введенные строки в программе не хранятся. Библиотечные функции обработки строк не использовать.
Во втором варианте строка представляется списком. Элемент списка имеет следующую структуру:
struct Item{
char c; // символ строки
Item *next; // указатель на следующий элемент списка
};
Ввод строки осуществляется так же, как и в первом варианте, после чего строка преобразу-ется в список. Вся последующая обработка строки в соответствии с условием задачи осуществ-ляется только со списком. В функции main() в цикле для каждой введенной строки вызыва-ются функции создания списка; обработки строки, представленной списком; вывода строки, представленной списком; удаления списка.


У МЕНЯ ВТОРОЙ ВАРИАНТ!
Автор: Boom27
Дата сообщения: 12.03.2007 20:35
Объясните пожалуйста чем отличаются Microsoft Visual C++ от Borland C++ Builder?
Автор: OdesitVadim
Дата сообщения: 12.03.2007 20:51
Интересует в плане среды или языка программирования?
Если языки, то каждый производитель чуточку посвоему трактует стандарт и соответственно получаем различные особенности. Но на неочень сложных программах языки подобны.
В плане генерации кода многие критикуют билдер. Я с ними согласен лишь в одном - билдер не флагманский продукт CodeGear(теперь Borland отделила производство компиляторов). Он совместим с Делфи. А кодогенерация сейчас важна только в вирусах и ресурсоёмких вычислениях.А востальных случаях, как говорят "мег туды, мег сюды, кто заметит", хотя я не согласен.
Как по мне, берите майкрософтовское решение или Делфи.Но не билдер.
Автор: Boom27
Дата сообщения: 12.03.2007 20:57
OdesitVadim
Спасибо большое, это и интересовало
Автор: Igoreek
Дата сообщения: 13.03.2007 12:55
Help! У меня компилятор Visual C++ выдает ошибку при запуске проекта, он пишет что не может найти исполняемый файл, а компилирует нормально. Что делать? Помогите.
Автор: OdesitVadim
Дата сообщения: 13.03.2007 13:03
А студия какая? если 2005, то зайди в службы и найди службу терминалов, запусти её. Не знаю почему, но без неё отлаживать программы студия отказывается. Когда ты под студии запускаеш прогу, она как раз и пытается отлаживать.
Правда народ говорит, что можно отучить её от сего дела, но всё через одно место работает.
Автор: vsDev
Дата сообщения: 25.03.2007 17:25
Подскажите, как можно создать пустую реализацию методов для класса, который руками написан в заголовочном файле?
напр. я пишу в файле test.h:
class CTest {
public:
void test();
}
нажимаю комбинацию клавиш - и в файле tect.cpp появляется текст
void CTest::test(){

}
и так же при добавлении новых функций в заголовок.

мастер "Add memeber function..." не нравится
Автор: dmka
Дата сообщения: 26.03.2007 00:49
если "не нравится", тогда Ctrl+C, Ctrl+V
Автор: cmncorp
Дата сообщения: 26.03.2007 22:14
Всем привет!
Помогите пожалуйста решить проблему с выводом в текстовое поле в окне
вот кусок программки:

    char temp[20000];

    strcpy(temp,"");
    
    for(int i=1;i<(number+1);i++)
    {
        strcat(temp,array[i]);
        strcat(temp,"\n"); //проблема тут!!!
    }

    m_temp.Format("%s", temp);
    
    m_ResultField=m_temp;
    UpdateData(FALSE);

При такой записи в текстовом поле окна выводятся
значения элементов массива разделённые "толстой линией" (типа ентер)

вопрос:
как сделать чтобы каждый элемент массива выводился с новой строки
в текстовом поле???
Автор: Lyrik
Дата сообщения: 27.03.2007 01:46
cmncorp

Цитата:
вопрос:
как сделать чтобы каждый элемент массива выводился с новой строки
в текстовом поле???

Попробуй так:

Код: for(int i=1;i<(number+1);i++)
{
strcat(temp,array[i]);
// не надо: strcat(temp,"\n");
}

m_temp.Format("%s\n", temp);
Автор: cmncorp
Дата сообщения: 27.03.2007 19:08

Цитата:
А как у тя объявлен array?


array - глобальный массив типа char
char array[200][100];

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

У кого-нибудь есть ещё соображения на этот счёт?
Поделитесь, пожалуйста! Мне проект сдавать на днях
Автор: Lyrik
Дата сообщения: 27.03.2007 21:06
cmncorp
Понял, что ты хочешь
Как объявлена m_ResultField?
Если как CEdit, то поставь CEdit'у свойство ES_MULTILINE. У будет тебе счастье
Автор: f_serg
Дата сообщения: 28.03.2007 11:46
cmncorp

Цитата:
чтобы каждый элемент выводился на экране с новой строки

У меня в свое время получилось только так:

Код: strcat(temp,"\x0D\x0A");
Автор: Qraizer
Дата сообщения: 28.03.2007 15:20
Тогда уж strcat(temp,"\r\n");
Автор: cmncorp
Дата сообщения: 28.03.2007 18:12
f_serg


Цитата:
У меня в свое время получилось только так:

Код:
strcat(temp,"\x0D\x0A");


f_serg, cпасибо большое!! Всё после этой строки заработало!

Сам пробовал аналогичным образом, только писал не в шестнадцатиричной форме,
а в десятичной и не работало! )))
то есть:
strcat(temp, "\13\10");

Lyrik


Цитата:
поставь CEdit'у свойство ES_MULTILINE.


Это и так понятно


Друзья, всем большое спасибо за поддержку!!
Автор: f_serg
Дата сообщения: 29.03.2007 07:28
Qraizer

Цитата:
Тогда уж strcat(temp,"\r\n");

Что 0D0A, а не 0A0D я еще со времен ассемблера под DOS наизусть помню, а \r\n или \n\r надо было еще поискать.
Автор: cmncorp
Дата сообщения: 29.03.2007 16:24
Добрый день всем!

Подскажите мне ещё пожалуйста одну вещь:
есть строковая переменная (CString)
Как вывести содержимое её на принтер по нажатию одной кнопки в окне??

В сети видел много готовых примеров вывода на печать, используя некую структуру и контекст устройства. Но ни в одном месте не было сказано в какую собственно переменную (поле структуры) закладывать данные.

Страницы: 123456789

Предыдущая тема: MSAgent - как получить указатель на MS Balloon?


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