CString cs("New\tCtrl+N");cs = GetProfileString("menu",cs,cs);结果--》cs=New

111222 2001-09-14 01:28:40
CString cs("New\tCtrl+N");
cs = GetProfileString("menu",cs,cs);
结果--》cs=="New"

为什么啊?怎么解决啊?GetProfileString得不到'\t'后面的文字,如何是好啊?
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2001-09-15
  • 打赏
  • 举报
回复
自己LoadString,找"\n"
111222 2001-09-14
  • 打赏
  • 举报
回复
to Julienjut(秋水):可我怎么把LPCTSTR pszTipText获取出来?
Julienjut 2001-09-14
  • 打赏
  • 举报
回复
SetTipText(int nPane, LPCTSTR pszTipText )

nPane The zero-based index of status bar pane to receive the tooltip text.
pszTipText A pointer to a string containing the tooltip text.

111222 2001-09-14
  • 打赏
  • 举报
回复
OK,搞定了,原来是我的CMenuBar把顶层菜单项重新修改回去了...上面代码没任何问题。

下面的问题就是,怎样修改菜单的Prompt?(就是鼠标经过时候在状态栏上显示的文字)
蒋晟 2001-09-14
  • 打赏
  • 举报
回复
存取的时候先编码/解码
111222 2001-09-14
  • 打赏
  • 举报
回复
我是要从ini里读取菜单项替换原有菜单项字符串。
下面我饶过了\t的问题,用了两个replace。
但是结果最顶层菜单无法改变了。谁知道为什么?

void CMainFrame::InitMenu(CMenu* menu)
{
if(menu==NULL)
return;
int nCount = menu->GetMenuItemCount();//获取该层菜单数
for(int i=0;i<nCount;i++)//遍历所有菜单项
{
int id = menu->GetMenuItemID(i);//查看菜单属性,id=0为分割线,-1为popup菜单
if(id==0)
{}
else if(id==-1)
{
CString strText;
menu->GetMenuString (i, strText, MF_BYPOSITION);//获取菜单文字
strText.Replace(_T('\t'),_T('_'));//解决'\t'无法使用GetProfileString的问题
CString cs = AfxGetApp()->GetProfileString("menu",strText,strText);//读取菜单项在ini里的文字
cs.Replace(_T('_'),_T('\t'));//把上面的replace再变回来
menu->ModifyMenu(i,MF_STRING|MF_BYPOSITION,id,cs);


//AfxGetApp()->WriteProfileString("menu",strText,cs);

CMenu* pSub = menu->GetSubMenu(i);
InitMenu(pSub);//递归,遍历popup菜单
}
else
{
CString strText;
menu->GetMenuString (i, strText, MF_BYPOSITION);
strText.Replace(_T('\t'),_T('_'));//解决'\t'无法使用GetProfileString的问题
CString cs = AfxGetApp()->GetProfileString("menu",strText,strText);
cs.Replace(_T('_'),_T('\t'));//把上面的replace再变回来
menu->ModifyMenu(i,MF_STRING|MF_BYPOSITION,id,cs);


// AfxGetApp()->WriteProfileString("menu",strText,cs);
}
}
}

kaoms 2001-09-14
  • 打赏
  • 举报
回复
\t应该没问题的。
CString cs("New\tCtrl+N");
AfxGetApp()->WriteProfileString("menu",cs,cs);
cs = AfxGetApp()->GetProfileString("menu",cs,cs);
结果cs的内容应该还是"New\tCtrl+N"
colorknight 2001-09-14
  • 打赏
  • 举报
回复
换一个分割符,比如‘|’、‘!’等

16,472

社区成员

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

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

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