Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Visual C++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13

Открыть новую тему     Написать ответ в эту тему

WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OrlangurStep
читай путеводитель.  п 7.3.1 Кракозябры в консольном приложениии

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 10:44 07-12-2006 | Исправлено: WiseAlex, 10:46 07-12-2006
TatarinBo

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NDRST не знаю, кто такой CppWebBrowser, но думаю, что все его функции можно реализовать либо напрямую через WinInet (WinHTTP), либо с использованием MFC (классы CHttp*/CInternet* или можно даже через CHtmlView)

Всего записей: 6 | Зарегистр. 04-03-2006 | Отправлено: 03:31 08-12-2006
TSCHIPOLINO

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. У меня такой вопрос. Пишу прогу для печати текста, который ввожу сам, через WINAPI функции. В книгах описывается все через MFC, а может можно с командной строки????  Кто знает, пожалуйста подскажите.
А это сама функция. Здесь с портом работается как с файлом.  
HANDLE LPT1PORT;
   LPT1PORT = CreateFile("LPT1",GENERIC_READ|GENERIC_WRITE,0,
                 NULL,OPEN_EXISTING,0,NULL);
   if(LPT1PORT!=INVALID_HANDLE_VALUE)
   {
MessageBox("Идет процесс печати");
      CloseHandle(LPT1PORT);
   } else
MessageBox("Error LPT port");
}
 

Всего записей: 4 | Зарегистр. 20-09-2006 | Отправлено: 20:26 10-12-2006
IUnknown777



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TSCHIPOLINO
в командной строке набираешь:
copy print.txt LPT1:
 
и будет тебе печать из командной строки.
Программно можно замутить наверное через ShellExecute, наверное. Я не пробовала.
 
2 all
Кто создавал приложения с использованием html
Помогите разобраться.
как можно загружать картинки из русурсов на страницу html
как обрабатывать события если используются фреймы?

Всего записей: 212 | Зарегистр. 20-04-2006 | Отправлено: 11:23 11-12-2006
Arion



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
HANDLE LPT1PORT;  
   LPT1PORT = CreateFile("LPT1",GENERIC_READ|GENERIC_WRITE,0,  
                 NULL,OPEN_EXISTING,0,NULL);  
   if(LPT1PORT!=INVALID_HANDLE_VALUE)  
   {  
MessageBox("Идет процесс печати");  
      CloseHandle(LPT1PORT);  
   } else  
MessageBox("Error LPT port");  
}  

Сколько я понимаю, так работать не будет. Не получится открыть порт, т.к. он будет занят драйвером принтера. Вообще говоря я этот факт не проверял, но с RS-232 это так стопроцентно, не думаю что тут есть какие либо отличия. Для печати на принтер нужно получить его Device Context (DC) и печатать напрямую на нем вызовом StartDoc, EndDoc и пр. Вот пример из MSDN:
http://msdn2.microsoft.com/en-gb/library/ms535517.aspx

Всего записей: 436 | Зарегистр. 29-06-2003 | Отправлено: 11:54 11-12-2006
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arion

Цитата:
Сколько я понимаю, так работать не будет. Не получится открыть порт, т.к. он будет занят драйвером принтера.  

