摘要: 这次我们将会带大家再次回顾一下VC的常用知识,包括得到系统时间日期(使用GetLocalTime)、分离字串等。 1: 得到系统时间日期(使用GetLocalTime) CString sTime,sYear,sMonth,sDay; SYSTEMTIME CurTime; GetLocalTime(&CurTime); sYear.Format("%d年",CurTime.wYear); sMonth.Format("%d月",CurTime.wMonth); sDay.Format("%d日",CurTime.wDay); 阅读全文
posted @ 2013-01-16 03:08 _** 阅读(233) 评论(0) 推荐(0) 编辑
摘要: (1) 如何通过代码获得应用程序主窗口的 指针? 主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化. (2) 确定应用程序的路径 Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。 Example: TCHAR exeFullPath[MAX_PATH] // MAX_PATH在API中定义了吧,好象是 128 GetModuleFileName(NULL,exeFullPa... 阅读全文
posted @ 2013-01-16 03:05 _** 阅读(238) 评论(0) 推荐(0) 编辑
摘要: VC调试入门概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的 Configuration中增加调试信息 阅读全文
posted @ 2013-01-16 03:03 _** 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 何为指针? 指针基本上和其它的变量一样,唯一的一点不同就是指针并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将指针作为它们的设计基础,例如链表。 开始 如何定义一个指针?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的指针: int* pNumberOne; int* pNumberTwo; 注意到变量名的前缀“p”了吗?这是编写代码的一个习惯,用来表示这个变量是一个指针。 现在,让我们把这些指针指向一些实际的值吧: pNumberOne =... 阅读全文
posted @ 2013-01-16 03:03 _** 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1.2 消息和消息循环在Windows系列操作系统中,广泛使用了消息驱动的概念。在MiniGUI中,我们也使用了消息驱动作为应用程序的创建构架。在消息驱动的应用程序中,计算机外设发生的事件,例如键盘键的敲击、鼠标键的按击等,都由支持系统收集,将其以事先的约定格式翻译为特定的消息。应用程序一般包含有自己的消息队列,系统将消息发送到应用程序的消息队列中。应用程序可以建立一个循环,在这个循环中读取消息并处理消息,一直处理到特定的消息传来为止。这样的循环称为消息循环。一般地,消息由代表消息的一个整型数和消息的附加参数组成。例如,鼠标左键的按下消息,可能由133这个数来表示,其附加参数可能包含按下时的鼠 阅读全文
posted @ 2013-01-16 03:01 _** 阅读(4326) 评论(0) 推荐(0) 编辑
摘要: WM_COMMAND 消息控制函数映射入口 函数原型ON_COMMAND(<ID>,<FUN> ) afx_msg void FUN();ON_COMMAND_EX(<ID>,<FUN> ) afx_msg bool FUN(UINT);子窗口通知消息控制函数映射入口 函数原型一般的控制通知代码ON_CONTROL(<WNotifyCode>,<ID>,<FUN> ) afx_msg void FUN();ON_NOTIFY(<WNotifyCode>,<ID>,<FUN> 阅读全文
posted @ 2013-01-16 03:01 _** 阅读(910) 评论(0) 推荐(0) 编辑
摘要: 消息映射的实现Windows消息概述Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口。这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows。消息的分类队列消息和非队列消息从消息的发送途径上看,消息分两种:队列消息和非队列消息。队列消息送到系统消息队列,然后到线程消息队列;非队列消息直接送给目的窗口过程。这里,对消息队列阐述如下:Windows维护一个系统消息队列(System message queue),每个GUI线程有一个线程消息队列(Thread message queue)。鼠标、键盘事件由鼠标或键盘驱动程序转换成输入消息并把消息放进系统 阅读全文
posted @ 2013-01-16 02:59 _** 阅读(1705) 评论(0) 推荐(0) 编辑
摘要: 一、概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。 程序中只要按一定的格式填写系统留给客户的那一小部分。 所需要完成的有: 窗口类的定义、窗口的建立、消息函数的书写、消息循环。二、消息处理函数 Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。没个窗口都有一个消息处理函数。 在消息处理函数中,对传入的消息进行处理。系统内还有它自己的缺省消息处理函数。 客户写一个消息处理函数,在窗口建立前,将消息处理函数与窗口关联。这样,每当有消息产生时,就会去调用这个消息处理函数。 通常情况下,客户都不会处理... 阅读全文
posted @ 2013-01-16 02:57 _** 阅读(494) 评论(0) 推荐(0) 编辑
摘要: 当我们使用着漂亮的界面,方便快捷的应用程序的时候。我们才会发现,以前曾编写的程序是多么的粗糙(TC编写的程序)。简单的界面,16色的显示系统,大大的落后于计算机的发展。简单的说就是杀鸡用牛刀。如何该改变这种情况呢?Microsoft公司在推出windows操作系统的时候给出了简单易行的解决方案。这就是WINDOWS平台API应用程序接口。当然API也是发展的,它从WIN 16 API发展到了现在普遍使用的WIN 32 API。只有充分理解API函数功能和用法,才能深入到WINDOWS系统的内部,才能充分挖掘出操作系统给我们提供的强大功能。现在就让我们放弃那DOS应用程序,进入WINDOWS编程 阅读全文
posted @ 2013-01-16 02:55 _** 阅读(432) 评论(0) 推荐(0) 编辑
摘要: C程序优化 - I/O篇liyuming1978(原作) 如果有文件读写的话,那么对文件的访问将是影响程序运行速度的一大因素。提高文件访问速度的主要办法有两个:一是采用内存映射文件,二是使用内存缓冲。下面是一组测试数据(见《UNIX环境高级编程》3.9节),显示了用18种不同的缓存长度,读1,468 ,802字节文件所得到的结果。缓冲大小用户CPU(秒)系统CPU(秒)时钟时间(秒)循环次数(秒)123.8397.9423.41 468 802212.3202.0215.2734 40146.1100.6107.2367 20183.050.754.0183 601161.525.327.0. 阅读全文
posted @ 2013-01-16 02:40 _** 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVersionI 阅读全文
posted @ 2013-01-16 02:38 _** 阅读(282) 评论(0) 推荐(0) 编辑
摘要: GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。 在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。GDI是如何实现输出的? 要想在屏幕或者其它输出设备上输出图形或者文字,那么我们就必须先获得一个称为设备.. 阅读全文
posted @ 2013-01-16 02:37 _** 阅读(1232) 评论(0) 推荐(0) 编辑
摘要: Afx全局函数及MFC常见数据类型AfxBeginThread:开始一个新的线程AfxEndThread:结束一个旧的线程AfxFormatString1:类似printf一般地将字符串格式化AfxFormatString2:类似printf一般地将字符串格式化AfxMessageBox:类似Windows API 函数 MessageBoxAfxOuputDebugString:将字符串输往除错装置AfxGetApp:获得application object (CwinApp派生对象)的指针AfxGetMainWnd:获得程序主窗口的指针AfxGetInstance:获得程序的instanc 阅读全文
posted @ 2013-01-16 02:35 _** 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 什么是API 首先,有必要向大家讲一讲,什么是API。所谓API本来是为C和C++程序员写的。API说来说去,就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出的运行在Windows95和Windows NT操作系统上的应用程序。可以说,如果你曾经学过VC,那么API对你来说不是什么问题。但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉,那么可以说,学习API将是一件很辛苦的事情。 如果你打开WINDOWS的SYSTEM文 阅读全文
posted @ 2013-01-16 02:34 _** 阅读(502) 评论(0) 推荐(0) 编辑
摘要: 1 MFC概述顾名思意,MFC应用程序框架是以MFC作为框架基础的,以此程序框架模式搭建起来的应用程序在程序结构组织上是完全不同于以前的Win32 SDK编程方式的。自20世纪90年代初问世以来,MFC一直试图把Windows API函数封装到类库中个各个逻辑类中。MFC的这种封装并非简单地对API函数进行分组与打包,而是更多地通过类来试图实现全部的系统策略。随着越来越多系统功能的加入,MFC的规模也在不断拓展,目前已包括有200多个类,涵盖了通用Windows 类、文档/视框架、OLE、数据库、Internet以及分布式功能等多方面的基本内容。这样一个坚实的程序开发基础无疑从很大程度上方便了 阅读全文
posted @ 2013-01-16 02:33 _** 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 微软基础类库(MFC:Microsoft Foundation Class)是微软为Windows程序员提供的一个面向对象的Windows编程接口,它大大简化了Windows编程工作。使用MFC类库的好处是:首先,MFC提供了一个标准化的结构,这样开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是“站在巨人肩膀上”,从一个比较高的起点编程,故节省了大量的时间;其次,它提供了大量的代码,指导用户编程时实现某些技术和功能。MFC库充分利用了Microsoft开发人员多年开发Windows程序的经验,并可以将这些经验融入到你自己开发的应用程序中去。对用户来说,用MFC开发的 阅读全文
posted @ 2013-01-16 02:31 _** 阅读(295) 评论(0) 推荐(0) 编辑