Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
LocalAlloc это же только для совместимости с 16bit 21.10.02 15:43 Число просмотров: 1143
Автор: beetle <beetle> Статус: Member
|
|
<programming>
|
[Win32] clipboard 20.10.02 18:57
Автор: beetle <beetle> Статус: Member
|
есть такой код для размещения строкового массива в clipboard:
char* buf = new char[100];
if(this->OpenClipboard() == NULL) {
ERR
return;
}
::EmptyClipboard();
if(::SetClipboardData(CF_TEXT,(void*) buf) == NULL) {
DWORD res = GetLastError();
return;
}
при вызове SetClipboardData возвращается NULL , а GetLastError возвращает следующий код:
ERROR_INVALID_HANDLE
что не верно???????
|
|
Юзай LocalAlloc как в примере 21.10.02 08:26
Автор: Killer{R} <Dmitry> Статус: Elderman
|
oc=LocalAlloc(0,sz);
//.....
OpenClipboard(0);
SetClipboardData(CF_TEXT,oc);
CloseClipboard();
|
| |
LocalAlloc это же только для совместимости с 16bit 21.10.02 15:43
Автор: beetle <beetle> Статус: Member
|
|
| | |
Зато работает 21.10.02 16:09
Автор: Killer{R} <Dmitry> Статус: Elderman
|
Не знаю не знаю. В msdn написано что If the hMem parameter identifies a memory object, the object must have been allocated using the GlobalAlloc function with the GMEM_MOVEABLE flag. Но у меня так не работало почему-то. А с localalloc все ок.
|
| | | |
Зато работает 21.10.02 17:27
Автор: IgorR <Igor Razin> Статус: Member
|
> Не знаю не знаю. В msdn написано что If the hMem parameter > identifies a memory object, the object must have been > allocated using the GlobalAlloc function with the > GMEM_MOVEABLE flag. Но у меня так не работало почему-то. А > с localalloc все ок.
TCHAR szStr[] = TEXT("Test");
OpenClipboard( NULL );
EmptyClipboard();
HGLOBAL hClipData = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof( szStr ) + 1 );
PTSTR pClipData = (PTSTR) GlobalLock( hClipData );
_tcscpy( pClipData, szStr );
#ifdef UNICODE
SetClipboardData( CF_UNICODETEXT, hClipData );
#else
SetClipboardData( CF_TEXT, hClipData );
#endif
CloseClipboard();
GlobalFree( hClipData );
|
|
|