- 博客(231)
- 资源 (4)
- 收藏
- 关注
原创 多线程--同步(Critical Section临界区)
//临界区#i nclude #i nclude extern int tickets;//临界区对象CRITICAL_SECTION csMyCriticalSection;DWORD WINAPI thread_CS_Fun1Proc(LPVOID lpParameter){ while (true) { //进入临界区 EnterCriticalSection (&cs
2006-11-05 13:40:00 1784
原创 多线程--同步(概述)
线程同步的方法一般有以下几种,vc下实现方法有sdk, 和MFC封装类两种1临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2互斥量(Mutex):为协调共同对一个共享资源的单独访问而设计的。 3信号量(Semaphores):为控制一个具有有限数量用户资源而设计。 4事 件(Event):用来通知线程有一些事件已发生,从而
2006-11-05 13:40:00 5409 2
原创 dll--几种基本实现及调用方法
1。dll的建立选择win32的dll lib工程, 建立一个cpp文件,代码如下:_declspec(dllexport) int add(int a, int b){ return a+b;}注意前面的标识_declspec(dllexport),表示dll的输出函数。每个输出的函数都要用这个进行标识。可以进行dll所在目录用dumpbin -exports dll1.dll 查看
2006-11-05 13:36:00 5125 1
原创 绘图-根据Mouse状态画图
m_isUp 保存是否抬起鼠标m_startPoint 保存鼠标起点位置void CDlg_DCTest1::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); m_isUp = false;
2006-11-05 13:34:00 937
原创 绘图-图像绘制相关
OnCtlColor每个控件在绘制时,都会向父窗口(通常都是dialog)发送一个WM_CTLCOLOR消息,用来返回一个Cbrush句柄,用来绘制自己.HBRUSH CDlgDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlCol
2006-11-05 13:25:00 733
原创 修改windows的登录界面
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/GinaDLL二进制 NoReboot.DLL在这个下面添加一个hook好像就可以。
2006-11-05 13:24:00 749 1
原创 多线程--同步(事件Event)
事件分为两类:人工重置, 自动重置人工重置时,所有等待线程都变为有信号状态。并且持续保持有信号状态,除非显式调用ResetEvent(g_hEvent);自动重置则不。所以人工重置不利于做线程同步。创建事件 g_hEvent = CreateEvent(NULL, false, false, NULL);param1:安全级别,设置为NULL, 取得默认值param2:人工重置(t
2006-11-05 13:23:00 2752
原创 定时器
定时器的原型是: WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); hWnd 是欲设置定时器的窗体句柄。定时时间到时,系统会向该窗体发送WM_TIMER消息。 nIDEvent 定时器标识符。在一个窗体内可以
2006-11-05 13:22:00 614
原创 hook-简要实现
hook一般建立在dll中。在dll中完成hook安装,卸载。hook安装:hhook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)beep, hInstance, 0);其中WH_KEYBOARD是hook要监控的类型,这儿是键盘消息。(HOOKPROC)beep是截获消息后的处理函数hInstance是要安装钩子的程序实例,如果某个程序是给自
2006-11-05 13:21:00 616
原创 托盘程序创建
1。先定义一个NOTIFYICONDATA类型的变量 typedef struct _NOTIFYICONDATA { DWORD cbSize; //以字节为单位的这个结构的大小 HWND hWnd; //接收托盘图标通知消息的窗口句柄 UINT uID; //应用程序定义的该图标的ID号 UINT uFlags; //设置该图
2006-11-05 13:20:00 600
原创 menu与toolbar
vc 中menu与toolbar是有关联的。如果把toolbar中button的ID号设置为和menu中某一项相同,那么在点击toolbar时,就会调用相应的菜单而menu菜单对应的项前也会显示toolbar中的图标。 如何导入其它图标到toolbar中。在项目目录下有一个res目录。toolbar中的图标会显示成一个位图。只要按对应的位置编辑这个位图,再保存即可。回到vc中会
2006-11-05 13:19:00 723
转载 VC++中进程间相互通信的十一种方法
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏的
2006-11-05 13:18:00 669
原创 枚举进程,枚举窗口
枚举进程要用到下面几个函数1。HANDLE handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);得到一个processes and the heaps, modules, and threads 的快照,参数0表示从当前进程取得。2。PROCESSENTRY32 procinfo;procinfo.dwSize = si
2006-11-05 13:16:00 2361
原创 文件的合并与分割
文件的合并与分割其实比较简单,分割时将一个大文件按二进制方式读取,然后按二进制写成一个个小文件。合并时就把小文件顺次读取,再写入一个大文件。下面是一个简单的例子://文件分割, 二进制读取void CMyupdateDlg::OnBinary() { UINT nNewSize = 500000; //分成每个文件为512k UINT nPerSize = nNewSize/10; //每
2006-11-05 13:15:00 747
原创 进程间通讯-共享内存2(代码)
下面是创建共享内存的进程中的一段代码://共享内存 实现进程通讯void CMyupdateDlg::OnFilemapping() { HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 1000000, "DataMap"); if(!hFile) {
2006-11-05 13:13:00 1190
原创 进程间通讯-共享内存
先说一种比较类似的方法。通过发送WM_COPYDATA来传送数据。如果用SendMessage发送,发送方要等待接收方返回,期间发送方将被阻塞。如果用PostMessage发送,在数据发送过于频繁时,有可能发生数据丢失。所以在发送大数据量时,从性能方面考虑WM_COPYDATA并不是很好的一种方法。 共享内存是通过直接操作内存映射文件来进行的,而内存映射文件又是进行单机数据共享
2006-11-05 13:13:00 886
原创 vc中编写com组件供Asp使用时的注意问题
1。对象创建 Set cls = Server.CreateObject("Simplealt.first_alt") b = cls.funsum3(5) response.write "b: " & b%>以上是asp中调用的样式。在创建com对象时,要一个com对象创建时的工程名,一个接口名在vc中创建com时,工程名为:Simplealt 接口名:Ifirst_alt
2006-11-05 13:12:00 1371
原创 com-采用sdk方式编写概述
com相关的概念1. 何为com微软提出了C O M(Component Object Model, 中文也可以译作"组件对象模型")COM组件是完全与语言无关的,开发后,可以供其它开发语言使用。2.如何调用com进程内com其实是一个Dll, 这个dll与普通dll有些区别,就是可以通过regsvr32之类的程序进行注册,注册过程其实是将com的clsid写入注册表,并给出dll的物理路
2006-11-05 13:10:00 1227
原创 查看事件发生顺序的方法
可以在窗体的消息处理函数中:LRESULT CSkinWnd::WindowProc(UINT msg, WPARAM wp, LPARAM lp){ static int i; char buf[32]; sprintf(buf,"%d 0x%04x/n",i++,msg); OutputDebugString(buf); 。。。。。。}
2006-11-05 13:07:00 900
原创 Visual Studio.Net 快捷键表
快捷键 功能CTRL + SHIFT + B生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTRL + F12转到声明CT
2006-11-05 13:01:00 404
原创 指针的一些概念
概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 下面看一些概念 *指针的类型 *指针所指向的类型 *指针的值或者叫指针所指向的内存区 *指针所指向内存区域的值 *指针本身所占据的内存区 指针的类型:指针本身的类型,比如 int *i 则指针类型为 int * ,即去掉变量剩下的部分为指针的类型。 指针所指向的类型:指针所指向变量的类型,比如 int *i 指针向i
2006-11-05 13:00:00 620
原创 指针类型
int *i; 普通指针,它指向int类型数据int **i; 指向指针的指针,它指向一个int *指针int *p[5]; 指针数组,p是一个且有5个元素的数组,p的元素是一个int *型指针int (*p)[5]; 数组指针,p是一个指针,它指向一个且有5个元素的数组。int (*p)(void) 函数指针,p 是一个函数指针,这类函数具有int型
2006-11-05 12:59:00 689
原创 复杂指针判别
右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的。 右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。 笔者要对这个
2006-11-05 12:58:00 772 1
转载 内存区域说明
摘要:内存管理向来是C/C++程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它。虽然利用C++中的smart pointer已经可以完全避免使用指针,但是对于对于指针的进一步了解,有助于我们编写出更有效率的代码,也有助于我们读懂以前编写的程序。 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由
2006-11-05 12:56:00 590
原创 C中几种相对不常用类型 - 结构体
结构体定义方法struct person { char name[10]; int age; char sex;};变量定义方法方法1:struct person { char name[10]; int age; char sex;};struct person jim; //定义时,前面要加struct方法2:struct person { char name[10]; in
2006-11-05 12:55:00 916
原创 C中几种相对不常用类型 - 联合体
vinep 发表于 2005-11-22 13:47:10 union a_bc{ int i; char mm; }; 与结构体用法相似,下面是几点不同:1. 结构和联合都是由多个不
2006-11-05 12:52:00 661
原创 C中几种相对不常用类型 - 枚举
enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数], ... 标识符[=整型常数], } 枚举变量;如果后面整形常数没有初始化的话,枚举元素的值从0开始向后排enum chars {a, b, c};chars mychar = a;
2006-11-05 12:50:00 664
原创 预处理
由ANSI的标准规定, 预处理指令主要包括: #define #error #if #else #elif #endif #ifdef #ifndef #undef #line #pragma #define 指令宏定义指令#define BUFSIZE 20#define MAX(x
2006-11-05 12:49:00 686
原创 断言
#i nclude void fun(int p) { assert(0 != p);}当fun传递参数为0时,即不满足assert的判断时,程序会异常退出。assert只在debug模式下才起作用,Resele模式下就不起作用了。vc中,有debug, resele两种模式,(可以在编译->放置可远行配置中设置),resele模式(发布版本)对代码进行了优化,并且assert不起作用。
2006-11-05 12:48:00 695
原创 linux-c: ipc_共享内存
简介共享内存是进程间通讯的一种机制,在数据量较大时,比较合适。每个共享内存对象都有一个shmid_ds结构体与之对应,代表共享内存的一些信息。因为shm是SYSV子系统的一种机制,所以有SYSV的一些特性,1、引用标识符:用来访问对象2、键:定位引用标识符3、ipc_perm结构:记录一些状态信息要引入的文件 #i nclude #i nclude #i nclude 创建共享内存与打
2006-11-05 12:45:00 2989
原创 vb打开窗体时的面像对象
要打开一个窗体form2Dim frm2 as form2Set frm2 = new form2frm2.ShowFormForm2中:public Sub ShowForm() .....End Sub
2006-11-05 12:34:00 912
原创 单页方法的后果
* HTML 和 asp 强耦合在一起asp 文件的编写者必须既是网页设计者,又是 asp 开发者。其结果通常要么是很糟的 asp 代码,要么是难看的网页,有时甚至 asp 代码和网页都很糟。* 内嵌的流程逻辑要理解应用程序的整个流程,您必须浏览所有网页。试想一下拥有 100 个网页的网站的错综复杂的逻辑。* 调试困难除了很糟的外观之外,HTML 标记、asp 代码和 JavaScript
2006-11-05 12:30:00 586
原创 jstl EL(表达式语言)
EL操作符. 访问bean属性或map条目[] 访问数组或list元素() +-*/ or div% or mod== or eq!= or ne> or gt>= or gt&& or and|| or or! or notempty 对空的变量进行测试(null或空的String, 数组, Map, List)每个有效的EL变量都可以使用上面的操作符,EL变量可以用
2006-11-05 12:29:00 1995 1
原创 jbuilder常用快捷键
1. 工作区显隐ctrl+alt+z 状态面板ctrl+alt+s 结构面板ctrl+alt+m 消息面板ctrl+alt+p 工程面板ctrl+alt+c 代码面板2.页面切换ctrl+f6 在各代码窗体上切换ctrl+b 切换窗体ctrl+ - 类查询ctrl + enter 跟踪文件ctrl+shift +num 加书签 ctrl+num
2006-11-05 12:27:00 736
原创 java教程(1)环境配置
1。查看环境变量的配置 Linux: env Windows: set2。Administrator, 系统 环境变量的区别 Administrator: 只对administrator用户有效 系统: 对所有用户有效3。path 与 classpath path: 知道程序在哪里, 如java, javac等 在任
2006-11-05 12:20:00 697
原创 java调用外部程序执行
try ...{ //just for window String[] command = new String[] ...{"cmd.exe", "/c", "copy", filePath, "FSOBACK"}; Process p = Runtime.getRuntime().exec(command); p.waitFor();
2006-11-05 12:11:00 1134
原创 java多态要注意的一个问题
class food { public String name = "food"; public void showMess(String mess) { System.out.println("food.showMess=" + mess); } public String getName() { return this.name; }}class bread
2006-11-05 12:10:00 709
转载 JDBC连接各种数据库经验技巧集萃
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各 个开发商的接口并不完全相同,所以开发环境的变
2006-11-05 11:47:00 772
ireport用户手册(中文)
2009-07-31
《最后期限.pdf》 项目管理 软件工程
2009-03-25
Hibernate开发指南
2009-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人