Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 629 • Страница 2 из 32<  1  2  3  4  5 ... 32  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
Babrick Уже 2 раза тему подымал, где здесь МФТИ. И тишина.... Тем более посмотри на первый пост

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо



Партнер
 

Member
Статус: Не в сети
Регистрация: 04.09.2004
Откуда: R#4
не компилится прога
плюется на вызов макросов GET_X_LPARAM и Y :(

E:>"E:DevelopMicrosoft Visual StudioVC98BinVCVARS32.BAT"
Setting environment for using Microsoft Visual C++ tools.
E:>"E:DevelopMicrosoft Visual StudioVC98BinCL.EXE"
F:GatorCPPmouse_messmouse1.cpp user32.lib gdi32.lib
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

mouse1.cpp
F:GatorCPPmouse_messmouse1.cpp(71) : error C2065: 'GET_X_LPARAM' : undeclared identifier
F:GatorCPPmouse_messmouse1.cpp(72) : error C2065: 'GET_Y_LPARAM' : undeclared identifier

Добавлено спустя 15 минут, 45 секунд:
поменял их на LOWORD(lParam) и HIWORD вроде работает но коечо другое не пашет
и все же чего ж с макросами не получаецца?

_________________
всё


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
добавь вот это в текст программы
Код:
#define    GET_X_LPARAM(lp)   ((int)(short)LOWORD(lp))   
#define    GET_Y_LPARAM(lp)   ((int)(short)HIWORD(lp))

или так:
Код:
#include <Windowsx.h>// GET_X_LPARAM and GET_Y_LPARAM defined there.


 

Member
Статус: Не в сети
Регистрация: 04.09.2004
Откуда: R#4
mein
спасибо с Windowsx.h проканало
я то прбовал писать windowsx.h , но писал с маленькой буквы (ох уж этот Си... :))

_________________
всё


 

Возможно ли формирование документа word или шаблона word через visual C++?????


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Народ помогите. Пытаюсь скопировать в буфер обмена строчку с рускими буквами
Код:
void CNew_pingDlg::CopyTextToClipboard(CString test)
{
   if (AfxGetMainWnd()->OpenClipboard())// если буфер обмена удалось открыть то
   {
      if (EmptyClipboard())   // Очистить буфер
      {
         HGLOBAL clipbuffer;
         char * buffer;   // указатель на данные
         clipbuffer = GlobalAlloc(GMEM_DDESHARE, test.GetLength()+1);// выделить память
         buffer = (char*)GlobalLock(clipbuffer);   // блокировать буфер
         strcpy(buffer, LPCSTR(test));   // копировать в него данные
         GlobalUnlock(clipbuffer);   // разблокировать
         SetClipboardData(CF_TEXT,clipbuffer);   // установить данные и тип
         if (!CloseClipboard()) AfxMessageBox("Error Close");// закрыть
      } else AfxMessageBox("Error Empty");
   } else AfxMessageBox("Error Open");
}

Вставляется полная лажа. С англ. всё впорядке. Где грабли?

зы: Код не мой - нашёл гдето.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
mein хм, юзать юникод строки, чтоли.

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Daemon
Да дело наверное точно в этом уникоде: Если вставить в нотпад и попытатся сохранить (в ANSI по умолчанию), то блокнот матернётся и предложит сохранить в юникоде. При этом при последующих открытиях показывает всё равно лажу. Листер от тотал командера тоже видит лажу. А вот штирлиц (программа - распознователь кодировок) сразу открывает и говорит, что показал без преобразований. Наскока я понял нужно наоборот как-то избавится от этого юникода. Но как ...


 

Daemon
Наверно проблемы с кодировкой (VS7.1).
Я из фара в буфер копирую (можно как Win так и Дос кодировку) и всё работает нормально. Наоборот тоже работает (проверил).


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Blackmouse
Ну почему же с кодировкой? Вроде пишу прогу под маздайным редактором (VC7.1) , соответсвенно в CP1251.
Код:
CString zzz("Фигня какая-то получается");
CopyTextToClipboard(zzz);

