· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как определить параметры (например текст) элемента

Посл.отвђт Сообщенiе


Дата: Авг 27, 2003 17:53:41 · Поправил: Pasha 111

Ничего не понимаю! Уже 3 дня сижу над этой проблемой. Для определения текста элемента TreeView'а делаю так:
// Функция определяет текст элемента
BOOL GetItemText(HWND hWnd, HTREEITEM Item, char *buf, int maxbuf)
{
	// Параметры для определения
	TVITEM ItemParam;
	memset(&ItemParam, 0, sizeof(TVITEM));
	ItemParam.mask = TVIF_TEXT; // Пробовал также TVIF_TEXT | TVIF_HANDLE;
	ItemParam.cchTextMax = maxbuf;
	ItemParam.pszText = buf;
	ItemParam.hItem = Item;

	// Определяем параметры
	return (BOOL)SendMessage(hWnd, TVM_GETITEM, (WPARAM)0, (LPARAM)&ItemParam);
}


Что не так?


Дата: Авг 28, 2003 04:54:28

IMHO, всё OK и в самой ф-ции ошибок нет. Отладчик и в бой!
Возможно, всё дело в "HTREEITEM Item". hWnd -- точно хендл TreeView?

ЗЫ: memset() можно убрать.


Дата: Авг 28, 2003 22:24:52

Quantum
IMHO, всё OK и в самой ф-ции ошибок нет. Отладчик и в бой!
Отладчик пишет все OK. Функция SendMessage() возвращает 0 (что неправильно). Значит дело именно в том, что делаю.

Возможно, всё дело в "HTREEITEM Item".
Нет, я пишу так:
// Добавляю итем
HTREEITEM Item = (HTREEITEM)SendMessage(...);
// Определяю текст
char buf[1024];
memset(buf, 0, sizeof(buf));
if(!GetItemText(hWnd, Item, buf, sizeof(buf)-1))
{
 MessageBox(..., "ОБЛОМ :(", ...);
}


ЗЫ: memset() можно убрать.
Я всегда пишу memset(). После 7милетнего опыта программирования на VB привык всегда иметь дело с инициализированными переменными.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.076