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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2008, 23:42   #11
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Ну... не знаю как насчет MFC, но я думаю лучше бы ему начать с Win32 Console Application -> Empty project. Проще этого, я думаю, нет ничего
MaTBeu вне форума Ответить с цитированием
Старый 20.11.2008, 17:13   #12
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

MaTBeu, да я об этом еще в первом сообщении в этой теме сказал
Цитата:
Сообщение от filosof_x86 Посмотреть сообщение
Во-вторых, для начала не лезьте в программирование с оконным интерфейсом, разберитесь сначала с консолью. При создании проекта выберите консольный проект, и укажите его как empty project. Потом надо будет только добавить руками .cpp файл и писать в нем уже весь код.
filosof_x86 вне форума Ответить с цитированием
Старый 21.11.2008, 22:47   #13
sum42
Пользователь
 
Регистрация: 15.11.2008
Сообщений: 33
По умолчанию

я прислушался к мнениям специалистов, и начал делать в консоли.
И тут же столкнулся с проблемой преобразования типов.
вот код:
Код:
#include "windows.h"
#include <iostream>
using namespace std;
int main()
{
	char d;
	char ch;
	char disk[4];
	cout << "Input name disk: "<<endl;
	cin >> disk;
	
	d = GetDriveType(disk);
	if( d == DRIVE_UNKNOWN ) cout << " UNKNOWN" << endl;
	if( d == DRIVE_NO_ROOT_DIR ) cout << " DRIVE NO ROOT DIR" << endl;
	if( d == DRIVE_REMOVABLE ) cout << " REMOVABLE" << endl;
	if( d == DRIVE_FIXED ) cout << " FIXED" << endl;
	if( d == DRIVE_REMOTE ) cout << " REMOTE" << endl;
	if( d == DRIVE_CDROM ) cout << " CDROM" << endl;
	if( d == DRIVE_RAMDISK ) cout << " RAMDISK" << endl;
	cin>>ch;
return 0;
}
при построении проекта возникает ошибка:

Ошибка 1 error C2664: GetDriveTypeW: невозможно преобразовать параметр 1 из 'char [4]' в 'LPCWSTR'

прочитал статьи про функции, типы данных, описание GetDriveType, в поисковике ничего нормального по этой теме не смог найти((
подскажите в чем проблема?
sum42 вне форума Ответить с цитированием
Старый 21.11.2008, 23:48   #14
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Чтоб ваш код работал, нужно в пункте меню Project найти подменю имя_проекта Properties(ну или Alt+F7) и в окне во вкладке General выбрать Character Set и поставить в нем значение Use Multi-Byte Character Set.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 21.11.2008 в 23:51.
ACE Valery вне форума Ответить с цитированием
Старый 22.11.2008, 13:13   #15
como
Форумчанин
 
Регистрация: 26.07.2008
Сообщений: 116
По умолчанию

Цитата:
Сообщение от sum42 Посмотреть сообщение
я прислушался к мнениям специалистов, и начал делать в консоли.
И тут же столкнулся с проблемой преобразования типов.
Попробуй так:
Код:
#include <windows.h>
#include <iostream>
#include <string>

using namespace std;

int main()
{
    wchar_t const * drive_type[] =
    {
        L"UNKNOWN",
        L"DRIVE NO ROOT DIR",
        L"REMOVABLE",
        L"FIXED",
        L"REMOTE",
        L"CDROM",
        L"RAMDISK",
    };

    size_t drive_type_size = sizeof(drive_type) / sizeof(drive_type[0]);

    unsigned d;
    wstring disk;
    wcout << L"Input name disk: " << endl;
    wcin >> disk;
	
    d = GetDriveType(disk.c_str());
    if (d < drive_type_size)
        wcout << drive_type[d] << endl;
    else
        wcout << L"not in the list\n";
}
como вне форума Ответить с цитированием
Старый 29.11.2008, 18:55   #16
sum42
Пользователь
 
Регистрация: 15.11.2008
Сообщений: 33
По умолчанию

Большое спасибо за помощь.
Эту проблему решил тем, что написал в начале файла:
Код:
#undef UNICODE
В моей проге все нормально работает за исключением двух вещей.
Мне нужно вывести на экран объем жесткого диска в гигабайтах.
вот код:

Код:
unsigned long SectorsPerCluster;   
unsigned long BytesPerSector;
unsigned long NumberOfFreeClusters;
unsigned long TotalNumberOfClusters;

BOOL GetDiskFreeSpaceFlag = GetDiskFreeSpace (
dd,
&SectorsPerCluster,
&BytesPerSector,
&NumberOfFreeClusters,
&TotalNumberOfClusters);

float cluster;
cluster = SectorsPerCluster*BytesPerSector;

unsigned float volume;
volume = (TotalNumberOfClusters*(cluster/1024))/1024/1024;

if(GetDiskFreeSpaceFlag != 0) 
	{
		cout << "Volume of disk = " << volume << " Gb" << endl;	
	}
Проблема в том, что объем выводится целым числом, а мне нужно сделать вывод с одним символом после запятой.
например у меня раздел С занимает 11.7 Гб, а моя прога выводит 11 Гб.
Прочитал про потоки и форматы вывода, но у меня ничего не получилось.
Объясните пожалуйста как это сделать.

Ну и вторая проблема это то, что моя прога работает только у меня на компе.
Друг сказал что нужно при компиляции внести все библиотеки в exe-файл, но он не помнит как это делать.
sum42 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как вывести текст из БД nikleb PHP 2 27.06.2008 10:13
Как вывести на канвасе текст не с белым, а прозрачным фоном? Altera Общие вопросы Delphi 2 29.03.2008 20:21
Как вывести из текстового файла на экран русский текст? Mischa Помощь студентам 8 12.03.2008 06:23
Множества. Не получается вывести результат RECREATOR Общие вопросы Delphi 3 24.12.2007 23:31
Не получается вывести график RECREATOR Общие вопросы Delphi 7 23.12.2007 01:23