摘要:
CString strPath; CString oldpath; ::GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1), MAX_PATH); strPath.ReleaseBuffer(); oldpath=strPath; int nPos=strPath.ReverseFind('//'); strPath=strPath.Left(nPos); CString strFileName;//.Format("%s",strPath); strFileName.F... 阅读全文
摘要:
Windows NT/2K/XP版本的操作系统都支持NTFS格式的文件系统,这是一个有安全性质的文件系统,你可以通过Windows的资源管理器来设置对每个目录和文件的用户访问权限。这里我就不对NTFS的安全性进行讲述了,我默认你对NTFS的文件目录的安全设置有了一定的了解。在这里,我将向你介绍使用Windows的API函数来操纵NTFS的文件权限。一、 理论和术语在Windows NT/2K?XP下的对象,不一定是文件系统,还有其它的一些对象,如:进程、命名管道、打印机、网络共享、或是注册表等等,都可以设置用户访问权限。在Windows系统中,其是用一个安全描述符(Security Descr 阅读全文
摘要:
最近一直在研究windows磁盘数据恢复的技术,开始想的还挺复杂的,也找了一些相关的资料,发现有价值的太少了,外文的资料都比较少,看来不是什么太透明的技术,以下这篇还稍微有点意思。NTFS是Windows NT引入的新型文件系统,它具有许多新特性。本文旨在探索NTFS的底层结构,所叙述的也仅是文件在NTFS卷上的分布。NTFS中,卷中所有存放的数据均在一个叫$MFT的文件中,叫主文件表(Master File Table)。而$MFT则由文件记录(File Record)数组构成。File Record的大小一般是固定的,通常情况下均为1KB,这个概念相当于Linux中的inode。File 阅读全文
摘要:
记得很久前有个人让我解决这么一个事情,他的一个c动态连接库里面有个静态变量,每次调用这个方法的时候,就自动增加,他想在特定的时候,为了恢复这个静态变量的初值,动态卸了这个动态库,然后重新加载。(该动态库不能改动)c#里面要用到动态库,需要使用DllImport,但是这个是全局的东西,不能像动态load/unload assembly所使用的AppDomain的方法。这样就想到了API: LoadLibrary, GetProcAddress, 和FreeLibrary方法。[DllImport("kernel32",EntryPoint="LoadLibrary& 阅读全文
摘要:
vc 6.0建立以一个Win32 hello world 程序,代码如下//TestWin32.cpp:Definestheentrypointfortheapplication.//#include"stdafx.h"#include"resource.h"#include"dbt.h"#include"windows.h"#defineMAX_LOADSTRING100//GlobalVariables:HINSTANCEhInst;//currentinstanceTCHARszTitle[MAX_LOADS 阅读全文
摘要:
以下是很多VC爱好者的学习经历,希望对大家有所帮助: 我记得我在网上是这么说的:先学win32的SDK,也就是API, 再学MFC,这么一来呢,就先有个基础,MFC是API的封装, 如果API用的熟了,MFC上手就轻松的多了。 我觉得呢,现在不少WINDOWS编程入门的好书很多,多买一些,多看看,多想想。不要心浮气躁。我的经验就是一边看书,一边写程序,看看是不是书上说的那样。看书看明白了不行,自己做对了这个过程体会就不一样了,做的多了,就慢慢会有“悟”的感觉。就入了门了。一般从刚开始学WINDOWS编程(前提是C/C++至少要懂得C的一般常用概念)到基本熟悉,一年时间也差不多,如果在公司里,可 阅读全文
摘要:
开源在今天的软件业已经很普遍,但开源是否意味着使用者可以对开源后的代码为所欲为呢?答案是否定的.开源运动同样有自己的游戏规则和道德准则.不遵行这些规则不但损害开源运动的健康发展,也会对违规者造成名誉和市场上的损失,更可能陷入法律纠纷和赔偿. 首先,要对几个概念有所了解: 1. Contributors 和 Recipients Contributors 指的是对某个开源软件或项目提供了代码(包括最初的或者修改过的)发布的人或者实体(团队、公司、组织等),Contributors 按照参与某个软件开源的时间先后,可以分为 an initial Contributor 和 subsequen... 阅读全文
摘要:
起点-SDK和IDE的选择本文主要为学习Symbian开发的初学者讲授如何准备开发环境。对Symbian开发有兴趣、具备一定软件设计基础的朋友都可以来一起研究。需要说明的是,对于学习Symbian开发,需要有较为牢固的编程经验(这里我们暂时要求具有较好的C++程序语言设计能力),需要较好的英语基础,需要坚持不懈的精神;另外,如果你重来没有接触过VS2003,不懂DOS命令、不懂如何设置环境变量,请先学习相关知识。另外,本文的作用仅仅是总结和引导,强烈建议初学者结合本文和SDK文档动手实践本文主要针对S60的开发环境的建立,因此首先为大家列出S60系统的各种版本。因为开发者应该根据需要,选择自己 阅读全文
摘要:
这篇由提姆·奥莱理亲自执笔、创作于上个月由他主办的Web 2.0会议前夕的文章,一经发出就引发了热烈的讨论,被视为Web 2.0迄今为止的经典之作。 译者序:Web 2.0这一概念,由O'Reilly媒体公司总裁兼CEO提姆·奥莱理提出。他是美国IT业界公认的传奇式人物,是“开放源码”概念的缔造者,一直倡导开放标准,并活跃在开放源码运动的最前沿。 这篇由提姆·奥莱理亲自执笔、创作于上个月由他主办的Web 2.0会议前夕的文章,一经发出就引发了热烈的讨论,被视为Web 2.0迄今为止的经典之作。 Web2.0的一个关键原则是用户越多,服务越好 作者|提姆 阅读全文
摘要:
SymbianOS使用的是面向对象的C++,但是又和标准的C++有一些区别。比如SymbianOS没有标准的异常处理 (Exception),因为设计SymbianOS的时候还C++还没有把异常处理标准化。所以Symbian设计了自己得异常处理机制: TRAP,leave.另外就是今天要讲的基本类型。Symbian基本上不使用任何标准的C++基本类型,众所周知,不同的C++编辑器对 int,unsignedint的长度理解不同,所以SymbianOS中使用TInt8,TInt16,TInt32。但是如果你么没有很好的理由是用某一特定的长度时,要使用TInt.其他很多类型也遵守这个原则。比如以后 阅读全文
摘要:
RVCT (ARM Real View Compilation Tools) is the compiler tools provided by ARM corporation. It can generate ABI (Application Binary Interface) V1 and V2 target versions. GCCE (GNU C Compiler Embedded) is a CSL ARM ToolChain included in UIQ SDK, which only supports ABI V2.RVCT has better performance th 阅读全文
摘要:
那天摄像时背景是雪白的墙,结果解码时问题出现了。问题现象: 解码的图像在墙壁部分有很明显的方块,其它图像变化大的地方(如人脸部分)情况还好。问题分析: 以前没有这种情况的呀。改变了的只有编码速率。原来为了兼顾网络状况,我们将码率降得比较低。码率小,量化的精度就低,宏块与宏块之间的量化误差变大。当颜色变化很平缓时,这种很小的误差就变得明显了,图像上的体现就是宏块边界出现明显的颜色跳变,也就是方块。问题解决: 还好mpeg4标准考虑到了这个现象,他们提供了一种叫deblock的解码后处理方法来弱化这种现象。实际将deblock添加后图像确实平滑许多,方块也没了。deblock原理: 大概做法就是将 阅读全文
摘要:
要做程序的优化,最彻底的方法当然是汇编!还有除了汇编以外(除了二进制)能让你对你的处理器有更全面的控制吗?!对于ARM汇编,作为一个初学者,也就只好先补补基础了@_@。 首先,程序段的定义从AREA 开始,它命名一个代码区域,注意,用非阿拉伯数字作为名字时,应该用|把名字包起来,CODE关键字声明程序(猜测),readonly声明访问权限(猜测)。EXPORT 来表示某个可以用作外部连接的符号(简单点,应该就是函数名?)。END用来结尾。#eg: AREA |.text|, CODE, READONLY EXPORT square ; int square(int i)square ;armc 阅读全文
摘要:
1.arm c编译器默认char类型是8位无符号的,与其它编译器有点不同2.局部变量最好用int型,因为寄存器是32位的,如果变量不是32位的就需要额外的指令限制范围. 例如:变量i,操作i++ ,如果int i, 则只需add r1,r1,#1 如果char i,则变成add r1,r1,#1 and r1,r1,0xff.多了一条指令3.循环最好用do{}while()型的,相比for(;;)型循环每次循环可以节省3条指令4.函数参数也最好用int 型的,例如 short add(short x,short y) 编译器为了保证输入参数的是short型的会添加额外的指令,比如确保x是sh. 阅读全文
摘要:
1.加减法,逻辑操作占一个周期,目的地址是PC寄存器时增加一个周期。分支指令占3个周期。在cache命中的情况下,16位和8位的装载指令(LDRH、LDRH等)占一个周期,但紧跟的2个周期不能使用装入的数据。32位装载指令占一个周期,紧跟的一个周期不能使用装载数据。如果装载入PC,同样要增加2个周期。 LDRr1,[r2] ADD r1,r1,r3ADD r4,r4,r5 占4个周期改变次序后 LDRr1,[r2] ADD r4,r4,r5ADD r1,r1,r3占3个周期2. load指令占时间比较长,在循环中可以使用预载的方法将load与跳转指令放在一起,减少流水线的断流。例如:loop 阅读全文
摘要:
大家知道MOBIL5.0开始,EVC4开发的工程就无法进行DEBUG了,而必须使用VS.NET2005中的VC++来实现。但是以前我们费了很大心力做成的项目,也不能重新来写。今天通过一上午的研究,将转化方法贴出来和大家共勉。这里我们以DIALOGBASED工程为例。首先用EVC4建立一个DIALOGBASED的POCKETPC2003工程。此工程名我们暂定为TXDEMO。我们也可以在对话框放置一个BUTTON,在单击事件里,添加AfxMessageBox(L”Test”);以便升级到VS.NET2005后,测试资源对应情况。此时,保存TXDEMO工程,并关闭掉EVC4开发工具。此时用VS.NE 阅读全文
摘要:
bool cinplacelist::pretranslatemessage(msg* pmsg) { if( pmsg->message == wm_keydown ) { if(pmsg->wparam == vk_return || pmsg->wparam == vk_escape ) { ::translatemessage(pmsg); ::dispatchmessage(pmsg); return true; // do not process further } } return ccombobox::pretranslatemessag... 阅读全文
摘要:
转自:http://www.uumbbs.com/show_topic.aspx?topicid=2368&forumid=208#Header1.表头控制 Header Control2.图像列表控制 Image List3.列表控制和视 List Control&List View4.树控制和视 Tree Control&Tree View5.标签控制和视 Tab Control&Tab View6.工具条控制 Toolbar Control7.进度条控制 Progress Control8.滑动条控制 Slider Control9.旋转按钮控制 Spin 阅读全文
摘要:
总结这段时间科研过程中的学习到的一些知识和小技巧。1。关于SendMessage发送CString的问题方法1:Send: CString *str = new CString ("aaa"); hwnd->SendMessage(WM_USER,0,(LPARAM)str);Recv: void myproc(.......) //自定义消息处理函数{ CString *pstr = (CString*)lparam; ....... delete pstr; //注意此处要删除前面send处new出来的CString }方法2:CString s="aa 阅读全文
摘要:
在“E:/兴辉俊武/vc++学习笔记/动画图片操作/JPG图像加载及超连接”定义了所需的类 CPictureCtrl使你可以在任何对话框或窗口中把图像作为子窗口显示。 例如:关于对话框中加载IDC_MYIMAGE图像 classCAboutDialog:publicCDialog{ protected: CPictureCtrlm_wndPict; virtualBOOLOnInitDialog(); }; BOOLCAboutDialog::OnInitDialog() { m_wndPict.SubclassDlgItem(IDC_MYIMAGE,this);//I... 阅读全文
摘要:
经常有朋友问雷神这样的问题:我在视图画的图象或者文字,当窗口改变后为什么不见了?OnDraw()和OnPaint()两个都是解决上面的问题,有什么不同?雷神在这里一并解答一下吧。OnDraw()和OnPaint()好象兄弟俩,因为它们的工作类似。至于不见了的问题简单,因为当你的窗口改变后,会产生无效区域,这个无效的区域需要重画。一般Windows回发送两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)。非客户区的重画系统自己搞定了,而客户区的重画需要我们自己来完成。这就需要OnDraw()或OnPaint()来重画窗口。OnDraw()和OnPaint() 阅读全文
摘要:
Visual Studio 2005中配置Windows Mobile 5.0开发环境Visual Studio 2005无疑是开发Windows Mobile的最佳工具,其本身就集成了Windows Mobile开发环境,.Net Compact Framework也同时升级到了2.0,只是它自身所带的模拟器是Windows CE 2003的,有些落后时代了,呵呵。 本文就软件的安装和配置做一个简单介绍。 测试环境: WindowsXP+SP2 Microsoft Visual Studio 2005+SP1 安装的软件包: Microsoft ActiveSync 4.2 Windows 阅读全文
摘要:
自上星期以来,开始系统化的学习Windows Mobile 5.0,希望通过系统化的学习,能够掌握移动开发。Mobile 5.0开发配置:软件安装顺序:1.安装Microsoft ActiveSync 4.0以上版本2.安装VS2005开发Pocket PC需安装Windows Mobile 5.0 Pocket PC SDK开发Smartphone需安装Windows Mobile 5.0 Smartphone SDKMobile 5.0环境配置:1.模拟器与Microsoft ActiveSync同步:A.启动VS2005,在Tools->Device Emulator Manage 阅读全文
摘要:
typedef struct _THREAD_INFO { LARGE_INTEGER CreateTime; DWORD dwUnknown1; DWORD dwStartAddress; DWORD StartEIP; DWORD dwOwnerPID; DWORD dwThreadId; DWORD dwCurrentPriority; DWORD dwBasePriority; DWORD dwContextSwitches; DWORD Unknown; DWORD WaitReason; }THREA... 阅读全文
摘要:
本文章地址:http://www.jztop.com/dev/vc/2006-02-27/12460.html [点此复制地址] 昨天在论坛上,有人问起双缓冲的实现问题,想起网上这方面资料比较凌乱,而且多是 DirectX 相关的,今天特地在这里给大家简要的介绍一下双缓冲技术及其在 VC++ 的 GDI 绘图环境下的实现。 1、Windows 绘图原理 我们在 Windows 环境下看到各种元素,如菜单、按钮、窗口、图像,从根本上说,都是“画”出来的。这时的屏幕,就相当于一块黑板,而 Windows 下的各种 GDI 要素,如画笔、画刷等,就相当于彩色粉笔了。我们在黑板上手工画图时,是一... 阅读全文
摘要:
小结:主要的思想是,如果要显示图形,直接把该图形当作一个document,在改写document的时候,实际上就是改写这个位图。然后在View中显示的时候,直接把这个位图显示出来就可以了。这需要两个DC,一个DC是台面上的显示用的,一个DC是在内存中绘图用的。两者的关联点就在于这个bitmap对象。需要明确几个概念,由于MFC的类封装了windows对象,所以由MFC类创建出来的对象就叫做“实例”,以与windows“对象”区分开来。document/view的经典办法是将图形的数据存储在document类里面,view类只是根据这些数据绘图。比如你要画个圆,只是将圆心和半径存在documen 阅读全文
摘要:
显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。1、显示的图形为什么会闪烁? 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这. 阅读全文
摘要:
专栏作品利用GDI+的双缓冲技术来提高绘图效率卢彦 前言进入.NET时代,Windows的绘图技术也从GDI升级到了GDI+,从名字就能知道GDI+是对以前传统GDI绘图技术的一次升级,不过在微软几乎把所有的新技术都冠之.NET的情况下,GDI+竟然不叫做GDI.NET,还真让我感到有点意外了。 :)GDI+在一种与设备无关的环境下提供了一套统一的绘图编程模型,极大的提高了Windows绘图编程的方便性,我们再也不用创建什么各种各样复杂的设备环境了,说实话,我现在想起来都头疼。题归正传,关于如何进行GDI+的基本编程,我不能过多的加以描述,如果有对此概念还不太清楚的朋友,建议先去了解一下相关的 阅读全文
摘要:
VC雕虫小技集(一)1,避免随机数相同,可以取当前时间,读文件,读任意内存(如未定义变量,有一定危险). CTime t = CTime::GetCurrentTime(); int n = t.GetMinute() * 60 + t.GetSecond(); while(n-- > 0) { rand(); } const int N = 100; int result = rand()%N;2, 字符串与数的转换sprintf,sscanf,其实还有其它许多函数,但只这两个函数是最容易记住的.因为它们和printf,scanf,fprint,fscanf的用法类似. char st 阅读全文
摘要:
(1) 如何通过代码获得应用程序主窗口的 指针?主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example:TCHARexeFullPath[MAX_PATH] // MAX_PATH在API中定义了吧,好象是128GetModuleFileName(NULL,exeFullPath,MAX_PATH)(3) 如 阅读全文
摘要:
程序员对于Windows程序中应该用_beginthread还是createThread来创建线程,一直有所争论。本文将从对CRT源代码出发探讨这个问题。I.起因今天一个朋友问我程序中究竟应该使用_beginthread还是createThread,并且告诉我如果使用不当可能会有内存泄漏。其实我过去对这个问题也是一知半解,为了对朋友负责,专门翻阅了一下VC的运行库(CRT)源代码,终于找到了答案。II.CRTCRT(C/C++RuntimeLibrary)是支持C/C++运行的一系列函数和代码的总称。虽然没有一个很精确的定义,但是可以知道,你的main就是它负责调用的,你平时调用的诸如strl 阅读全文
摘要:
[前言:]有好的界面软件就成功了一半,本文将向您介绍怎样设计一些有“稀奇古怪”形状的窗体,如何设定窗体的颜色、如何设置任务栏和状态栏以及菜单图标等等,通过这些技巧能更深入的理解VC的文档-视图结构。 如何制作透明窗体 使用SetLayeredWindowAttributes可以方便的制作透明窗体,此函数在w2k以上才支持,而且如果希望直接使用的话,可能需要下载最新的SDK。不过此函数在w2k的user32.dll里有实现,所以如果你不希望下载巨大的sdk的话,可以直接使用GetProcAddress获取该函数的指针。 SetLayeredWindowAttributes的函数原型如下:B... 阅读全文
摘要:
在MFC中有时需要自己Create控件,如何写一个可以响应消息的控件呢,例如:CStatic 如下:CStatictest;test.Create("mystatic",WS_CHILD|WS_VISIBLE|SS_CENTERIMAGE|SS_NOTIFY,CRect(1,3,90,90),this,IDC_STA_TEST);ON_BN_CLICKED(IDC_STA_TEST,OnTest)就可以了 阅读全文
摘要:
1创建脚本块1<scriptlanguage=”JavaScript”>2 JavaScriptcodegoeshere3</script>2隐藏脚本代码1<scriptlanguage=”JavaScript”>2<!--3 document.write(“Hello”);4//-->5</script>在不支持JavaScript的浏览器中将不执行相关代码3浏览器不支持的时候显示1<noscript>2 Hellotothenon-JavaScriptbrowser.3</noscript>4链接外部脚本文 阅读全文
摘要:
俺多年收集的精品课件,已全部整到二姨家的"电子课件集锦"目录下了,慢慢玩吧,小心电着哦中文目录要这样设定才能进去: 在WEB浏览器中也可以打开。Internet选项→高级:把“始终以UTF-8方式发送URL”前的勾去掉。(网友asunmad的高招)01.8051单片机初学实验教程1 DOC版http://file.21ic.com/电子课件集锦%20%20PPT格式/8051单片机初学实验教程1~5%20DOC版.rar02.PowerPCB精采视频教程 6.7Mhttp://file.21ic.com/电子课件集锦%20%20PPT格式/PowerPCB精采视频教程.ra 阅读全文
摘要:
1.VxWorks开发方式:交叉开发,即将开发分为主机(host)和目标机(target)两部分。类似于dos下C语言程序的开发。合并开发的优点:简单缺点:资源消耗量大,CPU支持,非标准体系的支持host (Tornado) target(vxWork) 小程序模块vxWorks实际采用开发模式Tornado提供:编辑,编译,调试,性能分析工具,是vxWorks的开发工具vxWorks:面向对象可以剪裁的实际运行操作系统2.vxWorks启动方式<1>Rom方式 (vxWork_rom)vxWorks直接烧入rom<2>Rom引导方式(bootrom+vxWorks) 阅读全文
摘要:
1、概述 VxWorks操作系统的集成环境叫Tornado。Tornado集成环境提供了高效明晰的图形化的实 时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。Tornado环境采 用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文 件,下载到目标机,通过主机上的目标服务器(Target Server)与目标机上的目标代理 (Target Agent)的通信完成对应用程序的调试、分析。 它主要由以下几部分组成: 1.1 VxWorks高性能的实时操作系统; 1.2 应用编译工具; 1.3 交互开发工具; 2、Tornado集成环境的各组件功能 2 阅读全文
摘要:
ARM9基础知识(必记) ARM9微处理器系列ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点:- 5级整数流水线,指令执行效率更高。- 提供1.1MIPS/MHz的哈佛结构。- 支持32位ARM指令集和16位Thumb指令集。- 支持32位的高速AMBA总线接口。- 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。- MPU支持实时操作系统。- 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。大小都为16K。ARM9系列... 阅读全文
摘要:
请教关于嵌入式开发的问题搞硬件,最基本的:1、数电、模电2、数字逻辑3、处理器架构4、总线协议5、丰富的设计、布线、调试经验软件:1、C/C++2、汇编(对应不同处理器)3、数据结构4、操作系统5、处理器存储器结构6、懂一些硬件 阅读全文
摘要:
问 自编浏览器进入一个网页后,点一个链接后系统自动调用用IE打开网页而不是用自身浏览器打开网页。如何让窗口用我自己的浏览器打开? 答: 控制新的窗口 默认情况下,浏览器收到创建新窗口请求时,会在IE中打开新的窗口。你可以处理NewWindow2事件来在自己指定的窗口中打开请求的页面。 问: 如何枚举系统中视频捕获设备(摄像头)的设备名称 答: 以下代码来 自DirectX9 SDK中的AMCAP示例 // put all installed video and audio devices in the... 阅读全文