|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 14, 2004 18:45:51 Загоняю русские буквы в буфер обмена через SetClipboardData,CF_TEXT Но при вставке этого текста из буфера в Блокнот получаються только зяблики . Как сделать кириллицу доступной для Блокнота и др. программ ? |
|
|
Дата: Мар 14, 2004 21:13:56 Ну это такой глюк имеет место только под NT. |
|
|
Дата: Мар 15, 2004 00:43:38 А кириллица в юникоде? |
|
|
Дата: Мар 15, 2004 06:45:20 · Поправил: q_q bogrus Дополнительно к CF_TEXT надо CF_LOCALE. #include <windows.h>
#include <stdio.h>
int main(void)
{
HGLOBAL h = NULL;
DWORD *p = NULL;
char s[] = "проверка";
if (0 != OpenClipboard(NULL))
{
EmptyClipboard();
if (NULL != (h = GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE, sizeof(DWORD))))
{
if (NULL != (p = (DWORD *) GlobalLock(h)))
{
*p = 0x0419;
GlobalUnlock(h);
if (NULL != SetClipboardData(CF_LOCALE, h))
{
DWORD l = lstrlen(s);
if (NULL != (h = GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE, l + 1)))
{
if (NULL != (p = (DWORD *) GlobalLock(h)))
{
lstrcpy((PSTR)p, s);
GlobalUnlock(h);
if (NULL != SetClipboardData(CF_TEXT, h))
printf("ok\n");
}
}
}
}
}
CloseClipboard();
}
return 0;
}ps разумеется текст должен быть ansi. |
|
|
Дата: Мар 15, 2004 14:16:26 · Поправил: bogrus Asterix Ok , будем знать :) Quantum В ANSI (CF_TEXT) , но UNICODE (CF_UNICODETEXT) тоже не помешает предусмотреть q_q Пасиба , работает |
|
|
Дата: Мар 15, 2004 21:26:22 GMEM_MOVEABLE + GMEM_DDESHARE так привыкать делать не надо !!! Надо вот так: GMEM_MOVEABLE | GMEM_DDESHARE |
|
|
Дата: Мар 15, 2004 21:41:28 Peshuha Надо вот так: GMEM_MOVEABLE | GMEM_DDESHARE А что , в масме есть разница между [+ и |] ? Код компилятор выдаёт тот-же . Или есть другие причины ? |
|
|
Дата: Мар 15, 2004 21:44:59 · Поправил: Asterix Хмм.., я в масме использую вместо "+" or |
|
|
Дата: Мар 16, 2004 00:38:44 bogrus А что , в масме есть разница между [+ и |] ? Нет, но предыдущий код был на C++. |
|
|
Дата: Мар 16, 2004 01:09:23 А вот и не на С++, а на С! |
|
|
Дата: Мар 16, 2004 04:34:08 · Поправил: q_q bogrus Теоретически Peshuha прав. Разница в том, что в результате плюса может возникнуть перенос. Afaik обычно константы - битовые, поэтому практически плюс и или эквивалентны. |
|
|
Дата: Мар 16, 2004 05:13:31 volodya Ну, декларации локальных переменных посреди функции, вроде "DWORD l = lstrlen(s);" не соответствуют стандарту ANSI C :-))) |
|
|
Дата: Мар 16, 2004 10:49:38 · Поправил: q_q Quantum декларации локальных переменных посреди функции ... не соответствуют стандарту ANSI C Не плохо бы указать ссылку на редакцию. Например, INTERNATIONAL STANDARD ISO/IEC 9899 Second edition 1999-12-01 Programming languages — C (1'411'606): ... 6.2.1 Scopes of identifiers ... 2. For each different entity that an identifier designates, the identifier is visible (i.e., can be used) only within a region of program text called its scope. Different entities designated by the same identifier either have different scopes, or are in different name spaces. There are four kinds of scopes: function, file, block, and function prototype. (A function prototype is a declaration of a function that declares the types of its parameters.) ... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065 |