浅析C语言创建资源管理器的方法与技巧

来源 :数字化用户 | 被引量 : 0次 | 上传用户:fox_pop
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】在windows操作系统使用过程中,经常要使用资源管理器以实现对文件的各种操作,本文详细阐述了如何用c语言调用Win32API创建类似资源管理器的方法,内容涉及到自定义窗口的实现,windows消息处理,窗口重绘,托盘区的操作,多标签的实现原理等多方面的编程问题,在实现过程中,不仅可以接触到windows底层的相关技术,而且对算法基础和数据结构也进行了深入的探讨和研究。
  【关键词】c语言;Win32API;资源管理器
  在windows操作系统下,有很多非常优秀的资源管理器软件,它们不仅能让用户有良好的交互体验,而且能快速高效的对文件进行相应的操作。用C语言开发资源管理器软件,不仅可以提高C语言的编程能力,而且能够深入理解操作系统的核心,对于计算机编程和教学无疑是一种极大的促进。
  一、开发资源管理器的目的
  资源管理器的目的是为了高效方便的实现对文件的打开,删除,复制,粘贴等功能,然而对于windows自带的资源管理器,有很多不便之处,于是,市面上出现了很多增强版的资源管理器软件,实现了很多特性,可以有效的提高操作效率。开发本资源管理器的目的也在于此:高效而便捷的操作,提升用户体验。为了实现这个目的,就要了解目前的常用资源管理器类软件的优劣,针对性的开发出特色性的功能,以满足个性化的需求。
  二、本资源管理器实现的特性
  1.纯键盘操作。鼠标的操作在文件管理过程中,经常是低效率的,不论是窗口的开关、移动,还是文件的选择,都需要频繁的移动和点击,这也是导致“鼠标手”的一个原因。通过键盘输入,不仅可以通过软件提供的相关特性,实现相关操作,而且简单高效。
  2.边输边查。在日常的应用中,频繁的目录跳转,以及文件和目录的定位是最常用的功能,然而,传统的资源管理器软件在这方面有明显的缺陷,具体表现在以下方面:首先,如果要打开多级目录下的某个文件,需要通过鼠标点击层层进入,有时如果忘记具体目录的名称,甚至要逐个目录打开查找,效率非常低下;其次,一个目录下文件过多时,要在众多文件和文件夹中找到自己所需要的目标,常常要逐个查看名称,耗时费力;最后,无法实现模糊匹配,对中文名称难以过滤,只能通过排序查找,不符合国情。鉴于以上问题,本软件实现了输入过程中自动过滤显示匹配的文件和目录。
  3.多标签。多标签是目前许多软件的一个特性,然而,传统的资源管理器却并无此功能。多标签功能可以使用户避免重复打开软件,从而简化操作。
  三、技术要点
  1.自定义样式。Win32API创建windows对话框时,首先要注册窗口类WNDCLASSEX,需要注意的是,要让窗口响应鼠标双击事件时,需要设置窗口类样式CS_DBLCLKS。在注册窗口类时,需要为其制定消息处理过程,函数原型如下:
  LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)为了要处理程序参数传递问题,在WinMain函数入口处,我们通过调用GetCommandLine()获取命令行参数,这样,就可以在命令行下指定打开的路径了。为了实现自定义样式,调用CreateWindowEx时,要特别指定窗口的扩展风格,具体如下:WS_EX_TOOLWINDOW/*不在任务栏显示*/| WS_EX_TOPMOST/*置顶*/ | WS_EX_LAYERED/*窗口透明化*/在Windows 2000/XP中,User32.dll增加了一个新函数SetLayeredWindowAttributes。要使用该函数,我们必须在生成窗口或使用SetWindowLong函数中设置窗口风格WS_EX_LAYERED (0x00080000)。该风格一旦被设置,我们就可以调用该函数来透明化窗口。具体调用过程如下:
  HMODULE hUser32 = GetModuleHandle("USER32.DLL");
  g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32, "SetLayeredWindowAttributes");
  (*g_pSetLayeredWindowAttributes)(hwnd, RGB(255,255,255), 150, 2);
  2.系统托盘区操作。系统托盘区操作主要是通过调用Shell_NotifyIcon来实现的,其函数原型如下:
  BOOL Shell_NotifyIcon(DWORD dwMessage,NOTIFYICONDATA lpdata);
  通过控制dwMessage参数值,即可控制托盘区图标的显示和删除。在消息处理过程中,WM_CREATE消息处理时,初始化NOTIFYICONDATA ,并且显示托盘区图标,在处理关闭程序消息WM_CLOSE时,及时的删除托盘区图标。为了能够处理托盘图标的点击消息,需要增加自定义消息WM_TRAYNOTIFY,在此消息处理时,可以区分鼠标左右键点击操作,并处理相应的消息。在右键点击时,我们通过创建右键菜单,可以控制程序的显示、退出等操作。
  3.多标签的实现原理。为了实现多标签,我们首先需要创建Pages标签链表,在该链表对应的节点结构体如下:
  typedef struct _Pages{
  char* path;
  int id;
  struct _Pages *next;
  } Pages;
  其中path为当前标签页对应的完整路径,在切换标签时,通过该路径可以确定当前的文件列表内容。此链表为单向链表,在创建标签时,要注意链表的插入操作,通过在删除标签页时,应及时清除内存,避免内存泄露情况的发生。切换标签页,实际上就是链表的查找过程:当切换至某个标签页时,通过链表节点中所记录的完整路径,得到当前所操作的目录,从而重绘标题栏中的标签页名称。
  4.文件列表的绘制和操作。资源管理器的重要部分就是文件列表的显示和操作,在WM_PAINT窗口重绘消息处理时, 通过标签节点所对应的路径,得到该路径下的所有文件列表信息,需要注意的是,如果路径为空,此时应显示驱动器列表,通过调用GetLogicalDriveStrings,可以得到所有驱动器字符串信息,而后可以得到每个驱动器的详细信息。在得到某个路径下的文件列表时,为了更好地区分文件和目录,目录采用粗体显示,在输入时,通过获得路径分割符\\后的字符串,来模糊匹配,过滤显示所有符合条件的文件和目录。
  通过处理WM_KEYDOWN消息,文件列表的操作可以通过键盘快速进行,方向键可以循环选中条目,回车键可以跳转目录和打开文件。
  四、结语
  本文论述了C语言创建资源管理器的方法和注意事项,分析了传统资源管理器的优劣,通过Win32Api开发了更加高效实用的软件。在此过程中,不仅提高了C语言编程水平,而且创新性的实现了Windows环境下更加高效的操作方法。在软件行业高速发展的今天,笔者认为,创新性思维是软件从业者的灵魂所在,是我们永久需要思考的话题。
  参考文献:
  [1] 赫伯特希尔特.C语言大全(第四版), 2001.09
  [2] 新编Windows API参考大全,电子工业出版社,2000.04
