找回密码
 加入
搜索
查看: 4754|回复: 7

[系统综合] 使用 GUICtrlSetLimit 来限制 Input 里面输入的位数,如何使汉字会被视为两个字符

  [复制链接]
发表于 2013-1-14 22:14:17 | 显示全部楼层 |阅读模式
使用 GUICtrlSetLimit 来限制 Input 里面输入的位数,如何使汉字会被视为两个字符

一般來說 漢字 通常都被視為 兩個字元在 但是在AU3裡面 卻被視為一個字元長度
所以當使用  GUICtrlSetLimit 来限制 Input 里面输入的位数時,會被視為一個字元

但是 資料庫裡面卻把 英文字 視為一個字元 漢字 視為兩個字元.....

譬如 資料庫長度是50個字  如果我限制 Input  為 25  那麼 如果全都輸入英文 就浪費了 25個資料庫空間

如果設為 50  那麼如果全部打漢字  那就超過了 資料庫允許的.....

有辦法讓漢字的長度 被視為 2個字元嗎??
发表于 2013-1-15 00:25:13 | 显示全部楼层
GUICtrlSetLimit 实际是发送EM_LIMITTEXT消息来操作
http://msdn.microsoft.com/en-us/library/windows/desktop/bb761607(v=vs.85).aspx
The maximum number of TCHARs the user can enter. For ANSI text, this is the number of bytes; for Unicode text, this is the number of characters. This number does not include the terminating null character.
它限制的是字符数,而不是字节数

有辦法讓漢字的長度 被視為 2個字元嗎??
有,见_WinAPI_WideCharToMultiByte

评分

参与人数 1金钱 +20 贡献 +5 收起 理由
gzh888666 + 20 + 5

查看全部评分

发表于 2013-1-15 00:30:33 | 显示全部楼层
回复 2# ceoguang


    HOOK这么晚还不睡?哇咔咔,你头像的妞是你新泡到的?
 楼主| 发表于 2013-1-15 01:16:31 | 显示全部楼层
回复 2# ceoguang

版主 請教一下 使用 這個 _WinAPI_WideCharToMultiByte  其實是在轉換字碼的

想請問的是 一般的 ERP 系統 通常 都可以做到這樣的限制.......就是 可以 做到輸入到某一定的位數之後 就不能輸入了.....

請問一下 原理也是 要先自己轉換後 在計算 然後才去限制的嗎??
 楼主| 发表于 2013-1-15 01:17:00 | 显示全部楼层
真好 有妞泡 呵呵
发表于 2013-1-15 01:18:52 | 显示全部楼层
本帖最后由 gzh888666 于 2013-1-15 01:20 编辑

看来只有利用EM_LIMITTEXT,
重新封装一次_GUICtrlSetLimit 。别无他法!
谁封装好了通知一声呀!加分!呵呵
发表于 2013-1-15 03:58:52 | 显示全部楼层
回复 4# kk_lee69
翻开UDF看看你就知道了,关键是处理过程,而不_WinAPI_WideCharToMultiByte本身的反回值
问题二:可以自己捕捉WM_CHAR消息,消息返回前先发送WM_GETTEXT获取字符串,然后通过WideCharToMultiByte转换获得字节数,再决定是否放行当前消息
发表于 2013-1-15 04:09:28 | 显示全部楼层
看来只有利用EM_LIMITTEXT,
重新封装一次_GUICtrlSetLimit 。别无他法!
谁封装好了通知一声呀!加分!呵 ...
gzh888666 发表于 2013-1-15 01:18


GUICtrlSetLimit 就是使用EM_LIMITTEXT,你无需作任何修改
如果你实在无聊,可以翻翻GuiEdit.au3,里面有封装好的_GUICtrlEdit_SetLimitText
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-26 09:32 , Processed in 0.246073 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表