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);
}
正确,抛出异常和抓住异常能够传递参数。
分享到:
相关推荐
顺序存储结构的表、堆栈和队列,链式存储结构的表、堆栈和队列,数组、串和广义表,递归,树和二叉树,图,排序,查找,文件。含有108个完整的程序源代码、可执行文件。
VC++常用数值算法集 一些常用的数学算法
VC++皮肤合集,本人从网上收集,用于windows窗体皮肤的更换
VC++串口通信经典源码合集
VC++ windows运行环境合集,用于生成C++运行程序Exe(mfc等)后,在新电脑上部署运行环境,带注册Dll,实际项目已使用,亲测可用.
VC++各版本合集,包括VC++2005,VC++2008,VC++2010,VC++2012,VC++2013,VC++2015,VC++2017
初学vc++和ASP的一些问题集。里面的问题可能对一些人有益处。还属初浅。
VC++常见问题集:其中包含了c++编程时可能遇到的问题及解决问题的方法,对初学C++编程的同学很有帮助,可以下载!
微软常用VC++运行库合集 v2018.06.30(32&64;位)最新版
VC++图像处理算法合集
VC++运行库合集
这里包含了若干本VC++实例教程及实例,对VC++学习很有帮助,希望大家能够喜欢。由于文件太大,分为五个部分。part5
VC++运行库合集单文件安装包就一个exe文件,如果你的电脑缺少运行库可以用这个,默认会装基本所有运行库,离线运行不需要联网操作,亲测好用,能解决很多问题
VC++知识集:收录了若干程序员在进行VC++编程时遇到的实际问题,并给出了详细的讲解。希望对您有所帮助!
下载并安装微软VC++2015版运行库 (英文全称:Microsoft Visual C++ 2015 Redistributable Package)
VC++串口通信串口软件程序18个经典源码合集: VC 串口通信程序.rar VC 读串口话是动态波形,非常好的应用程序,有源码.rar VC++ 串口实现双机互联 包含视窗加代码.rar VC++ 串口通信,可以收发数据,可选用TCPIP 通信....
VC++允许库合集,解决未能加载文件或程序集CefSharp.Core.dll问题
编程语言,VC++6.0 工具主要为(OD1.1,CE5.4) 预计平均3天左右更新一课 大家好,我是郁金香老师:QQ150330575 欢迎大家参加梅州技术 VC++外挂编程VIP培训班。 在接下来的一段时间将由我和大家一起学习游戏外挂的分析...
VC++编程实用小例子锦集VC++编程实用小例子锦集VC++编程实用小例子锦集
vc++编程指南和VC常见问题集(中文.chm).rar