随笔分类 -  vc/mfc

(MFC Combo Box)Switch between drop-list and drop-down mode
摘要:参考此贴:http://www.codeguru.com/cpp/controls/combobox/article.php/c1823/Switch-between-droplist-and-dropdown-mode.htm实现源码(经过少量修改,原版本请参考上贴)// FineCombo.h : header file//// Copyright (c) 1999 Bruno Vais//// Distribute and use freely, except:// a) Don't alter or remove this notice.// b) Mark the chang 阅读全文

posted @ 2013-03-19 19:29 zhuyf87 阅读(1451) 评论(0) 推荐(0)

vc++ warning C4541 'typeid' used on polymorphic type with GR-
摘要:在vc2008编译器下使用c++ typeid操作符时,提示如下警告,并在运行时崩溃。warning C4541: 'typeid' used on polymorphic type 'XXX' with /GR-; unpredictable behavior may result.在vc++编译器中,“/GR”选项的作用如下:When /GR is on, the compiler defines the _CPPRTTI preprocessor macro./GR- disables run-time type information.Use /GR i 阅读全文

posted @ 2013-03-13 09:45 zhuyf87 阅读(1069) 评论(0) 推荐(0)

限制EditControl控件的输入字符数量
摘要:使用CEdit::SetLimitText()函数来完成此功能。Call this member function to set the text limit for this CEdit object.void SetLimitText( UINT nMax);nMax: The new text limit, in characters.比如限制ID为IDC_EDIT_CODE的编辑框控件,最多只能输入30个字符。((CEdit *)GetDlgItem(IDC_EDIT_CODE))->SetLimitText(30); 阅读全文

posted @ 2013-02-28 10:58 zhuyf87 阅读(2610) 评论(0) 推荐(0)

vc++ List Control控件获得所有选中行的序号
摘要:方法一:POSITION pos = listCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) // 没有选中的行else { while (pos) { int nItem = listCtrl.GetNextSelectedItem(pos); // nItem是所选中行的序号 } }方法二:for(int i = 0; i < listCtrl.GetItemCount(); ++i) { if(listCtrl.GetItemState(i, LVIS_SE... 阅读全文

posted @ 2013-02-27 15:20 zhuyf87 阅读(3957) 评论(0) 推荐(0)

Date Time Picker控件使用
摘要:1. 供用户选择日期和时间将控件Format属性设置为Time,为其添加一个CDateTimeCtrl类型变量,然后通过如下代码设置日期和时间的显示格式。TimePicker.SetFormat(_T("yyyy-MM-dd HH:mm:ss")); // 2013-02-25 16:32:20HH表示24小时制,hh表示12小时制。2. 获取用户当前所选择的日期和时间CTime dateTime;TimePicker.GetTime(dateTime);CString dateTimeString = dateTime.Format(_T("%Y-%m-%d % 阅读全文

posted @ 2013-02-25 17:00 zhuyf87 阅读(3387) 评论(0) 推荐(0)

解决ListCtrl控件第一列文字不能居中显示的问题
摘要:原文地址:http://blog.pfan.cn/yuqiexing/50744.html(略作整理和补充)把CListCtrl设置为Report风格,但是插入第一列的时候(InsertColumn)的时候会发现文字不能居中。即使使用了LVCFMT_CENTER,其他列都可以正常居中,但第一列仍然靠左显示。解决方案:(1)巧妙解决:插入第一列时宽度设置为0,弃之不用。但是这样有问题,凡是与第一列相关的一些设置将发挥不了作用,例如checkbox和icon。(2)插入第一列后,改变它的参数:(我使用了这种方法)LVCOLUMN lvc;lvc.mask = LVCF_FMT;GetColumn( 阅读全文

posted @ 2013-02-22 15:36 zhuyf87 阅读(7362) 评论(0) 推荐(2)

模块“*.dll”已加载,但对DllRegisterServer的调用失败,错误代码为0x80070005
摘要:Win7系统注册Dll失败(regsvr32 C:\windows\sysWOW64\SkDeviceManage.dll),提示:模块“C:\windows\sysWOW64\SkDeviceManage.dll”已加载,但对DllRegisterServer的调用失败,错误代码为0x80070005解决方法是“以管理员身份运行”命令提示符,重新注册。 阅读全文

posted @ 2013-01-15 09:23 zhuyf87 阅读(17968) 评论(0) 推荐(0)

