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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: так точнее
Старый 03.04.2016, 15:44   #131
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

p51x если у тебя есть факты что <fstream> не работает в вин апи - то выкладывай их.

и не нужно плакать ...
RAFA91 вне форума
Старый 03.04.2016, 15:50   #132
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Кто говорил, что он не работает? Вы ж сами винапи просили.

А так нет особой разницы через что байты читать. И все fstream'ы, QFile'ы и т.п. наверняка на винде используют тот же ReadFile внутри.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Старый 03.04.2016, 15:52   #133
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

под вин апи я подразумевал проект а не функции.
RAFA91 вне форума
Старый 03.04.2016, 15:53   #134
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
p51x если у тебя есть факты что <fstream> не работает в вин апи - то выкладывай их.
Не работает. Реализация fstream для винды может и вероятнее всего будет использовать винапи и только. Если вы этого не понимаете, то вас к преподаванию яп подпускать нельзя.

Цитата:
и не нужно плакать ...
Вы о чем? Я тут ржу аки конь над каждым вашим постом.

Цитата:
под вин апи я подразумевал проект а не функции.
Нет таких проектов.
p51x вне форума
Старый 03.04.2016, 16:21   #135
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Не работает. Реализация fstream для винды может и вероятнее всего будет использовать винапи и только..
бред.

проверяй .


Код:
#include <commctrl.h>
#include <commdlg.h>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

bool dos = false;

