在VB下如何使用CreateStruct结构
我想要在WM_CREATE消息中修改CreateStruct结构的属性
解决方案 »
- 自动分开带空格的货号
- 调用MDI子窗体的问题?
- 如何知道当前有多少终端(用户)连接到SQL
- 我用两个image 交替显示,闪烁的很厉害,怎么办?
- 一个列表框的问题
- 困扰我的UDP通信问题:程序启动后,两分钟不做任何东作后,发送1894字节的数据,发不出去了.
- 将很长的字符串(含中文等各种字符)加密存到ACCESS数据库字段,还要对此字段进行模糊查询,还要解密显示,近10W条数据,请问如何实现???谢谢!!!
- (千万别回复,以便删除,不看遗憾)费尔个人防火墙2.0及源代码,可以杀未知病毒的费尔托斯特:http://www.xfilt.com
- 用vb 打开excel怎么刚打开,立即就关闭了。
- 第一次自己掏钱买M$的东东,拿回家,结果发现盘是坏的,所以我以后还是买D版的算了
- 各位大侠帮帮忙,VB6。0在INTERNET上如何存取SQL SERVER 2000的数据
- 请朋友们提供一个打包VB开发的应用程序的打包工具
lpCreateParams As Long
hInstance As Long
hMenu As Long
hWndParent As Long
cy As Long
cx As Long
y As Long
x As Long
style As Long
lpszName As String
lpszClass As String
ExStyle As Long
End Type
在WM_CREATE消息中捕捉到之后
C中好像是这样使用:
(CreatStruct *)lParam->cx = 330但我要在VB中如何修改它
dim mSturce as CREATESTRUCTmSturce.cx=330
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Public Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
dim mSturce as CREATESTRUCT
Select Case uMsg
'...
Case WM_CREATE
If lParam <> 0 Then
CopyMemory mSturce, ByVal lParam, Len(cr)
Debug.Print mSturce.cx
End If
'...
End Select
'...
End Function这里要注意一点:CREATESTRUCT结构中的lpszName与lpszClass是两个指向变长字符串的指针,而VB不能像C一样识别以null结尾的字符串,我试过若串中含有中文时,会引起非法操作。
所以建议将lpszName与lpszClass声明改为Long 就没事了。
不是很理解,请详细给我解释一下,谢谢
声明成Long,我们就是告诉VB:“对字符串别自已乱处理了,把地址给我,我自己转换!”按址取出LPSTR字符串,并不难,方法很多,lstrcpy就可以,接上面例子我再说一种方法:lpszName与lpszClass声明改为LongPrivate Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long Dim a() As Byte,s As String
ReDim a(lstrlen(cr.lpszName) - 1)
CopyMemory a(0), ByVal cr.lpszName, lstrlen(cr.lpszName)
s = StrConv(a, vbUnicode)
Debug.Print s