关闭

孙鑫教程第六章实现电话本的问题

339人阅读 评论(0) 收藏 举报

直接上代码


void CPhonebookView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)

{
CClientDC dc(this);
if( 0x0d == nChar )
{
if( 0 == ++m_nIndex )
{
m_menu.CreateMenu();
GetParent()->GetMenu()->AppendMenu(MF_POPUP,(UINT)m_menu.m_hMenu,"Phonebook");
GetParent()->DrawMenuBar();
}

m_menu.AppendMenuA(MF_STRING,111,m_strLine.Left(m_strLine.Find( ' ',0)));
m_strLine.Empty();
Invalidate();
}
else
{

m_strLine += char(nChar);
dc.TextOutA(0,0,m_strLine);
}
CView::OnChar(nChar,nRepCnt,nFlags);

}

原书中代码是这样的,不直到你们执行后有没有发现phonebook菜单下总有一个空白的菜单项?

后经过实验发现,是因为在敲第一个回车时完成popup菜单的添加,这时候回车会停留在输入缓存里,然后紧接着使用如下代码

m_menu.AppendMenuA(MF_STRING,111,m_strLine.Left(m_strLine.Find( ' ',0)));

就添加了一个空白的菜单项


因此只需要在m_menu.AppendMenuA(MF_STRING,111,m_strLine.Left(m_strLine.Find( ' ',0)));的上一行添加if( 0 < m_nIndex )就可以了


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1337次
    • 积分:32
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档