VC/MFC相关
文章平均质量分 81
QQ276592716
这个作者很懒,什么都没留下…
展开
-
CTreeCtrl中的checkbox的获取~
<br />最近在用树形控件写程序,应项目要求,添加了checkbox属性,但是,问题来了,很难获取到checkbox的属性。查阅了网上的代码,发现很多不能直接用,于是自己研究了下~~<br />添加树形控件的事件处理 NM_CLICK<br /> 添加代码如下:<br /> void CRSViewerDlg::OnClickTreeFiles(NMHDR *pNMHDR, LRESULT *pResult)<br />{<br /> // TODO: 在此添加控件通知处理程序代码<br /> CPo原创 2011-03-26 14:19:00 · 6024 阅读 · 4 评论 -
AfxBeginThread()干了什么?
跟一跟AfxBeginThread的源码就可以很容易的发现,它调用了_beginthreadex,注意这家伙传递的可不是你传进去的函数函数指针,它传的是_AfxThreadEntry和一个_AFX_THREAD_STARTUP的结构,那我们的函数指针和参数呢??哦,原来都被封装到原创 2011-07-29 17:40:24 · 2134 阅读 · 0 评论 -
在线程中启动定时器~
代码如下:SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 DWORD dwThreadID = 0; CreateThrea原创 2011-07-29 16:33:28 · 5884 阅读 · 0 评论 -
AFX_MANAGE_STATE(AfxGetStaticModuleState())的一次旅行~
AFX_MANAGE_STATE(AfxGetStaticModuleState()); 宏定义如下#define AFX_MANAGE_STATE_NO_INIT_MANAGED(p) AFX_MAINTAIN_STATE2 _ctlState(p);#defineAFX_MA原创 2011-07-29 12:02:01 · 2912 阅读 · 2 评论 -
MFC控件自绘的两个方法
1.继承父类在DrawItem或者其他绘制中进行简单的界面修改,注意要勾选上自绘按钮 分为三种: DrawItem OnPaint OnCustomerDraw2.子类化控件,原理就是利用API的setWindowLong,替代控件的绘制过程~原创 2011-08-24 17:37:07 · 739 阅读 · 0 评论 -
MFC 消息类型
1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xxx。 3、控件消息(WM_NOTIFY) 控件向其父转载 2011-08-30 10:50:33 · 553 阅读 · 0 评论 -
根据位图的ID将其显示在桌面~(MFC)
最近圣诞快来了,看到很多小程序比如什么圣诞快乐,然后在桌面显示雪花~~很不错的程序,逆向了两下源码。。不过后面想想算了,里面的实现细节也不复杂,自己动手下~关键的两个东西:第一个对话框窗体的隐藏--直接根据我上一篇转载的方法,在初始化过程中加入SetWindowPos(&wndTop,0,0,0,0,NULL);第二个是在桌面显示图片~代码如下:void CTryDlg::原创 2011-12-21 21:28:02 · 1278 阅读 · 0 评论 -
VC基于对话框,文档程序启动时隐藏窗口总结
想让对话框程序隐藏启动,然后需要时又可以显示。刚开始我也想到在OnInitDialog()中加上ShowWindow(SW_HIDE),其实这样是不行的,不信自己去试验找了网上的方法,都没有满足我的要求,自己总结了一个比较满意的方法。定义一个bool b_show;//决定是否隐藏b_show=false;//默认隐藏可以在对话框中重载虚函数DefWindowProc()。转载 2011-12-21 17:57:08 · 835 阅读 · 0 评论 -
MFC中设置静态文本的字体颜色、背景透明以及解决字体重叠
原创:qsycn 改变static的颜色和设为背景透明可以在父窗口的WM_CTLCOLOR中实现(即HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor))将static设为背景透明时,改变该控件的文本将会出现文字重叠的现象。 其实设置为透明背景也就是在static重画背景时返回一个空的刷子而已,所以你转载 2013-07-23 10:16:30 · 1203 阅读 · 0 评论 -
如何在工作线程中创建窗口?
在前面我们研究了使用AFX_MANAGE_STATE(AfxGetStaticModuleState())进行DLL间的资源切换,以及工作线程中创建Windows消息循环的原理,以为就可以搞定一切类似问题了…但是请看以下代码 DWORD CTestMFCDlg::ThreadF转载 2011-07-29 14:08:01 · 879 阅读 · 0 评论 -
从AFX_MANAGE_STATE(GetStaticModuleState())说起
以前写MFC的DLL的时候,总会在自动生成的代码框架里看到提示,需要在每一个输出的函数开始添加上AFX_MANAGE_STATE(GetStaticModuleState())。一直不明白这样做的含义,也一直没有这样做,而且代码也工作得好好的,所以感觉这好像一句废话。最近的项目中转载 2011-07-29 12:06:46 · 1100 阅读 · 0 评论 -
ADO操作access数据库的问题~~
<br />sql="select * from Img where FileName='"+FileName+"'";<br /> _bstr_t tempS(sql);<br /> m_pRecordset3->Open((LPTSTR)(LPCTSTR)sql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);<br /> //m_pRecordset3=m_pConnec原创 2011-04-09 01:16:00 · 637 阅读 · 0 评论 -
对于CFile的不满~
<br />CFile不提供文件操作API的SetEndOfFile的方法,SetLength好像无法达到一样的效果,而这个函数有时候却是必须的~~·原创 2011-05-30 20:29:00 · 572 阅读 · 0 评论 -
最近写的一个图标互换工具(技术+部分源码)
<br />主要是两个技术,一个是在两个exe中搜索相同图标大小的资源进行替换。如果找不到相同的资源,用UpdateResource()函数添加新的资源到各自图标中·~<br />给力代码:<br />bool PEHelp::GetPos(CString path,DWORD *pos,DWORD *size,DWORD& Num)<br />{<br /> IMAGE_DOS_HEADER dosHead;<br /> _IMAGE_NT_HEADERS ntHead;<br /> _IMAGE_SEC原创 2011-05-27 15:59:00 · 963 阅读 · 0 评论 -
一种保持VC对话框布局的简便方法
<br />在窗口可缩放的VC应用程序中,在缩放时保持窗口的布局很重要。网上有很多复杂的布局控制代码可供参考。有些代码很强大,但如果你的窗口只是个简单的对话框,也许可以试试本文的方法。这个方法够简单。<br /> 别去管那些锚点、对齐之类的词汇了,强大的功能在某种程度上也意味着更多的代码。简单地记住当前的窗口布局,然后按比例缩放这些控件。这样的方法在很多应用中,效果也非常不错。<br /> 本着更简单的精神,我没有定义一个基类来让你继承,也没有类让你使用,甚至没有写一个函数。我写了三个宏!<br /> <b转载 2011-04-15 17:18:00 · 716 阅读 · 0 评论 -
深度剖析消息反射机制
摘要: 在前面我们分析了控件通知消息WM_NOTIFY,和WM_NOTIFY紧密联系的还有一个MFC新特性:消息反射。本文中,我想就这个问题作一个全面的论述,如果有错误,还望各路大虾批评指正。 什么是消息反射? 在windows里面,子控件经常向父控件发送消息,例如很多子控件要绘制自己的背景,就可能向父窗口发送消息WM_CTLCOLOR。对于从子控件发来的消息,父控件有可能在处理转载 2011-06-25 22:07:00 · 640 阅读 · 0 评论 -
VC ADO "IDispatch error #3092"
IDispatch error #3092在采用ADO访问ACCESS数据库的时候,出现IDispatch error #3092错误的原因之一是在SQL语句中使用了保留关键字。比如:如果表的名称为User 则会出现该错误。例如:success : insert into Acc_Record(loginname,[password]) values (abc,123)err转载 2011-07-02 15:51:16 · 3167 阅读 · 3 评论 -
简单看AfxOleInit()的内部工作~~
_AFX_THREAD_STATE* pState = AfxGetThreadState(); ASSERT(!pState->m_bNeedTerm); // calling it twice? if (afxContextIsDLL) { pState->m_bNe原创 2011-07-14 11:16:49 · 3980 阅读 · 0 评论 -
VC6.0移植到VS2008后的错误总结
最近由于要在SISCO的MMS库基础上开发,需将开发平台由VC6.0升级至VS2008,所以需要将原有的项目迁移,免不了碰到移植上的一些问题,特将它们归纳如下:1 消息映射VS2008对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2008下编译不通过a. ON转载 2011-07-25 10:25:30 · 1127 阅读 · 0 评论