其他文献
【摘 要】运用齐次坐标变换建立多轴车辆空间转向杆系运动模型,结合概率理论进行转向杆系运动精度分析。基于机构运动学分析,考虑机构原理误差及构件安装误差建立空间转向杆系的误差概率模型和可靠性模型,并运用ADAMS Insight进行蒙特卡罗模拟来分析转向杆系的运动可靠性。获得更接近工程实际的结果。  【关键词】转向杆系;运动精度;运动可靠性;蒙特卡罗  引言  随着我国大型工程建设、基础设施建设的发展
期刊
【摘 要】在这个信息化的时代,各行各业都依靠着信息技术取得了快速的发展,在我国的数字化档案信息管理中也利用了现代的一些先进技术,以保障信息化档案的安全性,本文主要说明了对于数字化档案安全管理的必要性,在数字化安全管理中需要面对的一些问题以及相对应的解决方案。  【关键词】数字化档案 信息安全 问题 防范措施  为了保障数字化档案的信息安全,我们建立了数字化信息安全保障体系,对于数字化档案信息的安全
期刊
【摘 要】云计算的思想就是把力量联合起来,然后给其中的每一个成员使用。云计算的基本原理就是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。这也意味着计算能力就像我们现在使用水和电一样,取用方便,费用低廉。随着计算机行业的不断的发展,计算机行业已经走过了许多个阶段,云计算作为一种基于互联网的计算的模式,是计算机
期刊
【摘 要】太阳能硅片切割过程中,导轮是很重要的易磨损部件。切片过程中,伴随工作台的缓慢下降,钢线携带砂浆在导轮槽内高速运转,对硅块起到切割作用。导轮的涂层、槽型、槽深及角度等对切割质量起到关键作用。本文主要论述导轮对切割质量的影响。  【关键词】太阳能;硅片切割;导轮  引言  导轮是线锯机床中负责绕线的轮体,内部为钢制,外面敷设一层聚氨酯,其转动靠两端轴承及其中间穿过的丝杠动作。导轮经开槽机开槽
期刊
【摘 要】由于计算机技术的飞速发展,计算机网络的应用也越来越广泛。然而随之而来的各种病毒的困扰不断升级,研究计算机病毒的防范措施已迫在眉睫。目前,最有效的方式还是通过有效的预防,避免计算机安全问题的泛滥才是最主要的解决安全问题的方案。本文从计算机病毒的内涵、类型及特点入手,探讨对付计算机病毒的方法和措施。  【关键词】计算机安全 病毒预防 有效措施  随着互联网时代的发展,计算机已经是人们生活中不
期刊
【摘 要】近年来,雾霾天气频繁袭扰我国北方的诸多地区,特别是京津冀地区,已经成为制约北方经济发展、城市建设与生态文明建设的重要因素。治理雾霾,从根本上缓解中国当前的大气污染,已经成为中国经济社会跨越式发展的迫切需求。通过分析京津冀地区雾霾天气的现状,在充分认识雾霾天气成因及危害的基础上,提出防范与治理并重,以法律与制度建设、城市交通系统建设以及企业市民环保道德建设为重点的综合治理措施。  【关键字
期刊
【摘 要】对静强度试验与应力分析一体化技术中试验测量值与理论分析结果相关性分析评估进行重点阐述,并通过实例说明试验与应力分析一体化技术中试验与分析相关性评估过程。  【关键词】静力试验、应力分析、结构响应、相关性  一、引言  随着航空技术的发展,对飞机结构的安全性要求越来越高,新机型的研制、新结构和新材料的应用都需要进行充分的试验加以验证。  飞机结构静力试验是保证飞机结构完整性的最重要的手段之
期刊
【摘 要】本文介绍了一种利用单片机智能控制特性设计的锂/亚硫酰氯电池的激活放电电路,电路接通后,单片机系统根据电池电压的高低,对电池适时进行快速激活。  【主题词】电池 单片机 激活 电路  锂/亚硫酰氯电池具有比能量高、放电电压平稳、湿荷电贮存寿命长(5~10年)、使用温度范围宽广(可在-40℃~+60℃的温度范围内工作)、使用方便等优点。但该电池还存在电压滞后现象,电压滞后是指电池放电初期,电
期刊
【摘 要】随着信息时代的来临,计算机网络技术已经融入到社会各个层面,社会各行业不断引进网络信息设备,建立了信息化管理系统和运营系统,实现了现代化信息管理。对医院而言,信息化技术不仅用于日常信息储备和查询,对医疗、设备管理等各个方面都有重要的作用,是医院工作顺利开展的重要保障。但是由于现代网络环境的复杂多变,医院网络信息系统往往面临着极大的安全威胁,造成网络系统破坏、信息泄露等,给医院带来严重的损失
期刊
【摘 要】本文通过对典型零件的定位装夹方式、加工顺序、切削用量等的选择为例,结合数控加工的特点进行工艺分析与编程,侧重于该零件的工艺分析、加工路线的确定及用G代码编制该零件的数控加工程序,其中零件工艺规程的分析是此论文的重点。  【关键词】零件工艺规程 加工路线 程序编制  一、引言  规定工件工艺过程和操作方法等的工艺文件称工艺规程。工艺规程制定得是否合理直接影响工件的质量、生产率和经济效益。下
期刊