« | June 2023 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | 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 | | |
| 公告 |
谦卑,荣誉,牺牲,英勇,怜悯,诚实,精神,公正。 |
Blog信息 |
blog名称: 日志总数:183 评论数量:698 留言数量:7 访问次数:3010493 建立时间:2005年12月29日 |

| |
[编程学习]linux com 网上资源, 软件技术
newqiang 发表于 2007/3/15 22:32:53 |
char_t *dev = "/dev/ttyS0";//com1
char_t *dev = "/dev/ttyS0";//com1 int32_t fd = open( dev, O_RDWR | O_NOCTTY );//| O_NOCTTY );//O_NDELAY );//| O_NOCTTY | O_NDELAY O_NONBLOCK if (-1 == fd) { perror("Can't Open Serial Port"); exit(1); } else { set_speed(fd,115200 ); if (set_Parity(fd,8,1,'N') == FALSE) {< |
|
[编程学习]C++ 函数模板学习总结 文章收藏, 软件技术
newqiang 发表于 2006/12/7 15:12:48 |
function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}
刚刚看到一个类模板,还没学习,过几天再学.先把函数模板写下来.
template <class Type, int size> Type min(Type (&array)[size]); 这个size不是函数的参数,而是模板 |
|
[编程学习]从内存中加载动态库 网上资源, 软件技术
newqiang 发表于 2006/12/6 16:09:15 |
从内存中加载动态库
程序使用动态库DLL一般分为隐式加载和显式加载两种,分别对应两种链接情况。本文主要讨论显式加载的技术问题。我们知道,要显式加载一个DLL,并取得其中导出的函数地址一般是通过如下步骤: (1) 用LoadLibrary加载dll文件,获得该dll的模块句柄; (2) 定义一个函数指针类型,并声明一个变量; (3) 用GetProcAddress取得该dll中目标函数的地址,赋值给函数指针变量; (4) 调用函数指针变量。
这个方法要求dll文件位于硬盘上面。现在假设我们的dll已经位于内存中,比如通过脱壳、解密或者解压缩得到,能不能不把它写入硬盘文件,而直接从内存加载呢?答案是肯定的。经过多天的研究,非法操作了N次,修改了M个BUG,死亡了若干脑细胞后,终于有了初步的结果,下面做个总结与大家共享。
一、加载的步骤
由于没有相关的资料说明,只能凭借感觉来写。首先LoadLibrary是把dll的代码映射到exe进程的虚拟地址空间中,我们要实现的也是这个。所以先要弄清楚dll的文件结构。好在这个比较简单,它和exe一样也是PE文件结构,关于PE文件的资料很多,阅读一番后,基本上知道了必须做的几个工作: (1)判断内存数据是否是一个有效的DLL。这个功能通过函数CheckDataValide完成。原型是: &nbs |
|
[编程学习]Windows 语音编程初步 网上资源, 软件技术
newqiang 发表于 2006/12/6 16:00:43 |
转自:iwaswzq
Windows 语音编程初步
一、SAPI简介
软件中的语音技术包括两方面的内容,一个是语音识别(speech recognition) 和语音合成(speech synthesis)。这两个技术都需要语音引擎的支持。微软推出的应用编程接口API,虽然现在不是业界标准,但是应用比较广泛。
SAPI全称 The Microsoft Speech API.相关的SR和SS引擎位于Speech SDK开发包中。这个语音引擎支持多种语言的识别和朗读,包括英文、中文、日文等。
SAPI包括以下组件对象(接口):
(1)Voice Commands API。对应用程序进行控制,一般用于语音识别系统中。识别某个命令后,会调用相关接口是应用程序完成对应的功能。如果程序想实现语音控制,必须使用此组对象。 (2)Voice Dictation API。听写输入,即语音识别接口。 (3)Voice Text API。完成从文字到语音的转换,即语音合成。 (4)Voice Telephone API。语音识别和语音合成综合运用到电话系统之上,利用此接口可以建立一个电话应答系统,甚至可以通过电话控制计算机。 (5)Audio Objects API。封装了计算机发音系统。
SAPI是架构在COM基础上的,微软还提供了ActiveX控件,所以不仅可用于一般的windows程序,还可以用于网页、VBA甚至EXCEL的图表中。如果对COM感到陌生,还可以使用微软的C++ WRAPPERS,它用C++类封装了语音SDK COM对象。
二、安装SAPI SDK。
首先从这个站点下载开发包:
阅读全文(12606) | 回复(3) | 编辑 | 精华 | 删除 |
| | |
[编程学习]定义消息的发送与接收的方法实现 文章收藏, 软件技术
newqiang 发表于 2006/11/21 13:29:07 |
以下用一个自创的对话框类(MyMessageDlg)向视图类(MessageTestView) 发送自定义消息为例,说明这两种不同方法的自定义消息的
总结: 消息传递的方法一:使用ON_MESSAGE 使用ON_MESSAGE响应消息,必须配合定义消息#define WM_MY_MESSAGE (WM_USER+100)
对于发送消息者-MyMessageDlg, 在其MyMessageDlg.h中,定义#define WM_MY_MESSAGE (WM_USER+100) 在其MyMessageDlg.cpp中要先添加:#include "MainFrm.h" 因为使用了CMainFrame*定义对象。 并且要有测试消息的函数: void MyMessageDlg::OnButtonMsg() { // TODO: Add your control notification handler code here CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd; //先通过获取当前框架指针 CView * active = pMF->GetActiveView();//才能获取当前视类指针 if(active != NULL) //获取了当前视类指针才能发送消息 & |
|
[编程学习]Sort 软件技术
newqiang 发表于 2006/11/7 22:31:19 |
文件中有一组整数,要求排序后输出到另一个文件中 答案:
#i nclude<iostream>
#i nclude<fstream>
using namespace std;
void Order(vector<int>& data) //bubble sort { int count = data.size() ; int tag = false ; // 设置是否需要继续冒泡的标志位 for ( int i = 0 ; i < count ; i++) { for ( int j = 0 ; j < count - i - 1 ; j++) { if ( data[j] > data[j+1]) { tag = true ; int temp = data[j] ; data[j] = data[j+1] ; data[j+1] = temp ; } } if ( !tag ) break ; } }
void main( void ) { vector<int& |
|
[编程学习]Cg编程入门编(OpenGL) 文章收藏, 软件技术
newqiang 发表于 2006/10/25 21:24:19 |
Cg编程入门编(OpenGL)
原注:B Alex D'Angelo (alexz@FusionIndustries.com) 译: 川流不息 (huawenguang@hotmail.com)未经本人同意,不能用于商业用途。
本文将介绍如何在你现有的图形程序中加入对顶点和片段的高级着色。采用CG着色语言,将会另你的工作更加容易实现。在编程过程中,你可以通过调用一些已有的CG函数来完成你的工作。当然,当你学得足够深入后,你也可以自已编写一些着色器。最具有参考价值的资料,当然要数Fernando 和 Kilgard 编写的“The Cg Tutorial”了。在Nvidia公司的网页中可以下载到。
一、概述 本文的程序中,结合OpenGL和GLUT在屏幂中画了一个立方体,程序中加入了CG着色程序代码。Listing1中包含了完整的原程序代码,其中CG部分用粗体字标识出来,本程序贯穿全文。Listing2是一个CG顶点着色的代码。
二、建立Cg编程环境 在进行CG编程之前,首先要下载CG工具包“Cg Toolkit”,在以下网址可以找到: http://developer.nvidia.com/CG ,请注意看一下你的显卡是否支持顶点着色编程。 安 |
|
[编程学习]利用多线程技术实现线程之间的通信 网上资源, 软件技术
newqiang 发表于 2006/10/25 16:49:41 |
VC中利用多线程技术实现线程之间的通信 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的。因此掌握多线程多任务设计方法对每个程序员都是必需要掌握的。本实例针对多线程技术在应用中经常遇到的问题,如线程间的通信、同步等,分别进行探讨,并利用多线程技术进行线程之间的通信,实现了数字的简单排序。
一、 实现方法
1、理解线程
要讲解线程,不得不说一下进程,进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它系统资源组成。进程在运行时创建的资源随着进程的终止而死亡。线程的基本思想很简单,它是一个独立的执行流,是进程内部的一个独立的执行单元,相当于一个子程序,它对应于Visual C++中的CwinThread类对象。单独一个执行程序运行时,缺省地包含的一个主线程,主线程以函数地址的形式出现,提供程序的启动点,如main()或WinMain()函数等。当主线程终止时,进程也随之终止。根据实际需要,应用程序可以分解成许多独立执行的线程,每个线程并行的运行在同一进程中。
一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源。操作系统给每个线程分配不同的CPU时间片,在某一个时刻,CPU只执行一个时间片内的线程,多个时间片中的相应线程在CPU内轮流执行,由于每个时间片时间很短,所以对用户 |
|
[编程学习]如何实现进程间的通信 文章收藏, 软件技术
newqiang 发表于 2006/10/22 11:24:08 |
如何实现进程间的通信
1、引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同在WIN16中对本地进程进行读写操作一样。 典型的WIN16两进程可以通过共享内存来进行数据交换:(1)进程A将GlobalAlloc(GMEM_SHARE...)API分配一定长度的内存;(2)进程A将GlobalAlloc函数返回的句柄传递给进程B(通过一个登录消息);(3)进程B对这个句柄调用GlobalLock函数,并利用GlobalLock函数返回的指针访问数据。这种方法在WIN32中可能失败,这是因为GlobalLock函数返回指向的是进程A的内存,由于进程使用的是虚拟地址而非实际物理地址,因此这一指针仅与A进程有关,而于B进程无关。 本文探讨了几种WIN32下进程之间通讯的几种实现方法,读者可以使用不同的方法以达到程序运行高效可靠的目的。
2、Windows95中进程的内存空间管理 WIN32进程间通讯与Windows95的内存管理有密切关系,理解Windows95的内存管理对我们如下的程序设计将会有很大的帮 |
|
[编程学习]如何使用 MFC 和类型库创建自动化项目 文章收藏, 软件技术
newqiang 发表于 2006/8/19 15:16:15 |
概要 本文详细说明如何使组件与 COM 兼容应用程序(如 Microsoft Office 应用程序)的集成自动执行。 更多信息 下面一节说明如何创建 MFC 项目。该示例使 Microsoft Excel 自动运行。您可以将前 8 个步骤用于任何项目,在使用其他应用程序时可修改步骤 9 至步骤 15。 创建自动化项目 1. 在 Microsoft Developer Studio 中,启动一个名为“AutoProject”的新“MFC AppWizard (exe)”项目。 2. 在 MFC AppWizard 的步骤 1 中,为应用程序类型选择“对话框基于”,然后单击“完成”。
出现“新项目信息”对话框,指示要创建的类包括: Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp 单击“确定”创建项目。 3. “IDD_AUTOPROJECT_DIALOG”对话框在 Visual Studio 的设计/编辑区域打开。按照下面两个步骤中的说明进行修改。 4. 删除“标签”控件 (IDC_STATIC) 和“取消”按钮 (IDCANCEL)。 5. 将“确定”按钮的名称更改为“IDRUN”,并将标题更 |
|
[编程学习]模板和泛型如何配合使用 文章收藏, 软件技术
newqiang 发表于 2006/8/19 15:16:15 |
我将演示模板和泛型在何种情况下能配合使用,在何种情况下不能配合使用,并指明在 Visual C++® 2005 下当前模板实现方式的缺陷,以此来结束这一系列有关在 Microsoft® .NET Framework 中进行泛型编程的专栏。我选择通过讨论将标准模板库 (STL) 引入 .NET 的过程中进行的工作,来介绍这份材料。首先,我将回顾 STL 的基本元素,这样所有人都将站在同一起跑线上。
STL 的 CAI 有三个主要元素可用于标准模板库的设计:容器、算法和迭代器 (CAI)。STL 矢量和 List 类表示顺序容器。顺序容器保存第一个元素、第二个元素等等,直到最后一个元素。用程序来表示的函数参数列表通常作为包含字符串类型的元素的矢量来实现。例如:
vector<string> paramlist;
Map 和 Set 类表示关联容器。关联容器支持快速查找。例如,Map 表示键/值对:键用于查找,而值表示存储和检索的数据。要表示电话号码簿,您需要声明一个带有字符串键和整数值的 Map:
map<string,int> phonedir;
多重映射可使单一键支持多个电话条目。
STL 还提供一个算法集,其中包含用于查找、排序、替换和合并的算法(可以对容器进行运算)。这些算法称为泛型算法,因为它们独立于正在其上进行运算的元素类型(例如整型、双精度类型或字符串类型)和包含元素的容器类型(例如无论容器是矢量、列表还是内置数组)。
泛型算法通过直接在容器上进行运算来实现容器独立性。程序不向算法传递容器,而是向它们传递标记了要通过其进行迭代的元素范围的迭代器对 (第一个, 最后一个] |
|
[编程学习]笔记4.12 网上资源, 读书笔记
newqiang 发表于 2006/4/13 20:03:29 |
VB和VC混合编程
一般来说,VB和VC共同编程有3种方式:一种是VC生成DLL,在VB中调用DLL;一种是VC生成ActiveX控件(.ocx),在VB中插入;还有一种是在VC中生成ActiveX Automation服务器,在VB中调用。相对而言,第一种方法对VC编程者的要求最低,但要求你的伙伴进行配合,我推荐这种方法。 &n
(下面还有50字) |
|
[编程学习]CString 操作指南 文章收藏, 电脑与网络
newqiang 发表于 2006/3/26 21:19:43 |
CString 操作指南
原著:Joseph M. Newcomer
翻译:littleloach
原文出处:codeproject:CString Management
通过阅读本文你可以学习如何有效地使用 CString。
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多
(下面还有70字) |
|
[编程学习]几个时间控制函数 文章收藏, 软件技术
newqiang 发表于 2006/3/24 11:43:34 |
随着软硬件的飞速发展,计算机技术已经广泛地应用到自动化控制领域,为了实现实时控制,控制程序必须能够精确地完成定时和计时功能。VC提供了很多关于时间操作的函数,下面根据它们精度的不同,分别进行说明。
一般时控函数
VC程序员都会利用Windows的WM—TIMER消息映射来进行简单的时间控制:1.调用函数SetTimer()设置定时间
(下面还有49字) |
|
[编程学习]分析Windows和Linux动态库 文章收藏, 软件技术
newqiang 发表于 2006/3/16 22:20:17 |
分析Windows和Linux动态库 原 作 者:刘世栋 杨林
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。但不同操作系统的动态库由于格式不同,在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技
(下面还有63字) |
|
[编程学习]总结最全的内存管理文章 文章收藏, 软件技术
newqiang 发表于 2006/3/15 16:10:20 |
网上摘录:
内存管理 欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 7.1内存分配方式 内存分配方式有
(下面还有20字) |
|
[编程学习]用GCC开发linux应用程序(经典) 文章收藏
newqiang 发表于 2006/3/15 15:38:54 |
在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是灵活运用C编译器.目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSIC标准的编译系统,能够编译用C、C++和Object C等语言编写的程序.GCC不仅功能非常强大,结构也异常灵活.最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等
(下面还有63字) |
|
[编程学习]Visual C++6.0实现动态曲线4种方法 网上资源
newqiang 发表于 2006/3/9 11:30:31 |
在实验和生产中,我们常常需要对被监测的对象进行实时监控,比如对现场的温度等环境因素进行实时数据采集,然后传输到主控制计算机,以动态曲线的方式显示出来,便于人们对现场的了解和控制。 2.用Visual C++实现动态曲线的绘制有4种方法。(1)使用消隐。(2)使用重绘。其中重绘按照原理的不同又分为3种。
2.1消隐。其实消隐的方法很简单,主要使用CDC类的成员函数SetROP2 。该函数原型为int SetROP2( int nDrawMode )。参数
(下面还有77字) |
|
[编程学习]vc++动态曲线 网上资源
newqiang 发表于 2006/3/9 11:25:29 |
定义一个数据结构去存储 typedef struct _value{ double dValue; CTime ValueTime; }myvalue; 我设定屏幕显示20咯点
CString sSql,time; CTime Mytime=CTime::GetC
(下面还有70字) |
|
[编程学习]vc++实现打印功能 网上资源
newqiang 发表于 2006/3/9 10:53:26 |
vc++中如何实现打印功能的 [原创 2006-02-21 20:35:28 | 发表者: 鸽子情缘]
我们只需在源代码中加入以下几行代即可,如下: void CPrintSameView::OnPrepareDC (CDC* pDC, CPrintInfo* pInfo) { CView::OnPrepareDC(pDC, pInfo); pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式 CSize size = CSize(800, 560); pDC->SetWindowExt(size); //确定窗 |
|
[编程学习]Linux的相关问题 网上资源
newqiang 发表于 2006/3/6 23:13:35 |
编者按:鉴于目前中国Linux的发展现状,90%以上的问题都可以用一句话来回答,这便是本文的初衷。欢迎大家添加自己的“一句话”,收录后注明原始提供者。更详细的文档,请浏览本版精华区或http://sunjava.spymac.net/linux/
----------------------------网络无关篇-------------------------- 0001 修改主机名(bjchenxu) vi /etc/sysconfig/network,修改HOSTNAME一行为"HOSTNAME=主机名"(没有这行?那就添加这一行吧),然后运行命令" hostname 主机名"。无论你是否重启,主机名修改成功了。
0002 Ret Hat Linux启动到文字界面(不启动xwindow)(bjchenxu) vi /etc/inittab id:x:initdefault: x=3:文本方式 x=5 |
|
[编程学习]RTTI 网上资源
newqiang 发表于 2006/3/6 10:24:52 |
运行时类型信息机制包括3个主要部分: 1、运算符dynamic_cast,给它一个指向某对象的基类指针,它能得到一个到这个对象的派生类指针。只有在被指对象确实属于所指明的派生类时,运算符dynamic_cast才给出这个指针,否则就返回0。 2、运算符typeid,它给一个给定的基类指针识别出被指对象的确切类型。 3、结构type_info ,作为与有关类型的更多运行时类型信息的挂接点(hook)。
模板、异常、运行时类型信息和名字空间是C++对C的主要扩充. |
|
[编程学习]windows实用命令集合 网上资源
newqiang 发表于 2006/3/6 10:10:41 |
windows实用命令集合 -|天地一沙鸥 发表于 2005-4-21 11:03:00
winver---------检查windows版本 wmimgmt.msc----打开windows管理体系结构(wmi) wupdmgr--------windows更新程序 wscript--------windows脚本宿主设置 write----------写字板 winmsd---------系统信息 wiaacmgr-------扫描仪和照相机向导 winchat--------xp自带局域网聊天 |
|
[编程学习]有关数据类型转换的整理 网上资源
newqiang 发表于 2006/2/25 9:47:36 |
对论坛中有关数据类型转换的整理 整理:Vision Deng -------------------------------------------------------------------------------- 说明:本文纯粹是总结一下有关类型转换的贴子,本人并未对所有方法都做测试,仅仅是为了给大家一个参考。
int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="程佩君"; char temp[200]; char *buf; CString str; _variant_t v1; _bstr_t v2;
一、其它数据类型转换为字符串
短整型(int) itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制 itoa(i,temp,2); ///按二进制方式转换 长整型(long) |
|
[编程学习]基于Visual C++的Winsock API研究 文章收藏
newqiang 发表于 2006/2/18 17:00:15 |
基于Visual C++的Winsock API研究 为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。 微软为VC定义了Winsock类如CAsyncSocket类和派生于CAsyncSocket 的CSocket类,它们简单易用,读者朋友当然可以使用这些类来实现自己的网络程序,但是为了更好的了解Winsock API编程技术,我们这里探讨怎样使用底层的API函数实现简单的 Winsock 网络应用程式设计 |
|
[编程学习]visual c++对大型数据文件的读取 网上资源
newqiang 发表于 2006/1/17 11:29:39 |
visual c++对大型数据文件的读取
笔者前不久曾遇到一个问题,解决之后的经验愿与大家分享。问题是这样的,有一批数据文件,数据格式如下:
日期,开盘,最高,最低,收盘,成交量,成交金额
1996年5月13日,636.96,636.96,636.96,636.96,0,0,
1996年5月14日,641.61,641.61,641.61,641.61,0,0,
1996年5月15日,637.83,637.83,637.83,637.83,0,0,
.............
要求将数据填写到四张表中,以便作相应的分析。笔者开始用CFile和CStdioFile类的方法读取件。Cfile类提供了基于二进制流的文件操作,功能类似于C语言中的fread()和fwrite()函数。CStdioFile提供了基于字符串流的文件操作,功能类似于C语言中fgets()和fputs()函数。但是笔者发现,使用这两个类进行文件操作时,对于一 |
|
[编程学习]get ip address 网上资源
newqiang 发表于 2006/1/17 11:05:30 |
首先载入Winsock动态库,代码如下:
int CIPAddressDlg::StartUp() { WORD wVersionRequested; WSADATA wsaData; int err;
wVersionReuqested=MAKEWORD(2,0); err=WSAStartup(wVe
(下面还有241字) |
|
|