Или я тупю или одно из двух. Но устройство (Кстати оно правильно называется что-то вроде "\\.\LPT1" создается и обслуживается ИМЕННО драйвером. И для каждого процесса, запросившего открытие этого устройства драйвер должен сам разрулить порядок и приоритет записи туда.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 09:04 12-12-2006
Yogi Bear

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите найти инфу о программировании ADSL  модема. Скажем как определить количество полученных байт через модем? Или измерить скорость передачи данных?  В MSDN не нашел, интернет вроде перерыл

Всего записей: 54 | Зарегистр. 08-09-2006 | Отправлено: 06:48 13-12-2006
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yogi Bear
А wmi интерфейс в этом, случаем, не поможет?

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 08:58 13-12-2006
Arion



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Или я тупю или одно из двух. Но устройство (Кстати оно правильно называется что-то вроде "\\.\LPT1" создается и обслуживается ИМЕННО драйвером. И для каждого процесса, запросившего открытие этого устройства драйвер должен сам разрулить порядок и приоритет записи туда.

Это будет чертовски интеллектуальный драйвер. На самом деле все обстоит  гораздо проще, в функции CreateFile есть параметр SharingMode, указывающий на возможность совместного доступа к устройству. Первый процесс, открывающий файл/порт (в нашем случае - драйвер принтера) определяет могут ли другие процессы получить к нему доступ. Я не поленился и проверил - драйвер позволяет осуществлять совместный доступ к порту. Сделано это вероятнее всего для возможности доступа к прозрачным аппаратным ключам защиты. Тем не менее, запись туда управляющих кодов для непосредственной печати затея не очень хорошая и скорее всего подобный код не будет работать с другим принтером.
 
Добавлено:

Цитата:
Помогите найти инфу о программировании ADSL  модема. Скажем как определить количество полученных байт через модем? Или измерить скорость передачи данных?

IP Helper API, функция GetIpStatistics.

Всего записей: 436 | Зарегистр. 29-06-2003 | Отправлено: 17:00 14-12-2006
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arion
Ну, возможно, я погорячился насчет того, что только драйвер разруливает совместный доступ, однако, если заглянуть глубжее, кто кроме него может решить, как несколько потоков могут печатать на один принтер? Системе, ИМХО, вообще пофигу до этого, она, скорее всего, просто передает флаг SHARED в драйвер (ну может себе пометочку делает, что если EXCLUSIFF, то фиг кому еще этот драйвер давать. Но вот как разделять принтер, наверно все же решает драйвер.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 14:27 15-12-2006
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Принтер нормально разделяется, если юзать стандартный API печати. Тогда всё идёт в первую очередь через DLL-драйвер и спуллер. А как оно потом идёт через драйвер порта - это уже не наши проблемы.
Если использовать для печати непосредственно команды принтеру, то работа будет идти, минуя весь слой разделения, и единственное, что останется - разделение самого порта. А за это отвечает, как уже было отмечено, флажки при открытии LPT в CreateFile() и сам драйвер. Вообще-то я сильно подозреваю, что драйверу наплевать на разделение: что ему послали, то он и передаст в порт. Так что ИМХО это нужно делать только флажками в CreateFile(), ну или всё писать одним вызовом WriteFile() - единый поток данных драйвер ИМХО точно не прервёт для другого потока данных. Впрочем, никто не мешает поэксериментировать - запустить пару-тройку экземпляров программы и понаблюдать.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 15:05 15-12-2006
IUnknown777



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста!
Как конвертировать из BSTR в CString?

Всего записей: 212 | Зарегистр. 20-04-2006 | Отправлено: 16:50 16-12-2006
Arion



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

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

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

Код:
 
BSTR MyBSTRString = SysAllocString(TEXT("Hello world!"));
CString sStr(MyBSTRString);
 

Всего записей: 436 | Зарегистр. 29-06-2003 | Отправлено: 19:15 16-12-2006
Jozz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени всем!
Если ктонить может дайте направление куда копать...)
Проблема такая:
Немогу разобраться как работать с 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....  

Всего записей: 44 | Зарегистр. 05-12-2005 | Отправлено: 21:06 17-12-2006
IUnknown777



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите пожалуйста, какие сообщения приходят от Select на html на диалоге?
кроме DHTML_EVENT_ONCLICK
 
Добавлено:
Jozz
я точно не знаю, но мне кажется ты должен использовать не dcMemory, а dc.
потому что у тебя CDC dcMemory пустой, не присоедененный никуда.
 
Добавлено:
Arion
спасибо, не в этом была ошибка)

Всего записей: 212 | Зарегистр. 20-04-2006 | Отправлено: 19:09 18-12-2006
Jozz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
IUnknown777
На сколько я понимаю, методом CreateCompatibleDC(&dc) мы создаем копию dc в памяти, а поосле манипуляций пи помощи метода BitBlt(0,0,800,600,&dcMemory,0,0,SRCCOPY) копируем из памяти в контекст устройства(монитора) Все это для того чтобы исключить мерцания изображения из-за частых перерисовываний, но что-то у меня не работает...  
 

Всего записей: 44 | Зарегистр. 05-12-2005 | Отправлено: 21:24 19-12-2006
Cactuc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jozz

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

Надо еще  
CBitmap bmp, *obmp;
bmp.CreateCompatibleBitmap(&dc, width, height);
obmp = dcMemory.SelectObject(&bmp);
...
dcMemory.SelectObject(obmp);
bmp.DeleteObject();

Всего записей: 12 | Зарегистр. 16-03-2006 | Отправлено: 15:04 28-12-2006
MFPSoftware



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят. Заказал себе на сайте триальную версию 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 сказал, что у него обсалютно такие-же проблемы.
 
Вот и не пойму, в чем дело. Что нужно сделать, что-бы писать консольные приложения?

Всего записей: 576 | Зарегистр. 01-04-2005 | Отправлено: 23:56 04-01-2007
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MFPSoftware
Похоже дело не в студии, а в Ansi-стандарте  
Попробуй написать:

Цитата:
#include <iostream>  
 
using namespace std;
 
int main()  
{  
cout << "Hello World" << endl;  
}


Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 10:03 05-01-2007 | Исправлено: vshersh, 10:07 05-01-2007
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MFPSoftware
Давненько Вы, батенька, в стандарт не заглядывали. Как минимум с 1998-го года. Книжки-то хоть есть какие? Хотя бы пятилетней давности...

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 18:42 05-01-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Visual C++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru