<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[johnice的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/johnice</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; johnice]]></copyright><item><title><![CDATA[获取文件长度]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/6822152</link><guid>https://blog.youkuaiyun.com/johnice/article/details/6822152</guid><author>johnice</author><pubDate>Mon, 26 Sep 2011 14:27:52 +0800</pubDate><description><![CDATA[FILE* pF = fopen("123.txt", "r");
if (!pF)
{
printf("open file fail !\n");
return 0;
}

int nres = fseek(pF, 0L, SEEK_END);    -- 设置文]]></description><category></category></item><item><title><![CDATA[根据class/struct中一个成员的地址，获取该class/struct的地址]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/6695756</link><guid>https://blog.youkuaiyun.com/johnice/article/details/6695756</guid><author>johnice</author><pubDate>Wed, 17 Aug 2011 17:56:57 +0800</pubDate><description><![CDATA[使用 winnt.h 下的宏： CONTAINING_RECORD
#define CONTAINING_RECORD(address, type, field) ((type *)( \]]></description><category></category></item><item><title><![CDATA[c++ 不定参数]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/6687432</link><guid>https://blog.youkuaiyun.com/johnice/article/details/6687432</guid><author>johnice</author><pubDate>Mon, 15 Aug 2011 09:39:19 +0800</pubDate><description><![CDATA[va_list vlist;
va_start(vlist, pszFormat);                   // pszFormat 表示 ... 的前一个参数
va_end(vlist);



其中：
typedef char * va_list]]></description><category></category></item><item><title><![CDATA[c++ 在win32程序中打开控制台 并重定向输出]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/6218414</link><guid>https://blog.youkuaiyun.com/johnice/article/details/6218414</guid><author>johnice</author><pubDate>Wed, 02 Mar 2011 15:57:00 +0800</pubDate><description><![CDATA[#ifdef _DEBUG		// Release版禁用
		AllocConsole();						//打开控制台窗口以显示调试信息
		SetConsoleTitleA("Debug Win: JXEX_GAME");		//设置标题
		HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);		//获取控制台输出句柄
		INT hCrt = _open_osfhandle((INT)hCon, _O_TEXT);		//转化为C文件描述符
		FIL]]></description><category></category></item><item><title><![CDATA[C# 启动进程 重定向IO 死锁避免]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5577440</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5577440</guid><author>johnice</author><pubDate>Tue, 11 May 2010 10:05:00 +0800</pubDate><description><![CDATA[创建一个cmd进程，执行一个ping命令，代码如下              Process process = new Process();            process.StartInfo.FileName = "cmd.exe";            process.StartInfo.UseShellExecute = false;   // 是否使用外壳程序]]></description><category></category></item><item><title><![CDATA[c++ 与 lua 简单交互1 （LUA CAPI）]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5517431</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5517431</guid><author>johnice</author><pubDate>Thu, 22 Apr 2010 20:43:00 +0800</pubDate><description><![CDATA[一、第一个例子 Hello World ！ #include #include #include "lua.h"#include "lauxlib.h"#include "lualib.h"int main (void){	char buff[256];	int error;	lua_State *L = lua_open(); /* opens L]]></description><category></category></item><item><title><![CDATA[effective c++ 第三版 读书笔记2]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5513745</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5513745</guid><author>johnice</author><pubDate>Wed, 21 Apr 2010 23:02:00 +0800</pubDate><description><![CDATA[5：了解C++默默编写并调用哪些函数	1 当创建空类时，编译器就会为它创建一个copy构造函数、一个copy assignment操作符和一个析构函数	此外，如果没有声明构造函数的话，编译器会为我们生成一个default构造函数 	例：		class Empty { };	实际：		class Empty		{		public:			Empty() { ..]]></description><category></category></item><item><title><![CDATA[effective c++ 第三版 读书笔记1]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5498524</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5498524</guid><author>johnice</author><pubDate>Sun, 18 Apr 2010 09:43:00 +0800</pubDate><description><![CDATA[1：视c++为一个语言联邦	可以将c++看做是由四个语言组成的：C, C++, Template C++, STL	c++ 高效编程守则视状况而变化，取决于你使用C++的哪一部分 2：尽量使用const, enum, inline 替换#define	参看前一篇文章： 类内部的 static、const、enum 变量	对于单纯常量来说，最好以 const 对象或者 enu]]></description><category></category></item><item><title><![CDATA[类内部的 static、const、enum 变量]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5425465</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5425465</guid><author>johnice</author><pubDate>Sun, 28 Mar 2010 20:15:00 +0800</pubDate><description><![CDATA[1. 只有当成员变量为static const 时，才可以在声明时直接定义，如下： class X{public:	static const m_n = 100;}  当然也可以将声明与定义分开，如下：  class X{public:	static const m_n;}  // cpp文件const int X::]]></description><category></category></item><item><title><![CDATA[c++ 类成员函数指针]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5342213</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5342213</guid><author>johnice</author><pubDate>Wed, 03 Mar 2010 14:31:00 +0800</pubDate><description><![CDATA[类定义如下：	kname.h 	class KName	{	public:		typedef void (KName::*FNThreadFun)();		KName(void);		~KName(void);				void ShowTest()		{			std::cout<<"ShowTest"<<std::endl;		}		void]]></description><category></category></item><item><title><![CDATA[c++  标准数据类型]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5337908</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5337908</guid><author>johnice</author><pubDate>Tue, 02 Mar 2010 10:32:00 +0800</pubDate><description><![CDATA[int 类型与操作系统，编译器相关如：win32下为32位，win64下为64位 如果软件有移植需求，请使用固定大小的数据类型 注意：long 的字节数是不随平台改变的，都是4字节  补充：	BYTE			1字节		typedef unsigned char BYTE;	WORD		2字节		typedef unsigned short WORD;	DW]]></description><category></category></item><item><title><![CDATA[基于TCP模式的socket编程 简单封装]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5277302</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5277302</guid><author>johnice</author><pubDate>Mon, 01 Feb 2010 15:19:00 +0800</pubDate><description><![CDATA[封装类.h文件： #include #include #define MSG_MAX_LEN	(1024 * 1024)class KServerSocket{public:	BOOL InitSocket();	BOOL ListenMsg(UINT uPort, UINT uConnMax);	BOOL AcceptMsg(OUT SOCKET& cli]]></description><category></category></item><item><title><![CDATA[详细解析C++虚函数表]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5264594</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5264594</guid><author>johnice</author><pubDate>Thu, 28 Jan 2010 11:17:00 +0800</pubDate><description><![CDATA[转自：Linux联盟   http://www.xxlinux.com/linux/dev/c/2009-01-15/14916.html	C++中的虚函数的作用主要是实现了多态的机制。关于多态，简而言之就是用父类型别的指针指向其子类的实例，然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”，这是一种泛型技术。所谓泛型技术，说白了就是试图使用不变的代码来实现可]]></description><category></category></item><item><title><![CDATA[关于C++字符 以及编码 宽字符]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5260961</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5260961</guid><author>johnice</author><pubDate>Wed, 27 Jan 2010 12:03:00 +0800</pubDate><description><![CDATA[1、在定义字符型数据时，应尽量使用TCHAR，以便于在转换编码格式时，扩展问题 TCHAR 定义如下（猜测）： #ifdef UNICODEtypedef wchar_t TCHAR;#elsetypedef char TCHAR;#endif  在工程定义为UNICODE时，会自动将变量转换成wchar_t型。  2、宽字符赋值：wchar]]></description><category></category></item><item><title><![CDATA[C#调用非托管DLL]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/5185624</link><guid>https://blog.youkuaiyun.com/johnice/article/details/5185624</guid><author>johnice</author><pubDate>Wed, 13 Jan 2010 15:10:00 +0800</pubDate><description><![CDATA[ 在合作开发时，C#时常需要调用C++DLL，当传递参数时时常遇到问题，尤其是传递和返回字符串是，现总结一下，分享给大家： VC++中主要字符串类型为：LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等, 但转为C#类型却不完全相同。主要有如下几种转换：将string转为IntPtr：IntPtr System.Ru]]></description><category></category></item><item><title><![CDATA[C++ 编写、 调用 dll  简单例子]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/4739687</link><guid>https://blog.youkuaiyun.com/johnice/article/details/4739687</guid><author>johnice</author><pubDate>Wed, 28 Oct 2009 19:13:00 +0800</pubDate><description><![CDATA[C++创建DLL：
 
1. 创建win32控制台程序， 选择DLL
 
2. 添加头文件
头文件中定义宏  如下：
 
 
#ifdef DYNAMICLIBRARY_EXPORTS                                  //该dll]]></description><category></category></item><item><title><![CDATA[C# 中调用 C++编写的 dll 的 调试]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/4738916</link><guid>https://blog.youkuaiyun.com/johnice/article/details/4738916</guid><author>johnice</author><pubDate>Wed, 28 Oct 2009 16:21:00 +0800</pubDate><description><![CDATA[以下只是针对VS2005，其他版本没试过  前提：	必须有该dll 的c++源码	断点处代码被运行   c#程序调用c++写的dll：  	1. 确保工程为debug，而不是release	2. 将该dll设为启动项	3. 设置该dll的属性，property->debugging->debugger type  为 Native]]></description><category></category></item><item><title><![CDATA[c# ListView 双缓存 避免闪烁]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/4645797</link><guid>https://blog.youkuaiyun.com/johnice/article/details/4645797</guid><author>johnice</author><pubDate>Fri, 09 Oct 2009 14:38:00 +0800</pubDate><description><![CDATA[在控件构造函数前加上以下5行代码： public   class   CustomListView   :   ListView     {             public   CustomListView()             {                     SetStyle(ControlStyles.DoubleBuffer   |              ]]></description><category></category></item><item><title><![CDATA[C# 中 调用 Win API 函数]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/4645717</link><guid>https://blog.youkuaiyun.com/johnice/article/details/4645717</guid><author>johnice</author><pubDate>Fri, 09 Oct 2009 14:23:00 +0800</pubDate><description><![CDATA[ 1)        [DllImport("user32.dll", EntryPoint = "ShowWindow")]        private static extern bool ShowWindow(IntPtr nClientID, int nCmdShow);   2)         [System.Runtime.InteropServ]]></description><category></category></item><item><title><![CDATA[C# 属性页 PropertyGrid]]></title><link>https://blog.youkuaiyun.com/johnice/article/details/4615756</link><guid>https://blog.youkuaiyun.com/johnice/article/details/4615756</guid><author>johnice</author><pubDate>Tue, 29 Sep 2009 09:43:00 +0800</pubDate><description><![CDATA[using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Windows.Forms.Design;using System.Drawing.Design;namespace Quick.Dialog{    public partia]]></description><category></category></item></channel></rss>