一段程序中SetDlgItemTextA、GetDlgItemText、GetDlgItemTextA 都有,为什么?小白求解~~

xinuuu 2012-04-21 11:50:17
SPI防火墙程序段:

BOOL AddIp()
{
CHAR Buff[32] = {0};
IPLISTITEM ItemBuff;
GetDlgItemTextA(hIpDlg,IDC_EDIT_ADDIP,Buff,32);/////////GetDlgItemTextA
ItemBuff.Ip.S_un.S_addr = inet_addr(Buff);
..........


// 在UI中显示IP列表
BOOL ShowIpList()
{
LVITEM LvItem;
WCHAR Buff[32] = {0};

int i = 0;

IPLISTITEM ItemBuff;
SendDlgItemMessage(hIpDlg,IDC_LIST_IP,LVM_DELETEALLITEMS,NULL,NULL);
while (GetIpListItem(i,&ItemBuff)==TRUE)
{
LvItem.iItem = i;
LvItem.mask= LVIF_TEXT;
LvItem.iSubItem = 0;
CHAR *IpBuff = inet_ntoa(ItemBuff.Ip);
SetDlgItemTextA(hIpDlg,IDC_EDIT_ADDIP,IpBuff);//////////SetDlgItemTextA
GetDlgItemText(hIpDlg,IDC_EDIT_ADDIP,Buff,32);//////////GetDlgItemText
LvItem.pszText = Buff;
SendDlgItemMessage(hIpDlg,IDC_LIST_IP,LVM_INSERTITEM,(WPARAM)0,(LPARAM)&LvItem);

memset(Buff,0,sizeof(Buff));
.........


加上或去掉A还会报错,A应该是ANSI,没有是ANSI或unicode任意吧?为什么可以混合出现呢,这两个字符集不是不兼容吗?这号没分不好意思…………
...全文
477 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂-的-蜗牛 2012-04-23
  • 打赏
  • 举报
回复
两种编码方式当然可以同时使用
只不过是函数的参数类型改变了
例如:
UNICODE下MessageBox对应的第二个是LPWSTR
!UNICODE下对应的第二个参数是LPSTR
在新建工程时会有选择是否UNICODE
如果是,那么我的MessageBox函数会直接替换为宽字节的MessageBoxW函数
如果这时你不想用宽字节,也可以显式调用MessageBoxA函数
只不过对应的参数不是宽字节的LPWSTR了
xinuuu 2012-04-23
  • 打赏
  • 举报
回复
程序整个解决方案内有两部分,一部分是防火墙安装、窗口回调函数,另一部分是DLL相关的。DLL部分头文件里有声明用unicode
#define UNICODE
#define _UNICODE
第一部分里没声明,1L那段代码就是这部分的,就是说可能用到两种编码方式吗?小白一只求指点……
疯狂-的-蜗牛 2012-04-22
  • 打赏
  • 举报
回复
看看windows怎么定义的MessageBox你就知道了:
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif // !UNICODE
在!UNICODE下MessageBox MessageBoxA代表的是同一个函数
Eleven 2012-04-22
  • 打赏
  • 举报
回复
要看你当前工程是怎么编码的,Unicode还是多字节编码。

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