Unicode控件的字串参数问题

控件|问题

写Unicode控件时发现的传字串参数的问题:
问题描述:
   Unicode的OCX,属性参数Text,类型:BSTR。
   控件的源码(VC中)
   afx_msg void SetText(LPCTSTR lpszText)

   VB调用1:
   Dim strTest As String
   strTest = Text1.Text       ‘Text1文本框为空
   If Not IsNull(strTest) Then
      TestOCX2221.stringTest = strTest
   End If
   结果:
   SetText中lpszText是NULL。

   VB调用2:
   Dim strTest As String
   strTest = ""
   If Not IsNull(strTest) Then
       TestOCX2221.stringTest = strTest
   End If
   结果:
   SetText中lpszText不为NULL,得到指向空串的有效指针。

因此:
   上述调用1时:
   当控件的处理程序直接调用了CString的 == 或 !=,那就有问题了,因为CString这两个操作符不支持NULL,会出错。也就是调用了不支空指针的操作。

好吧,还是采用保险的做法吧: 加多一句:
   If(lpszText==NULL) lpszText = _T("");

很奇怪:
   不知道VB的两种调用为啥会传出不同的值。没明白。
   至于为什么ANSI不会有问题,可能是因为VB调用ANSI的控件时,需要对字串进行内部的转换(由Unicode转ANSI),而去除了可能为空指针的情况。

时间: 2024-12-22 14:45:42

Unicode控件的字串参数问题的相关文章

js-JS控件如何给Knockout参数赋值?

问题描述 JS控件如何给Knockout参数赋值? 如上述题目:页面调用JS控件给Knockout参数赋值时失败求解??求给一个例子参考- 解决方案 http://desert3.iteye.com/blog/1480421

js-J控件如何给Knockout参数赋值

问题描述 J控件如何给Knockout参数赋值 1. <input data-bind="value: EndDate, visible: editMode" id='date' onclick="laydate()" /> > 其中EndDate为knockout的ko.observerable()的参数 : onclick为JS时间控件 求解为什么无法给EndDate赋值?

js-JS控件如何给Knockout参数赋值

问题描述 JS控件如何给Knockout参数赋值 > 1. <input data-bind="value: EndDate, visible: editMode" id='date' onclick="laydate()" /> > 其中EndDate为knockout的ko.observerable()的参数 : onclick为JS时间控件 求解为什么无法给EndDate赋值? 解决方案 onclick="MyCalendar

WinForm控件开发总结(四) 控件属性的串行化

前一篇文章介绍了常用的设计时Attribute.其中BrowsableAttribute,CategoryAttribute, DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可 有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不熟悉, 可以参考我前一篇文章的描述或者查看MSDN,这里我就不在赘述了. 下来我们主要介绍一下Designer

调用ocx控件提示 指定的参数数目与所需数目不匹配

问题描述 而我用相同的控件在web页面就可以成功调用方法,在winform程序中不行.比较奇怪.方法参数类型不可能错误. 解决方案 本帖最后由 sxy_javaeye 于 2014-09-23 12:28:33 编辑解决方案二:不会的吧,根据错误提示肯定是参数不对了.

gtk+修改控件文本字体一例

因为家里电脑是Mac系统,所以就拿Mac系统来示范. 要注意的是gtk+2.0和3.0对字体的处理是有一些区别的: 1.后者使用的是pango的机制,我们这里以gtk+3.0为基础. 2.两者调用Font对话框的方法也不一样,前者用gtk_font_selection_dialog_new来建立对话框,还要设置button_ok按钮的回调函数,比较繁琐:后者用gtk_font_chooser_dialog_new建立对话框,可以直接取得字体名称,比较简洁.这里同样以3.0为基础. 下面上代码:

ObjectDataSource控件的select方法如何应用类似select(sql)带参数的方法

问题描述 比如我有一个Result类,其中有一个Result.SearchResult(strSQL)的select方法,这个类还有更新,删除方法,我现在已经指定了更新,删除方法,而且Result.SearchResult(strSQL)也以指定,其中的strSql参数指定为None,strSQL是通过组合选择拼接而成的,我想让ObjectDataSource在程序中指定strSQL,完整的代码如何写?this.ResutlObjectDataSource.SelectParameters["s

结合Control.FirefoxDialog控件,构造优秀的参数配置管理模块

在前面一篇随笔<WinForm界面开发之模块化分合>中,说到了参数配置管理模块内容,内容摘录如下: ====================================  参数配置模块  在程序中,一般应用就是通过代码把相关的内容进行转义保存或者解析,以便呈现给用户更好的数据展示效果,这个模块比较通用,可分可合. 另外一个也比较常用的就是参数的配置管理模块,一般如果参数比较少,直接使用.NET的配置保存功能即可,如下图所示.     但这种方式只能保存比较少的内容,对于比较复杂的配置,一般

Asp.net mvc简单实现基于Razor的分页控件

最近在写一些web应用了解了一下asp.net mvc发现的确好用,所以直接就干上了.不过在使用asp.net mvc的Razor模板的情况并不向传统webform那样可以使用控件.但从Razor的功能上已经具备相关代替的功能,只是从Razor角度来说不是 我们平常说的控件而是子模板.由于Razor可以根据自己需求把功能拆分到子模板中,然后通过RenderPage方法输出.从设计的手段上来看完全可以 把分页控件封装成一个子的cshtml,在需要的时候引用上就是了. 作为一个控件的设计其最重要的环