suncode

  博客园 :: 首页 :: 新随笔 :: :: :: 管理 ::

03 2011 档案

摘要:意图:保证一个类仅有一个实例,并提供一个访问的全局访问点--------------------singleton.h-----------------------View Code #ifndef SINGLETON_H#define SINGLETON_Hclass singleton{public: static singleton* instance();protected: singleton();private: static singleton* _instance;};#endif //SINGLETON_H---------------------singleton.cpp- 阅读全文
posted @ 2011-03-29 14:46 suncode 阅读(341) 评论(0) 推荐(0)

摘要:今天一朋友问了一问题想到了二进制的解决方法,于是上网搜了下资料,觉得有用,就拿来主意,贴下以备后用。char *_itoa( int value, char *string, int radix );第一个参数是要转换的数,第二个参数用于存放结果,第三个参数就是指进位制了。用法举例:char tmp[32];itoa(985,tmp,16);这就是把985转换为16进制的字符串。如果你一定要自己写,你的方法并不好。你可以这样来看问题,一个整数占用32bit,8进制其实就是要求的3bit为一分组,而16进制则是4bit为一分组。你完全可以利用C++的位操作运算来处理,这样会更快且准确。以16进制 阅读全文
posted @ 2011-03-29 14:24 suncode 阅读(378) 评论(0) 推荐(0)

摘要:要实现这个目标,非stringstream类莫属。这个类在<sstream>头文件中定义,<sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。string到int类型的转换<sstream>使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。std::stringstream stream;string result= 阅读全文
posted @ 2011-03-28 10:01 suncode 阅读(4495) 评论(0) 推荐(0)

