随笔分类 - MFC
摘要:UpdateData() MFC的窗口函数,下面是MSDN的说明; Call this member function to initialize data in a dialog box, or to retrieve and validate dialog data.BOOL UpdateData(BOOL bSaveAndValidate = TRUE );ParametersbSaveAndValidate Flag that indicates whether dialog box is being initialized (FALSE)or data is being retrie
阅读全文
摘要:下面实例是在退出程序点击退出按钮时,在主程序的根目录下生成一个Log记录,用来记录程序的退出时间,具体实现代码与调试代码如下:void CDebugDlg::OnClose(){// TODO: 在此添加消息处理程序代码和/或调用默认值CFile file;CTime time=CTime::GetCurrentTime();CString str1="记录系统退出时间为:";CString str2=time.Format("%y-%m-%d %H:%M:%S");CString str3=" \r\n";unsigned char
阅读全文
摘要:1、创建对话框程序,导入8个图标资源。2、在对话框头文件中声明变量,代码如下:CToolBarm_ToolBar;CImageListm_ImageList;CStringm_TipText;3、在对话框中oninitdialg函数中创建工具栏,如下://创建图像列表m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);//向图像列表中添加图标m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2
阅读全文
摘要:一、工具栏工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。CButton类的Create成员函数可以创建一个按钮控件,这个函数的格式如下:BOOL CButton::Create(LPCTSTR lpszCaption,//按钮显示的文本DWORD dwStyle,//按钮样式const RECT& rect,//按钮控件显示的区域(大小)相对于父窗口CWnd* pPare
阅读全文
摘要:MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。 点击模态对话框中的OK按钮,模态对话框会被销毁。创建一个模态对话框的代码:[cpp] view plaincopyprint?//创建一个模态对话框 CTestDialogtd;td.DoModal(); //创建一个模态对话框 CTestDialog td; td.DoModal(); 其中CTest..
阅读全文
摘要:VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好.一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond(){Sleep(6000); //延时6秒} 编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消息。为了更好地处理这种耗时的操作,我们有..
阅读全文
摘要:MFC下DLL编程(图解)DLL(Dynamic Link Library,动态链接库)是微软公司为Windows和OS/2操作系统设计一种供应用程序在运行时调用的共享函数库。DLL是应用程序的一种扩展,也是软件共享和重用的传统方法。DLL除了可同时被多个应用程序共享外,还可以在不改变调用接口(从而不需修改使用它的应用程序)的情况下,改进和升级里面的库函数。而且DLL与编写它的语言无关,例如,用VC生成的规则DLL,可以被VB、Delphi等生成的应用程序使用。DLL可以用多种语言和工具编写,我们这里只介绍如何使用MFC来编写和使用DLL。相关说明文档位于MSDN帮助的“目录\开发工具和语言\
阅读全文
摘要:INI文件的写入与读取[节名] '[]中的节名对应此API的第一参数Name=内容 'Nmae对应此API的第二参数API的第三参数是没有取到匹配内容时返回的字符串;API的第四参数是要返回的字符串;API的第五参数是字符串缓冲的长度,一般255;API的第六参数是INI文件的路径。GetPrivateProfileString("节名","Name","没有获得匹配",s,len(s),你那ini的路径);--------------------------------------------------------
阅读全文
摘要:ShellExecute(NULL,"open","http://www.sina.com.cn",NULL,NULL,SW_SHOWNORMAL);//ShellExecute(NULL,"open","C:\\Documents and Settings\\Administrator\\桌面\\xq1\\TestChess0.exe",NULL,NULL,SW_SHOWNORMAL);还可以使用一个ShellExecuteEx的函数,在那里可以设置工作目录路径工作中曾经有同事使用了 ShellExecute但是
阅读全文
摘要:用CTime类得到当前日期、时间、星期,格式化(详细讲解)2009/05/12 09:48 A.M.① 定义一个CTime类对象 CTime time;② 得到当前时间 time = CTime::GetCurrentTime();③ GetYear( ),GetMonth( ), GetDay( ), GetHour( ), GetMinute( ), GetSecond( ), GetDayOfWeek( ) 返回整型(int)对应项目④ 将当前时间格式化 CString date = time.Format("%Y-%m-%d %H:%M:%S %W-%A");说明:
阅读全文
摘要:OutPutDebugString()函数的输出则可以用DebugView捕获(DebugView也可以捕获TRACE宏的输出)eg:OutPutDebugString("输出第一调试信息");备注: 先启动了debugview 然后按F5运行我的代码。在开发环境里调试貌似是不行的。你可以编译了你的程序以后,直接运行你的程序,就好了,不要在开发环境里调试运行。要是想在开发环境里看调试信息,在开发环境底部的 "输出"标签就可以看得到(VC),之所以DebugView看不到消息,应该是被开发环境截取了。
阅读全文
摘要:方法一:1、声明成员变量CBrush m_brush;2、在InitDialog中添加代码:?CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是图片资源IDm_brush.CreatePatternBrush(&bmp);3、重载对话框的OnCtlColor,改最后的返回值:?1return(HBRUSH)m_brush;方法二:把下面这段代码加进OnPaint()里就行了?CPaintDC dc(this);CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITM
阅读全文
摘要:如果我们想实现在MFC对话框中添加状态栏显示,如何例如分状态栏为两列,第一列显示鼠标的当前位置,第二列显示当前的时间,(如上图)。1. 首先,打开在资源视图的String Table并添加两个ID:ID_INDICATOR_NISH 和ID_INDICATOR_TIME,如下图2. 在该对话框的头文件中添加一个CStatusBar类对象CStatusBar m_bar;3. 打开该对话框的cpp文件,并在最顶端添加以下代码:static UINT BASED_CODE indicators[]={ ID_INDICATOR_NISH, ID_INDICATOR_TIME};4. 接...
阅读全文
摘要:很多人在做MFC界面的时候想要给对话框加入背景图片,很多人都会想到在OnPaint()里面来加一段代码来实现,其实这样做并不怎么科学,因为它会导致窗口不断重绘,在很多项目中窗口会闪烁(比如带播放视频的一个对话框);下面的方法我感觉更为合理。先载入一张图片,ID为IDB_BITMAP2TestDlg.h中:CBrushm_brBk;//在public中定义TestDlg.cpp中:在初始化函数OnInitDialog()中加入:BOOLCTestDlg::OnInitDialog(){CDialog::OnInitDialog();CBitmapbmp;bmp.LoadBitmap(IDB_BI
阅读全文
摘要:将一个bmp图片添加到资源中在资源视图中更改位图资源的ID为IDB_BITMAP_BACKGROUND。第一种方法:在Dialog中添加一个Picture Control控件,将Picture Control控件的Type属性更改为Bitmap。设置Image属性为IDB_BITMAP_BACKGROUND。这样图片自动加载到窗口中。第二种方法:添加消息函数OnEraseBkgnd在BOOL 类名::OnEraseBkgnd(CDC* pDC)函数中添加如下代码BOOL 类名::OnEraseBkgnd(CDC* pDC){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CRec
阅读全文
摘要:SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE); 表示不考虑(0,0),仅仅将大小改为200x300,位置不变 SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE); 表示不考虑200X300,只是把位置挪到(0,0).大小不变 如果想同时改变,最后可用SWP_NOZORDER等 参数中还有SWP_SHOWWINDOW 显示窗口 对应的SWP_HIDEWINDOW
阅读全文