关于在窗口消息处理函数中使用MessageBox造成消息重入的问题的研究及解决
摘要:原文地址:http://sns.ruanko.com/space.php?uid=15384&do=blog&id=97415这两天慢慢把这次实训的成果总结出来,这是第一篇日志。最早碰到的一个报错问题,在窗口消息处理函数中使用MessageBox(包括A和W版),由于MessageBox特性,程序会被阻塞,此时由于窗口处理函数未返回,消息分发会继续分发这个“未处理”的消息,从而导致消息重入。下面进行分析:MessageBox是模态对话框,Msdn中对于Dialog的解释为:The DialogBox macro uses the CreateWindowEx function 阅读全文

posted @ 2012-12-12 19:10 zhuyf87 阅读(1686) 评论(0) 推荐(0)

Windows Mobile系统弹出输入法时,自动调整窗口显示
摘要:windows mobile系统自带的输入法没有标题栏,用户没有办法移动它的显示位置。如果对话框的底部,有需要输入的编辑框,就会被弹出的输入法遮挡住,这样用户无法实时看到自己输入的内容。参考mobile自带的系统程序,一般可以做成下面这种效果。也就是弹出输入法时,自动给窗口添加一个滚动条。用户可以通过滚动条调整界面的显示。当关闭输入法时,将滚动条去掉,同时窗口恢复到弹出输入法之前的默认显示。下面介绍如何实现这种功能。首先需要在系统“弹出输入法”和“关闭输入法”时,能够获得一个通知。这可以通过响应WM_SETTINGCHANGE消息来完成。当执行到自定义的WM_SETTINGCHANGE消息响应 阅读全文

posted @ 2012-12-11 11:11 zhuyf87 阅读(944) 评论(1) 推荐(0)

关于对话框DoModal()函数调用失败的原因分析
摘要:原文地址:http://www.cnblogs.com/carekee/articles/1749365.html对话框DoModal()函数调用失败一般而言有两种表现形式:一是对话框弹不出来,但是没有错误提示;二是对话框弹不出来,同时伴随内存访问错误的提示框出现。第一种表现主要是因为没有对资源句柄进行切换造成的,以在DLL中弹出对话框中最为常见。解决办法是:如果是MFC规则DLL,可以使用所有导出函数的开始处添加 AFX_MANAGE_STATE宏,具体代码为:AFX_MANAGE_STATE(AfxGetStaticModuleState( ))。如果是MFC扩展DLL,具体做法是:1. 阅读全文

posted @ 2012-11-15 10:42 zhuyf87 阅读(3110) 评论(0) 推荐(0)

CDialog_DoModal返回-1,无法创建Dialog
摘要:CDialog::DoModalReturn Value:An int value that specifies the value of the nResult parameter that was passed to the CDialog::EndDialog member function, which is used to close the dialog box. The return value is –1 if the function could not create the dialog box, or IDABORT if some other error occurre 阅读全文

posted @ 2012-11-15 10:34 zhuyf87 阅读(1008) 评论(0) 推荐(0)

CSting的GetBuffer()和ReleaseBuffer()
摘要:GetBuffer和ReleaseBuffer是从其父类CSimpleStringT继承过来的。GetBuffer的作用是:“Returns a pointer to the internal character buffer”,ReleaseBuffer的作用是:“Releases control of the buffer allocated by GetBuffer.”。这两个函数的常见用法如下:CString str;const int bufferSize = 10;LPTSTR p = str.GetBuffer(bufferSize);_tcscpy_s(p, bufferSiz 阅读全文

posted @ 2012-11-02 12:06 zhuyf87 阅读(4490) 评论(0) 推荐(0)

MFC Radio Button的基本应用
摘要:1. 在对话框中添加3个Radio Button,ID分别为IDC_RADIO1、IDC_RADIO2、IDC_RADIO3。IDC_RADIO1的Group属性为True,IDC_RADIO1、IDC_RADIO2、IDC_RADIO3按Tab顺序排列。2. 在对话框初始化过程中,如OnInitDialog()中调用: CheckRadioButton(IDC_RADIO1, IDC_RADIO3, IDC_RADIO1);CheckRadioButton()的作用是,对于一组Radio Button,为其中的某一个添加“check mark”,同时去掉同一组内所有其它Radio But.. 阅读全文

posted @ 2012-10-31 17:34 zhuyf87 阅读(777) 评论(0) 推荐(0)

导航