摘要:WM_COPYDATA是一个非常特殊的消息,此消息可以携带一个较大的消息参数,而其他消息都只能写到两个固定大小的参数(WPARM LPARAM)发送WM_COPYDATA消息时wParam参数应该赋值为发送此消息的窗口,lParam指向一个 COPYDATASTRUCT结构类型的变量typedef struct COPYDATASTRUCT{ ULONG_PTR dwData; //可以是任意值 DWORD cb_data; //指定lpData内存区域的字节数 PVOID lpData; //发送给目录窗口所在进程的数据}COPYDATASTRUCT, *PCOPYDATASTRUCT;/* 阅读全文
posted @ 2011-03-18 17:07 suncode 阅读(4108) 评论(0) 推荐(0)

摘要:基本需求:eclipse、python解析器下载eclipse中开发python的插件PyDev(org.python.pydev.feature-1.6.1.2010080312.zip)org.python.pydev.feature-1.6.1.2010080312.zip解压后放入eclipse目录下对应的文件夹中,启动eclpse window->presences Pydec->interpreter-Python 设置python.exe对应的路径Appy->OK.设置好后File->New->Other 弹出窗口中Pydev->pydev P 阅读全文
posted @ 2011-03-13 10:07 suncode 阅读(993) 评论(0) 推荐(0)

摘要:线程同步机制为线程协同工作而设计,windows系统中有多种机制可以用于线程同步,最常用的有下面几种:互斥对象(Mutex)时间对象(Event)信号量(Semaphore)临界区(critical section)可等待计时器(waitable Timer)同步过程中两个重要的概念是同步对象和等待函数:同步对象:线程同步过程中需要先定义一个同步对象,具有标志的(signaled)和未标志的(nonsignaled),线程根据是否已经完成操作将同步对象视之为 标志的或未标志的。等待函数:专门用于等待同步对象状态改变,线程调用等待函数后会暂停,直到同步对象的状态改变后,等待函数才会返回,线程继续 阅读全文
posted @ 2011-03-10 17:26 suncode 阅读(193) 评论(0) 推荐(0)

摘要:管道(Pipe)是一种用于进程间共享数据的机制,实质是共享一段内存,windows系统为这段共享内存设计采用数据流I/O的方式访问。由一个读一个写,类似于一个管道两端。管道分为命名管道和匿名管道。匿名管道只能在父子进程间进行通信,不能在网络间通信,而数据传输是单向的。命名管道可以在任意进程间通信,通信是双向的。创建命名管道 CreateNamedPipeHANDLE WINAPI CreateNamedPipe( LPCTSTR lpName, // 管道名称, 命名方式:\\ServerName\pipe\PipeName 或者 \\.\pipe\PipName DWORD dwOpenMo 阅读全文
posted @ 2011-03-10 17:01 suncode 阅读(1766) 评论(0) 推荐(0)

摘要:邮槽通信分为服务端和客户端,邮槽有服务端进行创建,创建时指定邮槽的名字,创建后获得邮槽的句柄,客户端可以通过句柄打开邮槽,获得句柄后可以向邮槽写入消息。邮槽服务是单向的,只有服务端才能从邮槽中读取消息,客户端只能写入,消息是先进先出的,邮槽通信的数据可以是任意格式,但一条消息不能大于424字节,数据通过网络传播时使用的是数据报协议(UDP),网络通信时客户端必须知道服务端的主机名或域名。邮槽命名: 本 机: \\.\mailslot\[oath\]name 例:\\.\mailslot\win\suncode 不同主机:\\DomainName\mailslot\[path\]name \\C 阅读全文
posted @ 2011-03-08 18:39 suncode 阅读(332) 评论(0) 推荐(0)

摘要:进程的地址空间是私有的,出于安全行的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的。windows 系统下,在进程间通信或共享数据的方式如下:邮槽:邮槽是最为简单的进程间数据共享方式,一个进程创建并拥有一个邮槽,其他进程都可以打开这个邮槽并向其发送消息。管道:实质是一种共享内存,有一个进程创建,其他进程连接,并可进行双向的通信。剪贴板:剪贴板是重要的进程间数据共享方式,所有的进程都可以设置和修改剪贴板,也可以从剪贴板获取内容。消息:具体指WM_COPYDATA。消息具有参数wParam、lParam,两者最多是32位的,但是WM_COPYDATA消息参数不受wParam 阅读全文
posted @ 2011-03-08 17:27 suncode 阅读(190) 评论(0) 推荐(0)

摘要:1、栈区(stack) 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区常量字符串就是放在这里的。程序结束后由系统释放。5、程序代码区存放函数体的二进制代码。 阅读全文
posted @ 2011-03-03 21:37 suncode 阅读(251) 评论(0) 推荐(0)

摘要:剪贴板定义剪贴板是由操作系统维护的一块内存区域,这块内存区域不属于任何单独的进程,但是每一个进程又都可以访问这块内存区域,而实质上当在一个进程中复制数据时,就是将数据放到该内存区域中,而当在另一个进程中粘贴数据时,则是从该块内存区域中取出数据。相关API剪贴板的打开 – OpenClipboardBOOL OpenClipboard(HWNDhWndNewOwner);hWndNewOwner指向一个与之关联的窗口句柄,即代表是这个窗口打开剪贴板,如果这个参数设置为NULL的话,则以当前的任务或者说是进程来打开剪贴板。如果打开剪贴板成功,则该函数返回非0值,如果其他程序已经打开了剪贴板,那么当 阅读全文
posted @ 2011-03-03 20:36 suncode 阅读(883) 评论(0) 推荐(0)

摘要:简单理解Windows的消息消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。消息一般用一个32位的数来标识,这个数唯一地标识这个消息。这些消息的标识符一般在头文件winuser.h 中定义,如: #define WM_PAINT 0x000F #define WM_QUIT 0x0012 其实消息本身是一个MSG结构。MSG结构定义如下:typedef struct tagMSG{ HWND hwnd; //接受消息的窗口句柄 UINT message; //消息标识符 WPARAM wParam; //32位附加信息 LPARAM lParam; //32位附加信息 D 阅读全文
posted @ 2011-03-03 20:06 suncode 阅读(2005) 评论(0) 推荐(2)

摘要:D7, classes tstrings 没有strictdelimiter属性,在string转tstrings时,不能分别字符串带空格的情况,View Code function StrToStrs(s:string,cp:chr, rs_s:^TStrings);Var T : integer;begin T := 1; While True do begin if PosEx(cp,s,T) = 0 then begin rs_s.Add(Midstr(s,T,Length(s)-T+1)); Break; end; rs_s.Add(Midstr(s,T,(PosEx(cp,s,T) 阅读全文
posted @ 2011-03-03 16:56 suncode 阅读(2064) 评论(0) 推荐(0)