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

原创 2013年12月05日 17:08:27

直接上代码


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 )就可以了


孙鑫C++教程(全20讲)PPT讲义.21M

  • 2008年06月22日 00:51
  • 598KB
  • 下载

C++教程PPT讲义(孙鑫).rar

  • 2008年06月29日 12:36
  • 3.53MB
  • 下载

《VC++深入详解》孙鑫经典VC++视频教程

这里推荐孙鑫的视频,这部视频在《深入详解VC++》这本书的配套光盘里,个人觉得是最经典的不可多得的国人讲解的超高水平的VC++学习视频。视频共分20课,平均每课两个多小时。本套视频由孙鑫老师亲自授课录...

Java开发详解视频教程(孙鑫)9a

  • 2007年05月21日 17:41
  • 20.47MB
  • 下载

孙鑫VC视频教程笔记之第十四课“基于TCP和UDP的Socket编程”

在OSI的各层所使用的协议: 1.应用层:telnet,FTP,HTTP,DNS,SMTP,POP3 2.传输层:TCP,UDP       TCP:面向连接的可靠的传输协议,通信前建立三次握手...

孙鑫视频教程第十课——图形的绘制、颜色对话框、字体对话框、改变控件的字体及颜色、在对话框中显示位图

图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换...
  • yzl_rex
  • yzl_rex
  • 2011年10月10日 19:27
  • 1947

孙鑫老师VC视频教程笔记1-10课

孙鑫老师VC视频教程笔记1-10课 http://www.youku.com/playlist_show/id_5114075.html VC视频教程笔记!  第一课  1...

孙鑫C++教程(全20讲)

(注意以下为FTP下载地址,建议使用迅雷等下载工具下载,全20CD,已添加完整)孙鑫C++教程(全20讲)PPT讲义.rar孙鑫C++教程01.rar孙鑫C++教程02.rar孙鑫C++教程03.ra...

孙鑫VC视频教程笔记之第十课“绘图”

1.      画图: CClientDC dc(this); CPen pen(PS_SOLID,1,RGB(255,0,0)); dc.SelceObject(&pen); ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:孙鑫教程第六章实现电话本的问题
举报原因:
原因补充:

(最多只允许输入30个字)