Как получить текст из List Control
Вопрос:
Как скопировать все данные List Control (в данном
случае все они CStrings) в clipboard? В моём приложении
необходимо, чтобы все данные из List Control можно было
скопировать в clipboard, чтобы потом пользователь мог
вставить их куда-нибудь ещё.
Ответ:
Следующий код делает то, что нужно:
CString clipboard_data ;
int rows ;
int columns ;
CString item ;
rows = m_ListControl.GetItemCount() ;
columns = m_ListControl.GetHeaderCtrl()->GetItemCount() ;
for (int j = 0 ; j < rows ; j++)
{
for (k = 0 ; k < columns ; k++)
{
if (k > 0)
clipboard_data += "\t" ; // табуляция
item = m_ListControl.GetItemText(j, k) ;
clipboard_data += item ;
}
clipboard_data += "\r\n" ; // конец строки
}
// Теперь данные можно скопировать в буфер обмена
if (OpenClipboard())
{
HGLOBAL handle ;
char *pntr ;
handle = ::GlobalAlloc(GHND, clipboard_data.GetLength() + 1) ;
pntr = (char *)::GlobalLock(handle) ;
strcpy(pntr, clipboard_data) ;
::GlobalUnlock(handle) ;
EmptyClipboard() ;
SetClipboardData(CF_TEXT, handle);
CloseClipboard();
}
|