А получается всё равно фигня. Хотя заметил, что если вставить в "умные" редакторы (AkelPad, DosNavigator32), то они нормально воспринимают эту ботву, а всякие блокноты, ворды и прочая хрень тупят.


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
mein да потому что там может быть и cp1251, cp866 и utf-16

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Вот наконец в войне со злобным монстром "Программирование" один фланг прорвал :) . Немного терпения и яндекс родили такую функцию:
Код:
void CNew_pingDlg::CopyTextToClipboard(CString test)
{
   if (AfxGetMainWnd()->OpenClipboard())// если буфер обмена удалось открыть то
   {
      if (EmptyClipboard())   // Очистить буфер
      {
         HGLOBAL clipbuffer;
         char * buffer;   // указатель на данные
         int size = (test.GetLength())*sizeof(wchar_t) + 2;
         clipbuffer = GlobalAlloc(GMEM_DDESHARE, size);// выделить память
         buffer = (char*)GlobalLock(clipbuffer);   // блокировать буфер

         MultiByteToWideChar(CP_ACP, 0, (LPCSTR)test, test.GetLength(), (wchar_t*) buffer, size);

         GlobalUnlock(clipbuffer);   // разблокировать
         SetClipboardData(CF_UNICODETEXT,clipbuffer);   // установить данные и тип
         if (!CloseClipboard()) AfxMessageBox("Error Close");// закрыть
      } else AfxMessageBox("Error Empty");
   } else AfxMessageBox("Error Open");
}

Нужно было конвертить в юникод, а потом в буфер. Правда ещё не знаю как это себя поведёт в операционке незнакомой с юникодом.
Был ещё один вариант: переключать программно раскладку клавиатуры на русский, но это геморой, хотя работало.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
mein ну вот :-)
Цитата:
Правда ещё не знаю как это себя поведёт в операционке незнакомой с юникодом.
Юникод - стандарт, по этому я считаю беспокоится не стоит.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
mein писал(а):
Нужно было конвертить в юникод, а потом в буфер. Правда ещё не знаю как это себя поведёт в операционке незнакомой с юникодом.

А такие есть?

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Вот тока что проверил на Вынь98 - не работает. Обнуляет буфер и ничего не копирует в него. По ходу надо определить версию винды и если меньше версии ххх (предположительно все NT уже дружат с юникодом), то просто использовать CF_TEXT.

Добавлено спустя 1 час, 36 минут, 27 секунд:
Значит битва продолжается :) . Сделал определение версии и если это NT то копируем по второму способу (CF_UNICODETEXT), иначе по первому (CF_TEXT). И можно было почти радоватся, т.к. работало и под 98 и под XP, но ... :D блин, если вставлять в едитбоксы сделанные в этом же VC71(например в этой же программе или любой другой) то вставляются вопросы. При этом любые другие приложения нормально всё воспринимают. Нашёл в настройках проекта "Use Unicode Character Set" (по умолчанию "Use Multi-Byte Character Set"). Если прогрмма скомпилена под юникод то всё нормально вставляется, но моя прога не компилится (начинают конфликтовать CString и char* ). Но наверное придётся всё же переделывать, пока не скомпилится. Типа надо соответсвовать времени :) .


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
mein Используй TCHAR, а на nonunicode забей

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
nickyoz
Т.е. предлагаешь забить на всех счастливых ( :D ) обладателей старых маздаев? Наскока я понимаю:
Код:
TCHAR str[100];
strcpy(str,"Хэлло Ворлд");

это уже будет юникод сразу. Или нет?


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
нет конечно. TCHAR объявлен как unsigned short. А функции strxxx работают с char. Для работы с UNICODE строками используются wcsxxx
т.е. wcscpy(str,L"Хэлло ворлд");

_________________
Цель жизни - d20 по жизни...


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
Avaddon И строка unicode по моему пишется как S"AAAAAA" или через макрос TEXT("AAA") и _T("AAAA")
Все это есть в MSDN

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
nickyoz, спасибо что поправил. Опечатка. Естественно S, а не L.
да, макрос TEXT или _T тоже пойдет если для проекта стоит Unicode

_________________
Цель жизни - d20 по жизни...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 629 • Страница 2 из 32<  1  2  3  4  5 ... 32  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan