`
jgsj
  • 浏览: 1051568 次
文章分类
社区版块
存档分类
最新评论

VC++问题集5

 
阅读更多

41.自动调整组合框的宽度
组合框控件的下拉列表宽度在默认情况下是和组合框宽度相同的,但是如果组合框中的字符串宽

度超过了下拉列表的宽度,那么该字符串将不能完全显示。
我们可以通过自动调整组合框下拉列表的宽度来解决这个问题。
示例代码:
HBRUSH MyComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
switch(nCtlColor)
{
case CTLCOLOR_EDIT:
break;
case CTLCOLOR_LISTBOX:
int iItemNum=GetCount();
int iWidth=0;
CString strItem;
CClientDC dc(this);
int iSaveDC=dc.SaveDC();
dc.SelectObject(GetFont());
int iVSWidth=::GetSystemMetrics(SM_CXVSCROLL);
for(int i=0;i<iItemNum;i++)
{
GetLBText(i,strItem);
int iWholeWidth=dc.GetTextExtent(strItem).cx+iVSWidth;
iWidth=max(iWidth,iWholeWidth);
}
iWidth+=dc.GetTextExtent("a").cx;
dc.RestoreDC(iSaveDC);
if(iWidth>0)
{
CRect rc;
pWnd->GetWindowRect(&rc);
if(rc.Width()!=iWidth)
{
rc.right=rc.left+iWidth;
pWnd->MoveWindow(&rc);
}
}break;
}
return hbr;
}
42.列表控件能够响应鼠标的双击事件,如果用户双击列表控件后,NM_DBLCLK消息就会产生,通过

GetSelectionMark方法可以获得列表所选项的索引。

43.LVN_BEGINDRAG消息在有拖曳动作发生时产生。

44.利用列表标题对列表视图进行数据排序
列表控件在默认情况下不会对单击列标题产生任何动作。要实现对列标题单击事件进行响应,需

要在新建类中处理LVN_COLUMNCLICK消息。如果要对列表进行排序就在LVN_COLUMNCLICK消息的处

理函数中添加SortItems函数,SortItems函数实现了对列表项排序。

45.关于reinterpret_cast
reinterpret_cast是C++里的强制类型转换符,操作符修改了操作数类型,但仅仅是重新解释了给

出的对象的比特模型而没有进行二进制转换。
用法:reinterpret_cast<type-id> (expression)
type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。
它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一

个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。
你可参考:http://hi.baidu.com/mlh2/blog/item/8004bc7feec1080e29388aa3.html

46.如何创建一个具有输入功能的ListControl控件
1.在要编辑的单元格位置创建一个编辑框控件。
2.创建一个编辑框控件,并将该控件移动到要编辑的单元格所在的位置。

注:最好响应WM_KILLFOCUS消息,使其在失去焦点时将数据显示在ListControl控件的单元格中。

47.如何获取磁盘分区:
通过调用GetLogicalDriveStrings函数可以获取磁盘分区的名称。然后我们可以用CFileFind类

的相关成员函数获取相应分区中的文件.具体如何实现请查看MSDN。

48.如何在CRichEdit控件中查找字符串:
void CRichTextCharDlg::OnFind()
{
m_richedit.LineScroll(-lineindex);
CString strfind;
GetDlgItem(IDC_EDFIND)->GetWindowText(strfind);
int ret=tmp.Find(strfind,istartpos);
int strlen=strfind.GetLength();
m_richedit.SetSel(ret,ret+strlen);
istartpos=ret+strlen;
lineindex=m_richedit.LineFromChar(ret);
int linepos=m_richedit.LineIndex(lineindex);
m_richedit.LineScroll(lineindex);
m_richedit.SetFocus();
}

49.使用CRichEdit控件时,一般在InitInstance函数中要调用AfxInitRichEdit()函数,用来初始化

RichEdit控件。

50.关于c++中try throw catch 的使用。
在try中测试代码,测试的代码中如果有异常用throw抛出,然后用catch抓住异常。throw抛出的

异常类型与catch抓住的异常要一样,否则会出错。
如下示例:
try {
throw 2;
}
catch(int){
MessageBox("asdf");
}
正确,能够抓住异常,并进行相应的处理。
try {
throw 2;
}
catch(char ){
MessageBox("wert");
}
不正确,会出现异常
try {
throw 2;
throw "asdf";
}
catch(int){
MessageBox("asdf");
}
catch(char * p){
MessageBox(p);
}
正确,但只执行第一个异常。
try {
throw "asdf";
}
catch(int){
MessageBox("asdf");
}
catch(char * p){
MessageBox(p);
}
正确,抛出异常和抓住异常能够传递参数。

分享到:
评论

相关推荐

    VC++ windows运行环境合集(VC++2005-VC++2022)

    总的来说,VC++ Windows运行环境合集是解决程序运行依赖问题的有效工具,它使得开发者可以轻松地在各种Windows系统上部署和运行他们的C++程序,尤其是那些基于MFC框架的应用。正确地管理和使用这些运行库,能够保证...

    VC++允许库合集,解决未能加载文件或程序集CefSharp.Core.dll问题

    总之,"VC++允许库合集"是解决C++应用程序依赖问题的关键,而“未能加载文件或程序集CefSharp.Core.dll”通常是由于缺少运行库支持或配置不当所致。通过正确安装和配置VC++运行库,以及检查CefSharp的部署情况,通常...

    算法VC++程序集5

    顺序存储结构的表、堆栈和队列,链式存储结构的表、堆栈和队列,数组、串和广义表,递归,树和二叉树,图,排序,查找,文件。含有108个完整的程序源代码、可执行文件。

    计算机问题集vc++ASP

    计算机问题集VC++ ASP是一个资源包,包含了初学者在学习VC++和ASP编程时可能会遇到的问题及解答。这个集合对于那些刚开始接触这两种技术的人来说是非常有价值的,因为它提供了实践中的常见问题和解决方案,帮助他们...

    VC++常用数值算法集

    在编程领域,尤其是在科学计算和工程应用中,...综上所述,"VC++常用数值算法集"涵盖的内容丰富多样,是解决各种数学问题和工程计算的强大工具箱。通过理解和掌握这些算法,开发者能够编写出高效且精确的数值计算程序。

    VC++各版本合集2005-2017

    此外,此版本引入了新的诊断工具,帮助开发者检测并修复性能问题。 **VC++2013**加强了C++14标准的支持,比如通用初始化语法、可变模板参数列表等。同时,它在调试和性能分析方面有所提升,提供更好的用户体验。 *...

    VC++皮肤(合集)

    5. **113172197SkinEasy**:这可能是一个简化皮肤应用过程的库,使得即使是对皮肤技术不熟悉的新手也能轻松使用。 6. **21840278VC++_VcExtend**:这可能是一个针对VC++的扩展库,不仅提供皮肤功能,还可能包含其他...

    VC++串口通信经典VC++源码合集

    VC++中的ReadFile和WriteFile函数分别用于接收和发送数据,这两个函数都是异步的,因此在实际应用中可能需要配合GetOverlappedResult或WaitForSingleObject等函数处理同步问题。 在这些源码中,还涉及到数据转换...

    vc++技巧集

    5. **STL(Standard Template Library)**:VC++中包含STL,这是一个强大的模板库,提供了容器(如vector、list、map)、算法和迭代器等工具。书中的内容可能涉及如何使用STL提高代码效率和可读性。 6. **调试技巧*...

    VC++常见问题集—C++学习

    "VC++常见问题集—C++学习"这个资源正好为此目的而设计,它提供了一个关于C++编程的常见问题合集,帮助开发者解决实际编程过程中可能遇到的困扰。 首先,让我们探讨一些C++编程中常见的问题: 1. **编译错误**:...

    (VC++2015 合集

    总的来说,VC++2015 Redistributable Package是确保基于VC++2015编译的应用程序正常运行的基础,它提供了必要的运行时环境和库文件,解决了程序依赖问题,并且随着微软的安全更新,确保了系统的安全性。无论是用户...

    VC++运行库合集

    VC++运行库合集

    微软常用VC++运行库合集 v2018.06.30(32&64;位)最新版

    - Microsoft Visual C++ 2013 Update 5 - Microsoft Visual C++ 2015-2019 Redistributable **四、更新日志** "更新日志.txt" 文件通常记录了合集中的各个组件的版本更新和修复内容,包括安全性更新、性能优化以及...

    VC++笔记-问题集

    **VC++笔记-问题集** 本笔记集合涵盖了VC++编程中的关键知识点,特别是关于多线程操作、进程通信以及自定义ActiveX控件制作的深入探讨。这些主题在实际开发中具有广泛的应用,理解并掌握它们对于提升软件工程能力至...

    VC++教学实践实例合集

    这里包含了若干本VC++实例教程及实例,对VC++学习很有帮助,希望大家能够喜欢。由于文件太大,分为五个部分。part5

    vc++编程指南和VC常见问题集(中文.chm).rar

    《VC++编程指南和VC常见问题集》是一个针对微软Visual C++(简称VC++)开发者的参考资料集合。这个压缩包包含两个.chm文件,分别是"vc++ 编程指南.chm"和"VC常见问题集(中文).chm",它们提供了关于VC++编程的全面...

    VC++深入详解(完整版)+所有源代码集

    《VC++深入详解(完整版)+所有源代码集》是一份全面探讨Microsoft Visual C++(简称VC++)编程技术的资源包,包含了书籍的详细内容和配套的源代码。这份资料旨在帮助开发者深入理解VC++的各个方面,从基础概念到高级...

    VC++运行库集合 6.0-2017

    随着时间的推移,微软不断更新和改进VC++运行库,引入了新的功能、优化了性能,并修复了已知的安全问题。例如,从VC++ 2005开始引入了.NET Framework的组件,使得C++开发者能够利用.NET平台的优势。在后续版本中,如...

    归纳整理的VC++串口通信20个经典源码合集.zip

    VC++串口通信20个经典源码合集: .\VC 串口通信程序.rar .\VC 读串口话是动态波形,非常好的应用程序,有源码.rar .\VC++ 串口实现双机互联 包含视窗加代码.rar .\VC++ 串口通信,可以收发数据,可选用TCPIP 通信.rar ....

    微软VC++运行库合集.zip

    在Windows 10系统上,由于系统更新和安全性的提升,某些旧版本的VC++运行库可能不再被默认包含,因此安装这个合集可以帮助解决运行依赖于这些库的软件的问题。例如,一些游戏、软件或者系统工具可能需要VC++ 2005、...

Global site tag (gtag.js) - Google Analytics