上一页 1 2 3 4 5 6 7 ··· 14 下一页
摘要: 1、基础知识介绍 使用mfc的道友,应该很清楚,在mfc程序中创建多线程时,应该调用mfc中为我们设计好的线程接口函数AfxBeginThread(),原因是这个接口为我们做好了mfc函数和数据的初始化工作,如果你的mfc多线程中不使用任何mfc函数或数据,你也可以不用此函数来创建多线程。好了,进入正题,我来介绍一下用AfxBeginThread()创建worker线程和UI线程的两种调用方式。 用户界面线程和工作者线程都是由AfxBeginThread创建的。MFC提供了两个重载版的AfxBeginThread,一个用于工作者线程,另一个用于用户界面线程,分别有如下的原型和过程:工作者线.. 阅读全文
posted @ 2013-11-05 15:10 陳さん様 阅读(468) 评论(0) 推荐(0)
摘要: 1、用Picture控件显示图片1、首先添加Picture控件,ID为IDC_IMG_BTM2、定义 CBitmap* m_pBitmap;3、导入图片,并定义ID为IDB_TEST_IMG4、动态加载代码如下:CStatic* pImage = (CStatic*)GetDlgItem(IDC_IMG_BTM);m_pBitmap = new CBitmap;m_pBitmap->LoadBitmap(IDB_TEST_IMG); pImage->SetBitmap(HBITMAP(*m_pBitmap));5、最后别忘了delete m_pBitmap指针。示例(可更改图片大小 阅读全文
posted @ 2013-11-05 15:07 陳さん様 阅读(231) 评论(0) 推荐(0)
摘要: 1、获取本程序的运行目录1 TCHAR AppPathName[MAX_PATH];2 HINSTANCE hwnd = AfxGetAppModuleState()->m_hCurrentInstanceHandle;3 GetModuleFileName(hwnd,AppPathName,MAX_PATH); 4 CString strModulePath(AppPathName);5 int nBinPos=strModulePath.ReverseFind(_T('\\'));6 if(nBinPos!=-1)7 strModulePath = strModule 阅读全文
posted @ 2013-11-05 13:18 陳さん様 阅读(139) 评论(0) 推荐(0)
摘要: GetClientRect的CRect是相对它的窗口的客户区的原点而言的,即它的左上角坐标总是(0,0),大小总是客户区的长宽。GetWindowRect得到的CRect则是相对于屏幕坐标而言的,它的左上角坐标就是窗口在屏幕上的左上角坐标,它的大小就是整个窗口的大小。ClientToScreen,可以把一个CPoint对象或CRect对象的坐标从客户区坐标系(以客户区左上角为原点)变换为屏幕坐标系(以屏幕左上角为原点)。如:// 把对话框的大小变成客户区的大小void CAboutDlg::OnButton1(){CRect myRect;GetClientRect(&myRect); 阅读全文
posted @ 2013-11-05 12:57 陳さん様 阅读(120) 评论(0) 推荐(0)
摘要: 将BMP转换成ICON图标方法一、HICON HICONFromCBitmap( CBitmap& bitmap){ BITMAP bmp; bitmap.GetBitmap(&bmp); HBITMAP hbmMask = ::CreateCompatibleBitmap(::GetDC(NULL), bmp.bmWidth, bmp.bmHeight); ICONINFO ii = {0}; ii.fIcon = TRUE; ii.hbmColor = bitmap; ii.hbmMask = hbmMask; HICON hIcon = ::CreateIconIndir 阅读全文
posted @ 2013-11-05 12:18 陳さん様 阅读(790) 评论(0) 推荐(0)
摘要: 1,回调函数工作机制回调函数由操作系统自动调用,回调函数的返回值当然也是返回给操作系统了。2,截获操作系统发出的消息,截获到后,将另外一个消息返回给操作系统,已达到欺骗操作系统的目的。下面还是以具体例子来说明比较好。在 Windows下,每一个鼠标消息都是由 WM_NCHITTEST 消息产生的,这个消息的参数包含了鼠标位置的信息。通常情况下,要把这个消息直接交给 DefWindowProc 函数处理,该函数会返回一个值来告诉 Windows 鼠标按下的是窗口的哪一部分。Windows 利用这个返回值来决定要发送的鼠标消息的类型。例如,如果用鼠标左键单击窗口的标题栏,处理WM_NCHITTES 阅读全文
posted @ 2013-11-01 15:42 陳さん様 阅读(185) 评论(0) 推荐(0)
摘要: 界面美化摘要本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:1.大致了解MFC框架的基本运作原理;2.熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;3.熟悉OOP理论和技术;本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。正文1. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 阅读全文
posted @ 2013-11-01 15:38 陳さん様 阅读(1764) 评论(0) 推荐(0)
摘要: [改变对话框的大小]#define GROUPBOX_STARTID 80001 Code:2 CRect CurrentRect; 3 GetWindowRect(&CurrentRect) // 得到当前对话框的大小4 5 CurrentRect.bottom += groupbox_rect.Height()+20; 6 MoveWindow(&CurrentRect,TRUE); //改变大小,TRUE是改变大小之后刷新 [动态添加控件]以GroupBox为例,首先需要new一个CButton,然后调用其Create函数,注意这里的Create中的CRect参数,如果是 阅读全文
posted @ 2013-11-01 12:32 陳さん様 阅读(180) 评论(0) 推荐(0)
摘要: map容器的循环删除一直是一个容易出问题的地方,在删除成功之后iterator会自动往下移。未避免涉及到这些容易混淆的问题,在删除之前先用一个Iterator来记录其下一个元素。如下:Code://removeextrawindowsvideo_wnd_map_t::iteratorit=m_video_wnd_map.begin();while(it!=m_video_wnd_map.end()){video_wnd_map_t::iteratorit_next=it;++it_next;if(config_map.find(it->first)==config_map.end()){ 阅读全文
posted @ 2013-11-01 11:13 陳さん様 阅读(142) 评论(0) 推荐(0)
摘要: Map容器[转载]http://blog.csdn.net/sun_top/archive/2009/05/1**193533.aspxmap类定义了一个关联容器,并且在容器中使用唯一的关键字来映射相应的值。例如: A 0 B 1 C 2从本质上来说,关键字就是值的名字。在map对象中存储了一个值之后,就可以通过关键字来获得它。map对象是一系列关键字/值的匹配对。map的主要功能在于:只有你知道了一个值的关键字,就能够找到这个值。 例如: 定义一个map对象m,在该对象中使用人名作为关键字,并将每个人的电话号码存储为值。那么可以使用 m[“张三”] 表示张三的电话号码。从前面的例子可以看出m 阅读全文
posted @ 2013-11-01 11:09 陳さん様 阅读(128) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 14 下一页