« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
公告 |
本站技术贴除标明为“原创”的之外,其余均为网上转载,文中我会尽量保留原作者姓名,若有侵权请与我联系,我将第一时间做出修改。谢谢!
——既瑜 |
统计 |
blog名称:★既瑜★ 日志总数:183 评论数量:636 留言数量:-25 访问次数:1405653 建立时间:2005年3月12日 |
OICQ:215768265
njucs2001@hotmail.com
erichoo1982@gmail.com |
|
W3CHINA Blog首页 管理页面 写新日志 退出
[【技术文档】]屏蔽系统热键的方法 |
在程序开发过程中,为了满足一些特殊的需求,有时需要屏蔽系统热键。这些系统热键包括Alt+Tab、Ctrl+Alt+Del、Alt+Esc、Ctrl+Esc、Win等。由于屏蔽系统热键涉及到系统的安全,所以一般不推荐这样做,但由于存在实际的应用需求,所以作为编程人员还是要对此加以了解。本文分三种情况来讨论屏蔽系统热键的方法。
在Windows 95/98操作系统下
在Windows
|
阅读全文(3803) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]仅通过崩溃地址找出源代码的出错行 |
作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃!
“该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自己的机器上运行得好好的,但是到了别人的机器上就崩溃了;有时自己在编写和测试的过程中就莫名其妙地遇到了非法操作,但是却无法确定到底是源代码中的哪行引起的……是不是很痛苦呢?不要紧,本文可以帮助你走出这种困境,甚至你从此之后可以自豪地要求用户把崩溃地址告诉你,然后你就可以精确地定位到源代码中出错的那行了。(很神奇吧?呵呵。)
首先我必须强调的是,本方法可以在目前市面上任意一款编译器上面使用。但是我只熟悉 M$ 的 VC 和 MASM ,因此后面的部分只介绍如何在这两个编译器中实现,请读者自行融会贯
|
阅读全文(3559) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]深入了解MFC中的文挡/视结构 |
作者:李泽宇 金刚 熊联欢 姜军 eNet学院
Visual C++ 6.0 以其功能强大、用户界面友好而倍受程序员们的青睐。但是,在当前的M icrosoft 基本类库4.2 版本中,大约有将近200 个类,数千个函数,加之Microsoft 公司 隐藏了一些技术细节,使得人们深入学习MFC变得十分困难。
MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用、单文档应用(SD I)和多文档应用(MDI)。前两者的结构较简单,本文不再赘叙。笔者拟从MFC中的文档/ 视结构入手,分析一些函数的流程,并解决编制MDI 应用程序过程中的一些常见问题。
(一)、了解文档/视结构
MFC应用程序模型历经多年以有了相当大的发展。有一个时期,它只是个使用应用程序 对象和主窗口对象的简单模型。在这个模型中,应用程序的数据作为成
|
阅读全文(3932) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]VC中的一些常用方法(20条) |
VC中的一些常用方法
//一、打开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(&OsVersionInfo); //获取操作系统版本信息 if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
|
阅读全文(3264) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]MFC界面包装类(多线程时成员函数调用的断言失败) |
经常在论坛上看到如下的问题: DWORD WINAPI ThreadProc( void *pData ) // 线程函数(比如用于从COM口获取数据) { // 数据获取循环 // 数据获得后放在变量i中 CAbcDialog *pDialog = reinterpret_cast< CAbcDialog* >( pData ); ASSERT( pDialog ); // 此处如果ASSERT_VALID( pDialog )将断言失败 pDialog->m_Data = i; pDialog->UpdateData( FALSE ); // UpdateData内部ASSERT_VALID( this )
|
阅读全文(3269) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]用Visual C++打造IE浏览器(3) |
二、实现收藏菜单
一般IE的用户都有个习惯,那就是将自己喜欢的网址保存起来,以方便今后快速的登陆,为了使我们的浏览器能够显示IE收藏过的网址,程序中设置了一个"Favorites"菜单,通过RegOpenKey()、RegQueryValueEx()等函数操作Windows的注册表中的HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders项,将收藏的网址显示到菜单上。为此,笔者定义了两个函数,实现代码如下所示:
TCHAR GetDir( ) //得到存放
|
阅读全文(3042) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]用Visual C++打造IE浏览器(2) |
(2)工具条上的下拉菜单 当用户点击按钮上的下拉箭头时,将出现相应的菜单,为了实现这个功能,手下需要在CMainFrame.cpp文件的消息映射中添加消息映射:ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDown);在CmainFrame.h文件中添加消息映射函数声明:afx_msg void OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult);最后添加下面的代码:
void CMainFrame::OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult) { NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct; CRect rect; // 得到下拉箭头的位置; m_wndToolBar.GetToolBarCtrl().Ge
|
阅读全文(4873) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]用Visual C++打造IE浏览器(1) |
前言
IE浏览器作为微软Windows系统捆绑销售的一个浏览工具,用来浏览千姿百态的网页,目前它已经占据了浏览器市场的半壁江山,成为Windows用户不可或缺的工具。首先,它的界面设计的很漂亮,如扁平按纽(按钮上的图像为灰色,当鼠标放在按钮上时,按钮突起,这种状态称为手柄,并且其上的图像变得鲜艳醒目)、按钮上的文字说明以及按钮边上的小黑三角形状的下拉箭头(单击时显示下拉菜单)、工具条上的地址输入栏等,都体现了Windows2000的风格;其次,它的收藏栏可以收藏用户喜爱的网络地址,这一切都为IE的流行打下了坚实的基础。说了那么多,也许读者朋友们感觉到IE实现起来一定非常困难,其实IE也是个"纸老虎",实现它的难点主要是在界面效果和显示收藏夹上,笔者在本文中有针对性的叙述了IE界面、收藏网页的显示、网页的浏览等功能的实现,仔细看过这篇文章后,相信读者朋友们一定可以打造出一个属于自己的浏览器。本文中的代码在Windows2000、Visual C++6.0环境下编译通过,程
|
阅读全文(3357) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]怎样在VC++中访问、修改注册表 |
Windows95/98/Me的注册表包含了Windows95/98/Me的系统配置、PC机的硬件配置、Win32应用程序和用户的其他设置信息。注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键),每个分支又由许多的键和键值组成,而每个键则代表一个特定的配置项目。 在实际编程工作中,我们遇到了如何在Visual C++中对Windows95/98/Me注册表整个树状结构信息进行访问和修改的问题,如查询和修改注册表中用户姓名和公司名称的有关信息。通过编程实践,我们实现了在Visual C++中查询和修改系统注册表的有关信息。下面以一个实例说明具体的编程方法。 在Visual C++ 6.0或5.0环境中新建一基于对话框的工程,设置了两个命令按钮,名为“查询用户信息”和“修改用户信息”,用来查询和修改注册表中用户姓名和公司名称。这里须要指出的是,用户的信息位于系统注册表中 \HKEY_LOCAL_MACHINE\Software\Microsoft\Wind
|
阅读全文(3213) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]非法探取密码的原理及其防范 |
一、非法获取Password的原理: Edit控件是Windows的一个标准控件,当把其Password属性设为True时,就会将输入的内容屏蔽为星号,从而达到保护的目的。虽然我们看来都是星号,但程序中的Edit控件实际仍是用户输入的密码,应用程序可以获取该控件中的密码,其他应用程序也可以通过向其发送WM_GETTEXT或EM_GETLINE消息来获取Edit控件中的内容。黑客程序正是利用Edit控件的这个特性,当发现当前探测的窗口是Edit控件并且具有ES_PASSWORD属性时,则通过SendMessage向此窗口发送WM_GETTEXT或EM_GETLINE消息,这样Edit框中的内容就一目了然了。
二、黑客软件工作方法: 首先要取得当前的窗口,并判断是否是Edit控件,一般多通过鼠标来指定要探测的窗口,例如在WM_MOUSEMOVE消息的响应函数中进行判断
|
阅读全文(1774) | 回复(0) | 编辑 | 精华 | 删除 |
|