- 博客(55)
- 资源 (3)
- 收藏
- 关注
原创 引用&出现错误
注意 引用的地址只能是变量不能是常量例如 char ch[250];function(char &ch)假如现在调用function(ch) 那么会出错原因:引用的变量不能是常量。ch[0]的地址是固定的解决办法:char *p = ch; 此时cunction(p)则不会出问题,原因在于p是可以变化的
2008-09-28 17:57:00 866
原创 length += int(&client_info.connection_state) - int(client_info.h_vir_channel); 出现异常数据
length += int(&client_info.connection_state) - int(client_info.h_vir_channel); 出现异常数据 发现length是一个巨大的数值,原因在于int(client_info.h_vir_channel) 忘记求地址,一个地址减去一个数值 ,自然就是一个很大的数据
2008-09-27 20:20:00 660
原创 static void CSample::Function()的定义 出错原因
函数定义 是不可能有返回值是static 类型,因为程序在被调用后才能返回 ,此时已经运行,那么是不能为静态的。
2008-09-27 11:59:00 677
原创 内存泄漏问题
通常出现内存泄漏,是因为动态分配的空间没有释放,可能会认为只要保证new delete配对使用就不会出现这中情况,其实不如,例如当用createfile 获得一个句柄的时候,如果程序退出时没有closehandle,那么此时很有可能会出现内存泄漏。因为句柄是一个索引,是一个指向指针的指针。
2008-09-27 09:18:00 665
原创 管道读写问题
在同一进程中,如果对于同一个管道,在两个或者两个以上的线程中进行读写操作,会发生死锁现象,比如一个线程在监听读的时候,这时如果要进行写操作,将发生死锁。解决办法,在每个线程中各创建一条管道。这里注意一点 ,创建的管道要是双向的,而且名字要符合规定,管道两边对应的管道名字要一致HANDLE CreateNamedPipe( LPCTSTR lpName, DWORD dwOpenMode
2008-09-27 09:09:00 2913
原创 内存分配访问无效。 998 错误提示
当用BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); lpBuffer [out] A pointer to the buffer that receive
2008-09-26 11:37:00 6512
原创 主线程设计问题
主线程虽然是最大的线程,不过通常情况下主线程需要维护一个界面,这个时候如果主线程去处理一些系统事件的时候,代码量过于庞大,将会使得界面过于迟钝,所以最好的办法是开线程异步处理。
2008-09-26 10:16:00 615
原创 重叠I/O正在进行中 错误提示
原因:这是在异步读写操作中,如果数据还没有读写完毕,会发出一个这样的错误提示,此时并不代表真正的错误,仅仅提示需要等待其完成读写操作,用WaitForSingleObject等待其完成操作。
2008-09-26 09:42:00 3280
原创 writefile /readfile 提示无效句柄
首先介绍下 这两个函数的原型:BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);BOOL WriteFile( HANDLE hFile
2008-09-26 09:39:00 4741
原创 服务端没法监听客户端连接断开的问题
原因: 程序初始化时候,没有注册消息,以及处理该消息的例程函数在程序初始化时要用API 注册WTSRegisterSessionNotification(this->m_hWnd, NOTIFY_FOR_ALL_SESSIONS);这样 系统接收到消息后会发送给WndProc,在WndProc中进行相应的处理.
2008-09-26 09:35:00 1173
原创 当前操作的句柄无效
应用程序验证程序停止消息检测到句柄冲突。用于当前操作的句柄无效。可能的原因如果堆栈顶部的函数将无效句柄传递到了系统例程,则会生成此停止。另一个典型例子就是在关闭了句柄后又使用该句柄。如果在 Windows XP 上使用 NULL 句柄,也会生成此停止。应用程序验证程序在工具窗口中显示的信息句柄 - 句柄值说明 - 用于当前操作的句柄无效其他信息 - 句柄上最新记录的操作的堆栈跟踪其他信息如果在关
2008-09-25 19:37:00 6378
原创 理解句柄
所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,
2008-09-25 19:36:00 552
原创 同步变异步的方法
异步函数是如何实现的?与多线程有什么区别?异步函数,其实是把调用分成了很多步骤来实现,在外面看来,就象是异步,其实现机制还是有许多小同步调用组成。Top2 楼yhlubber(lu)回复于 2002-10-18 12:55:09 得分 20其实就是由函数提供者实现多线程。Top3 楼cuiwader(一叶知秋)回复于 2002-10-18 13:16:56 得分 30异步函数是肯定要使用多线程的。
2008-09-25 09:13:00 2070
原创 写程序时注意 LPCSTR LPSTR的区别
LPCSTR LPSTR的区别 我想你很快可以告诉我 一个指向常量值不能修改,一个指向变量,值可以修改 然而这两个类型仅仅就一个C字符的区别,容易发生笔误,我写程序的时候,就是因为把一个变量不小心声明成LPCSTR 结果,然后作为参数传入一个函数 WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,lParam,WTSConne
2008-09-24 16:12:00 988
原创 监听管道 线程该放在何处
ListenPipe设计方法一:放在BOOL CQQCDlg::OnInitDialog() 中,这样简单方便缺陷:如果没有调用mstsc.exe 那么当关闭窗口时候,由于客户端没有断开连接,导致ListenPipe线程没法结束,会出现错误,使得程序死掉。解决办法:将listenpipe与 mstsc.exe放在一个函数里面
2008-09-24 09:28:00 847
原创 虚拟通道没法初始化问题
症状:没法初始化虚拟通道,返回错误码6,在Cchannel.h中找到答案,#define CHANNEL_RC_BAD_CHANNEL 6原因:The pChannel parameter is incorrect or one of the channel names is syntactically incorrect. 这里顺便插入初始化虚拟通道的函数,因为要解释其中的一个参数pCh
2008-09-23 17:23:00 895
原创 线程句柄问题
写程序的时候总是喜欢图省事,不去保存线程句柄,或者不去初始化线程句柄为NULL,当释放资源时候,关闭句柄倘若此时句柄为NULL,而调用了关闭句柄函数CloseHandle,这个函数的作用不是退出线程,而是减少对某一资源的计数,有人可能不相信,想想事件,信号量,互斥体,是如何被关闭的,我想你会认同我的看法,这个函数每被调用一次,其资源的使用个数减少1,而减到0为下限,倘若这个时候继续调用Close
2008-09-23 15:50:00 824
原创 winthread exit 0x2 原因
winthread exit 0x2 原因 是因为在创建线程的时候,没有保存线程句柄,系统退出时没有关闭该线程的句柄。
2008-09-23 15:42:00 544
原创 定时器的理解
设置定时器的方法如下: UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);关于这个函数,MSDN上有解释,其中对lpTimerFunc解释如下:lpTimerFunc [in] Pointer to the func
2008-09-23 11:24:00 947
原创 减少线程占用cpu
// Function: static UINT __stdcall CQQCDlg::WorkThreadProc(LPVOID lpparameter)// Description:handle all of the message which GetMessageQueue get.// In Arguments: thread parameter// Out Arguments : non
2008-09-23 10:51:00 1224
原创 ClistCtrl设置报表,以及获取报表信息
http://www.ucancode.net/CPP_Library_Control_Tool/VC_MFC_Totorial_CListCtrl_InsertItem_SetImageList_Article.htm YOU CAN CODE! With The Case Of UCanCode.net Rel
2008-09-20 19:27:00 2181
原创 IT词汇
斑竹 (俗に)BBSの管理人 =〔版主〕 病毒 ウィルス 【virus; computer virus】 殺毒軟件 ワクチンソフト; アンチウィルスソフト 【vaccine software; antivirus software】 【antivirus software】 防火墻 ファイアウォール 数碼撮像機
2008-09-20 15:39:00 740
原创 实用网址大集合
日语学习 和风日语 http://www.jpwind.com 标准日语在线学习 http://www.jpwind.com/studyol/br.htm 新编日语在线学习 http://www.jpwind.com/studyol/xb.htm 日本语初级网络教程(初学者必看)http://col.njtu.edu.cn/zskj/1013/japanese.html 日语语法网站 h
2008-09-20 11:02:00 2839 2
原创 How to select CListCtrl item question
http://www.codeguru.com/forum/archive/index.php/t-221250.html Ok, I searched the archives and have asked this question before with no response so I am asking it again. I am still trying to sele
2008-09-19 19:39:00 1551
原创 How to get CListCtrl clicked item information !!
you can use the follwing functions to find out the row selected or clicked.POSITION posList=m_MyListControl.GetFirstSelectedItemPosition( );int nGetNextSelectedItem=m_MyListControl.GetNextSelectedItem
2008-09-19 17:43:00 637
原创 c语言 结构(struct)和联合(union)简介
c语言 结构(struct)和联合(union)简介2008年08月27日 星期三 23:191. struct的巨大作用面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要 涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度
2008-09-17 16:50:00 1502 1
原创 网络发送数据块的方法
memcpy(buffer,(char *)&str_a,sizeof(str_a)); memcpy(buffer+sizeof(str_a),(char *)&str_a,sizeof(str_a)); str_b = *(STR_A *)buffer; cout cout str_b = *(STR_A *)(buffer+sizeof(str_b)); cout
2008-09-17 16:36:00 498
原创 strcpy ,memcpy区别
// strcpy(buffer,(char *)&str_a);strcpy复杂过程中若是遇到0则会结束 memcpy(buffer,(char *)&str_a,sizeof(str_a));memcpy则是整块的拷贝 char buffer[128]; STR_A str_b; STR_A str_a ; str_a.b = 3; str_a.c =
2008-09-17 16:32:00 764
原创 我用WtsApi32.lib实现Session方面的编程
我用WtsApi32.lib实现Session方面的编程 WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_ALL_SESSIONS); WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) {
2008-09-16 13:08:00 3121 1
原创 WTSRegisterSessionNotification 用法
C/C++ code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_THIS_SESSION);退出时
2008-09-16 11:53:00 4920
原创 WTSRegisterSessionNotification() API to receive session switch notification
ou might want to look at theWTSRegisterSessionNotification() API to receive session switch notification. (consult msdn)Comment from PeterLarsen Date: 02/25/2003 12:58AM PSTAuthor Comm
2008-09-16 11:33:00 6872
转载 BUG: WTSWaitSystemEvent Returns Terminal Services Event Twice
BUG: WTSWaitSystemEvent Returns Terminal Services Event TwiceView products that this article applies to.function loadTOCNode(){}Article ID:249315Last Review:November 21, 20
2008-09-16 10:07:00 1324
原创 #ifdef __cplusplus extern "C" {
C++中因为函数可以重载: int a(char) int a(int) int a(double)... 所以,在编译后的代码里,三个a()是不同的函数名如a_char_xxx,a_in_xxx,a_double_xxx等等. 要去掉后面的一大串符号只要在a()前面加上exter "C"即可 在DLL的对外接口函数
2008-09-12 19:54:00 501
原创 常用嵌入式操作系统
嵌入式操作系统是用于嵌入式开发领域的,和通常所说的桌面操作系统的不一样的。主要就是三种: 开源的 嵌入式linux操作系统 微软的 WindowsCE操作系统 风河的 Vxworks操作系统 其他的还有uClinux、PalmOS、Symbian、eCos、uCOS-II、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive等等等等。
2008-09-12 19:22:00 689
原创 监听会话ID
HOW TO: 编写在 Windows XP 中支持快速用户切换的应用程序察看本文应用于的产品function loadTOCNode(){}文章编号:310153最后修改:2002年2月23日修订:1.0本文的发布号曾为 CHS310153本页概要要求创建 Win32 应用程序 添加接收会话切换通知的代码确认会话切换通知检测现有应用程序实例将现有应用程序实例设置到前台测试应用程序检测疑难解答
2008-09-09 17:04:00 1702 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人