Vista a introduit une nouvelle API pour afficher un texte dans le contrôle Affichage de la liste lorsqu'il ne contient aucun élément. Comme les états de la bibliothèque MSDN, je devrais traiter la notification LVN_GETEMPTYMARKUP
.ListView Texte de balisage vide
Dans le contrôle ListView
hérité de la méthode WndProc
est outrepassée:
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);
}
}
Cependant, cela ne fonctionne pas (même si elle ne jette pas une exception). En fait, je ne reçois jamais nmhdr.code
est égal à -187. Des idées?
Pourriez-vous publier un lien vers la page sur MSDN? – configurator
http://msdn.microsoft.com/fr-fr/magazine/cc163384.aspx –