Vista представила новый API для отображения текста в элементе управления представлением списка, когда у него нет никаких элементов. Как заявляет библиотека MSDN, я должен обработать уведомление LVN_GETEMPTYMARKUP
.ListView Empty Markup Text
В унаследованной ListView
управления метод WndProc
является перекрываться:
protected override void WndProc(ref Message m) {
try {
if(m.Msg == 78 /* WM_NOTIFY */) {
var nmhdr = (NMHDR)Marshal.PtrToStructure(m.LParam, typeof(NMHDR));
if(nmhdr.code == -187 /* LVN_GETEMPTYMARKUP */) {
var nmlvemptymarkup =
(NMLVEMPTYMARKUP)Marshal.PtrToStructure(m.LParam, typeof(NMLVEMPTYMARKUP));
nmlvemptymarkup.szMarkup = "The ListView is empty.";
m.Result = (IntPtr)1;
}
}
} finally {
base.WndProc(ref m);
}
}
Тем не менее, он не работает (хотя это не выбрасывает любое исключение). На самом деле я никогда не получаю nmhdr.code
равно -187. Есть идеи?
Не могли бы вы разместить ссылку на страницу на MSDN? – configurator 2008-11-13 15:52:05
http://msdn.microsoft.com/en-us/magazine/cc163384.aspx – 2008-11-13 16:30:42