TBBUTTON tbb[] =
{
{STD_FILENEW, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON,0,0,0,0},
{STD_FILEOPEN, ID_FILE_OPEN,TBSTATE_ENABLED, TBSTYLE_BUTTON, 0,0,0,0},
{STD_FILESAVE, ID_FILE_SAVE,TBSTATE_ENABLED, TBSTYLE_BUTTON,0,0,0,0}
};

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
	lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;
	static TCHAR name[256] = _T("");;
	static OPENFILENAME file;
	ifstream in;
	ofstream out;
	static vector<string> v;
	vector<string>::iterator it;
	string st;
	int y, k;
	static int n,length,sx,sy,cx,iVscrollPos,iHscrollPos,COUNT,MAX_WIDTH;
	static SIZE size = {8, 16}; //Ширина и высота символа
	static HWND hWndToolBar;
	static int size_Toolbar;
	static LOGFONT lf;
	static CHOOSEFONT cf;
	static HFONT hfont;
	RECT rt;
	TEXTMETRIC tm;
	CONST CHAR *in_str = NULL;
	CHAR *out_str = NULL;;
	switch (message)
	{
	case WM_CREATE:
		file.lStructSize = sizeof(OPENFILENAME);
        file.hwndOwner = hWnd;
		file.hInstance = hInst;
		file.lpstrFilter = _T("Текстовые файлы\0*.txt;*.doc;*.vsd;*.dat");
		file.lpstrFile = name;
		file.nMaxFile = 256;
		file.lpstrFileTitle = NULL;
		file.nMaxFileTitle = 0;
		file.lpstrInitialDir = _T("C:\\");
		file.lpstrDefExt = _T("txt");
		//***************************************
		cf.lStructSize = sizeof(CHOOSEFONT);
	    cf.Flags = CF_EFFECTS | CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS;
	    cf.hwndOwner = hWnd;
	    cf.lpLogFont = &lf;
	    //***************************************
		hWndToolBar = CreateToolbarEx(hWnd, WS_CHILD|WS_VISIBLE|CCS_TOP,1,0,
       HINST_COMMCTRL,IDB_STD_SMALL_COLOR,tbb,3,0,0,0,0,sizeof(TBBUTTON));
        break;
	case WM_SIZE:
	   SendMessage(hWndToolBar, TB_AUTOSIZE, 0, 0);
	   GetWindowRect(hWndToolBar, &rt);
	   size_Toolbar = rt.bottom - rt.top;
	   sx = LOWORD(lParam);
	   sy = HIWORD(lParam);
	   k = n - (sy-size_Toolbar)/size.cy;
	   if (k > 0) COUNT = k; else COUNT = iVscrollPos = 0;
	   SetScrollRange(hWnd, SB_VERT, 0, COUNT, FALSE);
	   SetScrollPos (hWnd, SB_VERT, iVscrollPos, TRUE);
	   k = length - sx/size.cx;
	   if (k > 0) MAX_WIDTH = k; else MAX_WIDTH = iHscrollPos = 0;
	   SetScrollRange(hWnd, SB_HORZ, 0, MAX_WIDTH, FALSE);
	   SetScrollPos (hWnd, SB_HORZ, iHscrollPos, TRUE);
	   break;
	case WM_VSCROLL : //вертикальная прокрутка
	   switch (LOWORD(wParam))
	   {
	        case SB_LINEUP   : iVscrollPos--; break; 
			case SB_LINEDOWN : iVscrollPos++; break;
			case SB_PAGEUP   : iVscrollPos -= sy / size.cy; break;
			case SB_PAGEDOWN : iVscrollPos += sy / size.cy; break;
			case SB_THUMBTRACK : iVscrollPos = HIWORD(wParam); break;
	   }
	   iVscrollPos = max(0, min(iVscrollPos, COUNT));
	   if (iVscrollPos != GetScrollPos(hWnd, SB_VERT))
	   {
		   SetScrollPos (hWnd, SB_VERT, iVscrollPos, TRUE);
		   InvalidateRect(hWnd, NULL, TRUE);
	   }
       break;
	case WM_MOUSEWHEEL: //колесо мыши
		iVscrollPos -= (short)HIWORD(wParam)/WHEEL_DELTA;
		iVscrollPos = max(0, min(iVscrollPos, COUNT));
		SetScrollPos(hWnd, SB_VERT, iVscrollPos, TRUE);
		InvalidateRect(hWnd, NULL, TRUE);
        break;
	case WM_HSCROLL : //горизонтальная прокрутка
	   switch (LOWORD(wParam))
	   {
	   case SB_LINEUP   : iHscrollPos--; break;
	   case SB_LINEDOWN : iHscrollPos++; break;
	   case SB_PAGEUP   : iHscrollPos -= 8; break;
       case SB_PAGEDOWN : iHscrollPos += 8; break;
	   case SB_THUMBTRACK : iHscrollPos = HIWORD(wParam); break;
	   }
	   iHscrollPos = max(0, min(iHscrollPos, MAX_WIDTH));
	   if (iHscrollPos != GetScrollPos(hWnd, SB_HORZ))
	   {
		   SetScrollPos (hWnd, SB_HORZ, iHscrollPos, TRUE);
		   InvalidateRect(hWnd, NULL, TRUE);
	   }
       break;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		  case ID_32777:
			  dos = true;
			  break;
		  case ID_32778:
			  dos = false;
			  break;
		  case ID_FILE_NEW :
			if (!v.empty()) vector<string>().swap(v);
			n = length = 0;
			SendMessage(hWnd, WM_SIZE, 0, sy << 16 | sx);
			InvalidateRect(hWnd, NULL, TRUE);
			break;
		  case ID_FILE_OPEN :
			  file.lpstrTitle = _T("Открыть файл для чтения");
			  file.Flags = OFN_HIDEREADONLY;
			  if (!GetOpenFileName(&file)) return 1;
			  in.open(name);
			  while (getline(in,st))
			  {
				  if (dos)
				  {
					  in_str = st.data();
					  out_str = new CHAR [st.length() + 1];
					  OemToChar(in_str,out_str); // 866 -> 1251
					  st = out_str;
					  delete [] out_str;
				  }
				  if (length < st.length()) length = st.length();
                  v.push_back(st);
			  }
			  in.close();
			  n = v.size();
			  SendMessage(hWnd, WM_SIZE, 0, sy << 16 | sx);
			  InvalidateRect(hWnd, NULL, TRUE);
			  break;
		  case ID_FILE_SAVE :
			  file.lpstrTitle = _T("Открыть файл для записи");
			  file.Flags = OFN_NOTESTFILECREATE;
			  if (!GetSaveFileName(&file)) return 1;
			  out.open(name);
			  for (it = v.begin(); it != v.end(); ++it) 
			  {
				  if (dos)
				  {
					  in_str = (*it).data(); 
					  out_str = new CHAR [(*it).length() + 1];
					  CharToOem(in_str,out_str); // 1251 -> 866
					  out << out_str << '\n';
					  delete [] out_str;
				  }
				  else out << *it << '\n';
			  }
			  out.close();
			  break;
		   case ID_FONT :
			  if(ChooseFont(&cf))
			  {
				  if (hfont) DeleteObject(hfont);
				  hfont = CreateFontIndirect(&lf);
				  hdc = GetDC(hWnd);
				  SelectObject(hdc, hfont);
				  GetTextMetrics(hdc, &tm);
				  size.cx = tm.tmAveCharWidth;
				  size.cy = tm.tmHeight + tm.tmExternalLeading;
				  ReleaseDC(hWnd, hdc);
				  SendMessage(hWnd, WM_SIZE, 0, sy << 16 | sx);
				  InvalidateRect(hWnd, NULL, TRUE);
			   }
			  break;
		  case IDM_EXIT: DestroyWindow(hWnd); break;
          default: return DefWindowProc(hWnd, message, wParam, lParam);
	      }
		  break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		if (hfont)
		{ SelectObject(hdc, hfont);
		SetTextColor(hdc, cf.rgbColors); //цвет текста
		}
		for (y=size_Toolbar,it=v.begin()+iVscrollPos;it!=v.end()&&y<sy;++it,y+=size.cy)
			if (iHscrollPos < it->length())
			   TabbedTextOutA(hdc,0,y,it->data()+iHscrollPos,it->length()-
			     iHscrollPos,0,NULL,0);
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:
	   if (hfont) DeleteObject(hfont);
	   PostQuitMessage(0);
	   break;
	default: return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}
RAFA91 вне форума
Старый 03.04.2016, 16:30   #136
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
бред.

проверяй .
И? Как ваш код противоречит моим словам?
p51x вне форума
Старый 03.04.2016, 16:36   #137
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Вы там или запятую пропустили или опечатались.

вы сказали что ifstream
Цитата:
Не работает
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 03.04.2016, 16:42   #138
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

И? Вы готовы показать функцию из набора винапи, которая будет работать с объектом из fstream?
p51x вне форума
Старый 03.04.2016, 16:46   #139
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

эммм....тут видимо немного недопонимание вышло.
ТС имел в виду просто что прочесть файл через ifstream(то есть просто применение), а не передать его куда-то.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 03.04.2016, 16:49   #140
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
И? Как ваш код противоречит моим словам?
Изображения
Тип файла: jpg Безымянный.jpg (104.2 Кб, 124 просмотров)
RAFA91 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мои фантазии про С++11 RAFA91 Общие вопросы C/C++ 265 18.07.2016 15:15
Проблема кодировок Anarios JavaScript, Ajax 2 25.12.2011 11:06
Стандартные средства = бесконечный полет фантазии. Alex Cones Софт 2 27.07.2009 17:10
Проблема кодировок!!! chekanoff Общие вопросы Delphi 4 04.12.2007 00:03