现在已经准确的得到了我的电脑窗口的hwnd,只差如何发送消息改变视图模式了。
搜索了下网路上的资料,使用:SendMessage hWindow, WM_COMMAND, List, 0后没有任何反应...(意料之中)
再次搜索了网上,找到几篇有用的资料,无奈不会VC。。。看不懂。。。高手们请帮忙啦!非常感谢!
参考资料:
http://www.vckbase.com/document/viewdoc/?id=1023#cppqa1
当然,在 Windows 中总是有办法的。当我第一次看你的问题时,我想那很容易。只要在 WM_INITDIALOG 消息处理函数中获取列表视图
http://203.208.37.104/search?q=cache:LenWPrdBvWgJ:www.codeproject.com/KB/dialog/FileDialogExtender.aspx+vb+0x702b&hl=zh-CN&ct=clnk&cd=2&gl=cn&st_usg=ALhdy2_KMfeD8LvZ43LaJjcrIQd5ZMnUSQ
老外的FileDialogExtender
6 个解决方案
#1
去网上查查LISTVIEW 里消息的常数值
#2
查了。没有需要的资料。。。。或许是我搜索的不到位?
#3
刚才我试了一下.
用C#里面伴水的方法,我改为VB后试了一下.
效果不理想.
只是 list 属性可以.其它的都不理想.
用C#里面伴水的方法,我改为VB后试了一下.
效果不理想.
只是 list 属性可以.其它的都不理想.
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private const GWL_STYLE = -16
Private const LVS_ICON = 0
Private const LVS_REPORT = 1
Private const LVS_SMALLICON = 2
Private const LVS_LIST = 3
Private const LVS_TYPEMASK = 3
private Styles as long
Private Sub Command1_Click()
styles = GetWindowLong(handle, GWL_STYLE) 'handle 是 我的电脑 里面 那个 List 的句柄,不是窗口的句柄
Styles = styles and LVS_TYPEMASK
styles = styles or LVS_ICON
SetWindowLong handle, GWL_STYLE, styles
End Sub
#4
所有图标消失
#5
你的hWindow是什么窗口的句柄,list的值又是什么?
通常而言,应该这样:
hWindow=FindWindow(vbNullString, "我的电脑")
SendMessage hWindow, WM_COMMAND, &H702B, 0'List
Command ID (WPARAM) List View Mode
&H7029 Icons
&H702B List
&H702C Details
&H702D Thumbnails
&H702E Tiles
#6
接到你的求助,msdn有例子,参照一下呢
Styles = styles and LVS_TYPEMASK
styles = styles or LVS_ICON
这样不可以的。
应该按位& 或者 取反
Styles = styles and LVS_TYPEMASK
styles = styles or LVS_ICON
这样不可以的。
应该按位& 或者 取反
#1
去网上查查LISTVIEW 里消息的常数值
#2
查了。没有需要的资料。。。。或许是我搜索的不到位?
#3
刚才我试了一下.
用C#里面伴水的方法,我改为VB后试了一下.
效果不理想.
只是 list 属性可以.其它的都不理想.
用C#里面伴水的方法,我改为VB后试了一下.
效果不理想.
只是 list 属性可以.其它的都不理想.
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private const GWL_STYLE = -16
Private const LVS_ICON = 0
Private const LVS_REPORT = 1
Private const LVS_SMALLICON = 2
Private const LVS_LIST = 3
Private const LVS_TYPEMASK = 3
private Styles as long
Private Sub Command1_Click()
styles = GetWindowLong(handle, GWL_STYLE) 'handle 是 我的电脑 里面 那个 List 的句柄,不是窗口的句柄
Styles = styles and LVS_TYPEMASK
styles = styles or LVS_ICON
SetWindowLong handle, GWL_STYLE, styles
End Sub
#4
所有图标消失
#5
你的hWindow是什么窗口的句柄,list的值又是什么?
通常而言,应该这样:
hWindow=FindWindow(vbNullString, "我的电脑")
SendMessage hWindow, WM_COMMAND, &H702B, 0'List
Command ID (WPARAM) List View Mode
&H7029 Icons
&H702B List
&H702C Details
&H702D Thumbnails
&H702E Tiles
#6
接到你的求助,msdn有例子,参照一下呢
Styles = styles and LVS_TYPEMASK
styles = styles or LVS_ICON
这样不可以的。
应该按位& 或者 取反
Styles = styles and LVS_TYPEMASK
styles = styles or LVS_ICON
这样不可以的。
应该按位& 或者 取反