用vb建立自已的Unicode控件 - VB / 基础类
vb自带的控件是Ansi控件。
用自定义控件CreateWindowExW,然后用SetWindowLongW 就可以了。
之前看msdn 或其他书上说用CreateWindowExW就行了,可自已一直不成功,不晓得问题出在那里。
今天突然想到把 设置子类化 过程 即SetWindowLong 改成 用SetWindowLongW ,成功了
没想到设置子类化窗口也要用版 SetWindowLongW 不然创建的控件会又变成asnsi版!!
大家有没有这方面的交流一下。
沙发自已占
这样处理wm_char消息简单多了^_^
反正全部使用W系列API就行了。。。
今天把vbAccelerator 的子类化Dll给改成了支持Unicode, 并用改的子类化dll把它的ComboBoxEx和OwnerDrawComboList控件也改成了支持汉字自动完成(原版只持英文的自动完成)。并且把OwnerDrawComboList改成了像Access 中的多列组合框,真是爽。
我现在是改的它的非汇编那个子类化dll,那位能把那个汇编的子类化dll给改一下,就更爽了。
好像问题的关键点在GSubclass.cls 的初始化过程。把它拉出来,然后根据自已要只类化的窗口 IsWindowUnicode 来初始化进SetWindowLongA还是SetWindowLongW以及CallWindowProcA还是CallWindowProcW 等。我先试一下再说。
不敢一个工程中同时用多种子类化库,才试过出问题
不过我已经改好了。没有任何问题。关键是子类化是要用IsWindowUnicode 判断子类化的窗口是Asin还是unicode.
如下:
Private Sub Class_Initialize()
pInit nAddrSubclassA, 1
pInit nAddrSubclassW, 2
End Sub
'iAorW 1:A 2:W
Private Sub pInit(nAddrSubclass As Long, iAorW As Long)
'This is the subclasser code. The patches are wer
相关问答:
现在有个xml文件是<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xm ......
dim a as string,b as string,c as string
a="工程编号,单位工程名称,分部工程编号"
b="单位工程名称"
c="单位"
怎么才能判断出a字符串中存在b字符串,而不存在c字符串
看看i ......
问题:
现在Access数据库中有两张表TableA和TableB
TableA中有记录如下:
字段1(Name) 字段2(Num)
A 3
A 4
B 6
... ......
form1中有text1-8, 和command1
text8中为程序代码(生成窗体为form2(已做好))
单击command1后将text2中的代码生成EXE到d:\ 并且text1-7分别对应
产品名 公司名 合法版权 合法商标 文件描述 注释 标题
......
小弟用VB调EXCEL作图
objExlApp.Workbooks.Add
objExlApp.Charts.Add
objExlApp.ActiveChart.ChartType = xlLine
objExlApp.ActiveChart.HasLegend = True
objExlApp. ......