日期:2014-05-17  浏览次数:21049 次

vb写的这两句 用c#怎样 写
int nCurSel = ::SendMessage(g_hTargetList, LVM_GETNEXTITEM, -1, MAKELPARAM(LVNI_SELECTED, 0));  
  memset(&lvi, 0, sizeof(&lvi));

------解决方案--------------------
楼主根本就没弄清楚vb,vc,c#代码的区别。
这本身就是vc的代码。而不是vb的。现在还有人在说vb.
我已经说过了。

一楼bdmh给的。memset是内存分配,你要对lvi处理一下LVM_GETNEXTITEM和LVNI_SELECTED应该是声明的const常量
这个不正确。
memset不是分配内存的。这只是等于清零。
因为c#本身内部所有的东东分配的内存都是做过这个处理的。所以这句根本不需要。

对于[::]这个符号是vc里调用全局API的。

新建一个vc项目把int nCurSel = ::SendMessage(g_hTargetList, LVM_GETNEXTITEM, -1, MAKELPARAM(LVNI_SELECTED, 0)); 
这个代码贴到一个函数里。LVNI_SELECTED点右键转向定义。可以看到非选中的标识。替换一个这个函数就可以了。