c语言char设置帐号密码,C语言中如何实现输入密码?(在输入时显示为*号.)

本文详细探讨了GtkEntry组件的内部实现,通过分析源码,揭示了gtk_entry_get_display_text函数的工作原理。文章介绍了如何处理可视区域与不可视字符,特别是密码输入时的隐藏字符处理。通过对源码的解读,读者将能更好地理解和运用GtkEntry在GUI应用中的功能。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

看下 GtkEntry 的源码不就知道了。。。

gtk_entry_get_display_text

...

if (end_pos <= start_pos)

return g_strdup ("");

else if (priv->visible)

{

start = g_utf8_offset_to_pointer (text, start_pos);

end = g_utf8_offset_to_pointer (start, end_pos - start_pos);

return g_strndup (start, end - start);

}

else

{

str = g_string_sized_new (length * 2);

/* Figure out what our invisible char is and encode it */

if (!priv->invisible_char)

invisible_char = priv->invisible_char_set ? ' ' : '*';

else

invisible_char = priv->invisible_char;

char_len = g_unichar_to_utf8 (invisible_char, char_str);

/*

* Add hidden characters for each character in the text

* buffer. If there is a password hint, then keep that

* character visible.

*/

password_hint = g_object_get_qdata (G_OBJECT (entry), quark_password_hint);

for (i = start_pos; i < end_pos; ++i)

{

if (password_hint && i == password_hint->position)

{

start = g_utf8_offset_to_pointer (text, i);

g_string_append_len (str, start, g_utf8_next_char (start) - start);

}

else

{

g_string_append_len (str, char_str, char_len);

}

}

return g_string_free (str, FALSE);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值