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

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Субклассирование ListView32

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


Дата: Сен 9, 2003 17:49:43

Создаю в клиентской области окна listview с субклассированием.
Foo proc
	local wc		:WNDCLASSEX
	invoke GetClassInfoEx, 0, addr ListViewClassName, addr wc
	;mov esi, eax
	mov wc.cbSize, sizeof(WNDCLASSEX)
	m2m wc.hInstance, hInstance
	mov wc.style, CS_DBLCLKS
	mov wc.hbrBackground, COLOR_BACKGROUND + COLOR_WINDOW
	m2m m_OldListViewProc, wc.lpfnWndProc
	mov wc.lpfnWndProc,	offset Client_WndProc
	lea eax, ClientClass ; здесь новое имя класса
	mov wc.lpszClassName, eax
	invoke RegisterClassEx, ADDR wc
	xor ebx, ebx
	stc
	rcr ebx, 1
	invoke CreateWindowEx, WS_EX_CLIENTEDGE,\
			eax,0, WS_CHILD + WS_VISIBLE + WS_CLIPSIBLINGS + WS_CLIPCHILDREN+9,\
		ebx,ebx,ebx,ebx,m_hWnd,0,hInstance,0
		test eax, eax
	jz @@end
	mov m_hWndClient, eax
@@end:
	ret
Foo endp

Код был самым наглым образом позаимствован (с несущественными изменениями) из кода WTL приложения. После создания окна должно появиться собсно сам ListView32 (под другим именем) и SysHeader32. Только у меня SysHeader32 не хочет появляться. Таким же макаром ToolBar обрабатывал - все ОК (но там детей у него не было :)) Если я подставляю атом, полученный после GetClassInfoEx - все ОК, субклассировать правда потом SetWindowLong(Ptr) прийдется...
Просто интересно - где у меня грабли?


Дата: Сен 10, 2003 12:49:29

Проблема решена - забыл добавить ICC_LISTVIEW_CLASSES для InitCommonControlsEx :)


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