随笔分类 -  C++

摘要:#ifndef UNICODE#define UNICODE#endif#include <windows.h>#include <stdio.h>#define NT_SUCCESS(x) ((x) >= 0)#define STATUS_INFO_LENGTH_MISMATCH 0xc0000004#define SystemHandleInformation 16#define ObjectBasicInformation 0#define ObjectNameInformation 1#define ObjectTypeInformation 2typed 阅读全文
posted @ 2013-06-06 21:50 瓜蛋 阅读(2675) 评论(0) 推荐(0) 编辑
摘要:14.1 系统信息 操作系统中有许多值 是由系统所运行的主机所决定的。如果页面大小和分配粒度等。我们决对不应该在代码中将这些值写死。 此函数得到系统信息VOID GetSystemInfo(LPSYSTEM_INFO ps) 如果想得到机器中与处理器有关的详细信息可以调用GetLogicalProc 阅读全文
posted @ 2013-05-25 14:35 瓜蛋 阅读(1898) 评论(0) 推荐(1) 编辑
摘要:13.6页面保护属性 内存页面保护属性有 PAGE_NOACCESS、PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE、PAGE_WRITECOPY、PAGE_EXECUTE_WRIT 阅读全文
posted @ 2013-05-14 18:14 瓜蛋 阅读(1124) 评论(0) 推荐(0) 编辑
摘要:13.1 进程虚拟地址空间 每个进程都有自己的专有地址空间,对32位进程来说,这个地址空间的大小为4GB,这是因为32位指针可以表示从0x00000000-0xffffffff的任意值。对64位进程来说则可以表示0x0000000000000000 到0xffffffffffffffff之间任一值。 阅读全文
posted @ 2013-05-12 18:03 瓜蛋 阅读(716) 评论(0) 推荐(0) 编辑
摘要:原文出处忘记了。。。此宏很神奇#define FIND(structTest,e) (size_t)&(((structTest*)0)->e) struct test { int a; int b; char c; int d; }; size_t s = FIND(test,a); cout<<s<<endl; //输出结构体偏移 阅读全文
posted @ 2013-05-08 13:28 瓜蛋 阅读(228) 评论(0) 推荐(0) 编辑
摘要:Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作为其唯一的参数,实现者可以通过该指针进一步获取Lua代码中实际传入的参数。返回值是整型,表示该C函数将返回给Lua代码的返回值数量,如果没有返回值,则return 0即可。需要说明的是,C函数无法.. 阅读全文
posted @ 2013-04-20 21:33 瓜蛋 阅读(475) 评论(0) 推荐(0) 编辑
摘要:1. 栈1.1 说明lua与C语言操作都是通过栈来进行的。这个栈是抽象的栈,栈中每一个元素都能保存任何类型的LUA值。 要获得一个lua中的一个值时(例如一个全局变量),只要调用一个Lua的Api函数,Lua就会将指定的值压入栈中。 要将一个值传入Lua时,需要先将这个值压入栈,然后再调用Lua Api,Lua就会获取值并将此值从栈中弹出。 几乎所有的lua api都会使用到栈,luaL_loadbuffer将它的结果(编译好的程序或错误消息)留在栈中;lua_pcall会调用栈中的一个函数,若发生错误则将错误信息留在栈中。 1.2 栈的索引与查询元素以栈底为参考物:api... 阅读全文
posted @ 2013-04-09 13:29 瓜蛋 阅读(3617) 评论(2) 推荐(0) 编辑
摘要:common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里也只给出了一些如风的解释和例子,没有谁告诉你你想知道的,和究竟这个特性有什么好处。Custom draw可以被想象成一个轻量级的,容易使用的重绘方法(重绘方法还有几种,例如Owner Draw等)。这种容易来自于我们只需要处理一个消息(NM_CUSTOMDRAW),就可以让Windows为你干活了,你就不用被逼去处理"重绘过程"中所有的脏活了。这篇文章的焦点是如何在一个LISTCTRL控件上使用Custom Draw消息。究其原因,一部分是因为我已经在我 阅读全文
posted @ 2013-02-11 19:34 瓜蛋 阅读(331) 评论(0) 推荐(0) 编辑
摘要:No SynchronizationThis first example illustrates two unsynchronized threads. The main loop, which is the primary thread of a process, prints the contents of a global array of integers. The thread called "Thread" continuously populates the global array of integers.Collapse|Copy Code #includ 阅读全文
posted @ 2013-01-30 12:05 瓜蛋 阅读(267) 评论(0) 推荐(0) 编辑
摘要:---------------------------------------------------线程----------------------------------------------------CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) listen,NULL,0,&IDThread);参数1 : 按MSDN上的说法,为空时handle不可以被继承.参数2 : 栈的大小, 为0时取默认值.参数3 : 线程函数指针, 上面的listen就是函数名参数4 : 传给函数的参数指针, 因为只能传一个, 通过struct把所有参数装在 阅读全文
posted @ 2013-01-29 14:43 瓜蛋 阅读(3081) 评论(0) 推荐(0) 编辑
摘要://以下在DialogInit消息中写 SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000); this->SetTimer(245,100,NULL);void CLayerWndDlg::OnTimer(UINT_PTR nIDEvent){ // TODO: 在此添加消息处理程序代码和/或调用默认值 static int i = 0; if(nIDEvent == 2... 阅读全文
posted @ 2012-12-10 21:47 瓜蛋 阅读(866) 评论(0) 推荐(0) 编辑
摘要:一. AES对称加密: AES加密 分组二.分组密码的填充 分组密码的填充 PKCS#5填充方式三.流密码:四.分组密码加密中的四种模式:3.1 ECB模式优点:1.简单;2.有利于并行计算;3.误差不会被传送;缺点:1.不能隐藏明文的模式;2.可能对明文进行主动攻击;3.2 CBC模式:优点:1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。缺点:1.不利于... 阅读全文
posted @ 2012-10-18 16:21 瓜蛋 阅读(387) 评论(0) 推荐(0) 编辑
摘要:#pragma onceclass LogFile{protected: CRITICAL_SECTION _csLock; char * _szFileName; HANDLE _hFile; bool OpenFile();//打开文件, 指针到文件尾 DWORD Write(LPCVOID lpBuffer, DWORD dwLength); virtual void WriteLog( LPCVOID lpBuffer, DWORD dwLength);//写日志, 可以扩展修改 void Lock() {::EnterCriticalSec... 阅读全文
posted @ 2012-10-09 13:46 瓜蛋 阅读(1878) 评论(0) 推荐(0) 编辑
摘要:int x = GetDlgItemInt(IDC_EDIT1) ; //要移动到的 x 坐标 int y = GetDlgItemInt(IDC_EDIT2) ; // y int cx_screen = ::GetSystemMetrics(SM_CXSCREEN); //屏幕 宽 int cy_screen = ::GetSystemMetrics(SM_CYSCREEN); // 高 int real_x = 65535 * x / cx_screen; //转换后的 x int real_y = 6553... 阅读全文
posted @ 2012-09-22 10:31 瓜蛋 阅读(5363) 评论(0) 推荐(2) 编辑
摘要:本文大部分来自《windows核心编程》。 例1 通过使用终止处理程序可以防止过早的执行return语句。当return语句试图退出try块的时候,编译器会让finally代码在它。即编译器保证finally代码块在出try块的时候return之前执行。 者可以想知道,编译器是如何保证此功能的呢?原 阅读全文
posted @ 2012-08-01 19:56 瓜蛋 阅读(3389) 评论(0) 推荐(0) 编辑
摘要:有些时候需要用程序检索网络上的数据,比如要取出特定网页上的特定文字等。。二话不说,直接上代码了效果:void __fastcall TFormMain::btn_1Click(TObject *Sender){ OutPutLog("正在获取网页数据...."); TMemoryStream *ms=new TMemoryStream; IdHTTP1->Get(g_Url,ms);//g_Url是网页网址 const int msSize=ms->Size; LPSTR lpBuf=new char[msSize]; ms->Position=0; .. 阅读全文
posted @ 2012-07-22 19:02 瓜蛋 阅读(1081) 评论(2) 推荐(0) 编辑
摘要:IntroductionArrrgh! So you need to run your console app via a primary application, well ye've come to the right place. This article is intended for those who need to run one of those pesky little console applications without the console window popping up over your main app or worse popping up wh 阅读全文
posted @ 2012-06-29 13:57 瓜蛋 阅读(277) 评论(0) 推荐(0) 编辑
摘要:在多线程中发现这问题数据库组件的构造放在构造函数里就正常了,不能放在Execute函数执行体内 阅读全文
posted @ 2012-06-14 13:08 瓜蛋 阅读(409) 评论(0) 推荐(0) 编辑
摘要:估计很多人都知道装载DLL过程中的多线程死锁是因为DllMain的顺序调用规则,但是很少人了解卸载DLL过程中的多线程死锁也是由于同样的原因。例如,如果一个DLL的DllMain的代码写成下面的形式,且进程中有至少一个DLL的DllMain没有调用DisableThreadLibraryCalls函数的话,那么卸载该DLL过程中就会因为DllMain的顺序操作特性带来DLL内部线程没有完全退出的错误。 //----------------------start ------------HANDLE g_thread_handle =NULL; // 该DLL内部线程的句柄... 阅读全文
posted @ 2012-06-12 00:28 瓜蛋 阅读(4043) 评论(1) 推荐(1) 编辑
摘要:// Critsetion.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <iostream>#include <process.h>using namespace std;CRITICAL_SECTION g_cs;char name[]="zhangdongsheng";unsigned __stdcall ThreadPoc1( void* pArguments){ while (1) { EnterCriticalSe 阅读全文
posted @ 2012-03-27 17:37 瓜蛋 阅读(447) 评论(0) 推荐(0) 编辑