最近做一個項目要獲得ScrollBar的位置,因為.net找不到此類功能,只好用MFC中的函數了,GetScrollPos只返回listview頂部的位置,此時我找到了GetScrollInfo,覺得此函甚好。不成想從網上找到示例代碼後,函數執行成功了,但是返回了false,查下msdn,說是沒取到 ...
最近做一個項目要獲得ScrollBar的位置,因為.net找不到此類功能,只好用MFC中的函數了,GetScrollPos只返回listview頂部的位置,此時我找到了GetScrollInfo,覺得此函甚好。不成想從網上找到示例代碼後,函數執行成功了,但是返回了false,查下msdn,說是沒取到信息,然後我又用GetLastError想查看下錯誤信息,但是返回0,就是沒有錯誤,這就納悶了。
後來又在網上不停的找,找到pinvoke這個網站,這有比較正規的調用例子http://www.pinvoke.net/default.aspx/user32.getscrollinfo,反覆比對後,我發現聲明結構體時不能用class,比如這段:
public struct SCROLLINFO
{
public uint cbSize;
public uint fMask;
public int nMin;
public int nMax;
public uint nPage;
public int nPos;
public int nTrackPos;
}
我的錯誤就是這段結構體聲明用的class而不是struct,改過以後GetScrollInfo返回true,而且結構體引用也有值了,在此分享給大家,希望對大家有用。