<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[明日依旧]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/welson80</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; welson80]]></copyright><item><title><![CDATA[centos 32位安装vlc]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/7019905</link><guid>https://blog.youkuaiyun.com/welson80/article/details/7019905</guid><author>welson80</author><pubDate>Mon, 28 Nov 2011 15:55:36 +0800</pubDate><description><![CDATA[wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
yum install]]></description><category></category></item><item><title><![CDATA[计算二进制位中1的个数]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/6624246</link><guid>https://blog.youkuaiyun.com/welson80/article/details/6624246</guid><author>welson80</author><pubDate>Thu, 21 Jul 2011 21:43:44 +0800</pubDate><description><![CDATA[还不理解这个牛逼的算法，怪不得面试的时候会出到这个题：#define POW(c) (1<<(c))
#define MASK(c) (((unsigned long)-1) / (POW(POW(c)) + 1))
#define ROUND(n, c) (((n) & MAS]]></description><category></category></item><item><title><![CDATA[使用mencoder进行视频分割]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/6043628</link><guid>https://blog.youkuaiyun.com/welson80/article/details/6043628</guid><author>welson80</author><pubDate>Mon, 29 Nov 2010 19:02:00 +0800</pubDate><description><![CDATA[mencoder input_file -o output_file -ss 30 -endpos 60 -oac copy -ovc copy以上命令可以截取视频文件从30秒开始持续1分钟的内容保存到output_file。如果仔细看输出的视频，会发现视频确实恰好有一分钟，但开始时间并不是准确的原视频的第30秒。在mplayer的文档中，关于这点写到mencoder定位在离-ss指定时间最近I帧。一般对于截取视频来说这样的误差可以了，但我现在要对视频文件进行分割、转码、合并，视频就会不连续。即如果再分割m]]></description><category></category></item><item><title><![CDATA[linux防火墙与路由设置]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/6003785</link><guid>https://blog.youkuaiyun.com/welson80/article/details/6003785</guid><author>welson80</author><pubDate>Thu, 11 Nov 2010 23:09:00 +0800</pubDate><description><![CDATA[      当网络数据包通过网络适配器之后，都要通过路由和防火墙才能到达目的主机或网络（多网卡时），当一个应用发送一个数据时，内核创建的数据包也要通过路由和防火墙。Linux内核定义了三种过滤规则或链（chains）：INPUT、OUTPUT和FORWORD。在2.4内核后，Linux对这三种规则做了很大的调整，简化了过滤逻辑，我在这里只写2.4内核的规则。所有网卡接收到的数据包，都先要通过路由，路由之后的数据包如果到达本机，则要通过INPUT的过滤，而到达其他网卡的数据包要通过OUTPUT过滤。对于本机发]]></description><category></category></item><item><title><![CDATA[PXE远程安装Linux]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5989815</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5989815</guid><author>welson80</author><pubDate>Fri, 05 Nov 2010 14:53:00 +0800</pubDate><description><![CDATA[简要说明：1. 配置DHCP服务：安装dhcpd，修改/etc/dhcp/dhcpd.conf（本机IP 192.168.16.254）option space PXE;  option PXE.mtftp-ip code 1 = ip-address;  option PXE.mtftp-cport code 2 = unsigned integer 16;  option PXE.mtftp-sport code 3 = unsigned integer 16;  option PXE.mtftp-tm]]></description><category></category></item><item><title><![CDATA[SSH error:a public key file has not been specified by this session]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5913513</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5913513</guid><author>welson80</author><pubDate>Wed, 29 Sep 2010 09:58:00 +0800</pubDate><description><![CDATA[<br />可能是SSH客户端没有开启密码验证，或者SSH服务端不允许密码验证。<br />服务端开启密码验证的方法：修改/etc/ssh/sshd_config的PasswordAuthentication项为yes，重启服务（$service sshd restart）]]></description><category></category></item><item><title><![CDATA[动态链接库(DLL) （含进程通信之共享内存）]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5900253</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5900253</guid><author>welson80</author><pubDate>Tue, 21 Sep 2010 22:55:00 +0800</pubDate><description><![CDATA[<br /> <br />简单的DLL<br />/*----------------------
   EDRLIB.H header file
  ----------------------*/
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
EXPORT BOOL CALLBACK EdrCent]]></description><category></category></item><item><title><![CDATA[多线程]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5898037</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5898037</guid><author>welson80</author><pubDate>Mon, 20 Sep 2010 21:53:00 +0800</pubDate><description><![CDATA[<br /><br />CreateThread(&security_attributes,dwStackSize,ThreadProc,pParam,dwFlags,&idThread)：第一个参数是SECURITY_ATTRIBUTES指针，Windows 98忽略这个参数，Windows NT中也可为NULL。第二个参数是初始栈大小，0表示默认值。第三个参数是线程函数指针，ThreadProc必须按以下方式声明<br />DWORD WINAPI ThreadProc(PVOID pParam)。<b]]></description><category></category></item><item><title><![CDATA[多文档接口（MDI）]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5896073</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5896073</guid><author>welson80</author><pubDate>Mon, 20 Sep 2010 09:30:00 +0800</pubDate><description><![CDATA[<br /><br />MDI的元素<br />一个主窗口，包括标题栏、工具栏、菜单栏、系统菜单图标、可拉伸边框、最大最小化按钮、客户区。客户区不直接显示输出，而是有0个或多个子窗口，每个子窗口显示一个文档。<br />子窗口很像主窗口，只是没有菜单栏。在同 一时刻只有一个子窗口是激活的。<br />MDI看起来用子窗口可以实现，但当研究一下现有的MDI应用程序，就会发现实现起来需要复杂的编码。<br /> <br />MDI接口<br />Windows 98 MDI包括一个窗口类、五个函数、两个结构体和]]></description><category></category></item><item><title><![CDATA[文本和字体]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5878234</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5878234</guid><author>welson80</author><pubDate>Sat, 11 Sep 2010 22:57:00 +0800</pubDate><description><![CDATA[简单的文本输出TextOut(hdc,xStart,yStart,pString,iCount)：xStart是第一个字符的水平位置，但这个参数的意义可以用SetTextAlign改变，TA_LEFT为默认方式，TA_RIGHT则xStart是最后一个字符的水平位置，TA_CENTER则xStart是中间字符的水平位置。同样，TA_TOP、TA_BOTTOM和TA_BASELINE表示yStart的意义——字符在垂直方向的位置，TA_TOP为默认。如果用TA_UPDATECP标记，则系统忽略xStart和y]]></description><category></category></item><item><title><![CDATA[设备无关位图 DIB]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5848059</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5848059</guid><author>welson80</author><pubDate>Sun, 29 Aug 2010 16:56:00 +0800</pubDate><description><![CDATA[结构体DIB文件有四个主要部分：    文件头（file hearder）    位图信息头（information header）    RGB颜色表（RGB color table），24位位图没有    位图像素（bitmap pixel bits）DIB在内存中的格式只有后面三个部分，没有文件头。DIB的结构体都定义在WINGDI.H头文件中。文件头结构体(bmfh)：typedef struct tagBITMAPFILEHEADER
{
	WORD bfType;
	DWORD bfSiz]]></description><category></category></item><item><title><![CDATA[位图]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5844640</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5844640</guid><author>welson80</author><pubDate>Fri, 27 Aug 2010 20:55:00 +0800</pubDate><description><![CDATA[Bit-Block Transfer相比图元文件，位图有两个大缺点，一是易受设备依赖性问题影响。比如在一个单色设备上显示位图经常不会令人满意；还有位图的缩放，经常涉及到行或列的重复或丢弃，这样会造成缩放位图的混乱。第二个缺点是位图占用存储空间大。然而，位图最大的优点是速度，显示位图要比图元文件快得多。GetDeviceCaps的BITSPIXEL和PLANES参数获取显卡的颜色参数。BitBlt(hdcDst,xDst,yDst,cx,cy,hdcSrc,xSrc,ySrc,dwROP)：把hdcSrc(x]]></description><category></category></item><item><title><![CDATA[打印机]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5842129</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5842129</guid><author>welson80</author><pubDate>Thu, 26 Aug 2010 23:26:00 +0800</pubDate><description><![CDATA[打印机信息OpenPrinter (szDevice, &hPrint, NULL)：得到打印机szDevice的句柄PrinterProperties (hwnd, hPrint)：打开打印机属性页，也可以用驱动提供的ExtDeviceMode或ExtDeveModePropSheet函数，但推荐这个。ClosePrinter(hPrint)GetDeviceCaps(hdcInfo,index)：获取设备参数。RASTERCAPS返回打印机是否支持位块(bit-block)转换，在部分点阵、激光、喷墨打]]></description><category></category></item><item><title><![CDATA[剪切板]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5812878</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5812878</guid><author>welson80</author><pubDate>Sat, 14 Aug 2010 23:28:00 +0800</pubDate><description><![CDATA[<br /> <br />剪切板数据格式有三类：文本（text）、位图（bitmap）和元文件（metafile），每类又有细分，定义在WINUSER.H中,CF_开头。<br />写入剪切板<br />GlobalAlloc(GHND | GMEEM_SHARE,nSize)：返回一个全局句柄<br />GlobalLock(hGlobal)：返回内存块指针。<br />写数据<br />GlobalUnlock(hGlobal)<br />OpenClipboard(hwnd)：任何时候只能有一个程序打]]></description><category></category></item><item><title><![CDATA[资源——对话框（Dialog Box）]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5810328</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5810328</guid><author>welson80</author><pubDate>Fri, 13 Aug 2010 17:21:00 +0800</pubDate><description><![CDATA[一般菜单项的后面加省略号（...）提示该菜单会激活一个对话框。对话框的坐标X轴以对话框所用字体宽度的1/4为单位，Y轴以字体高度的1/8为单位。对话框处理过程与窗口处理过程很相似，但也有一些不同，对话框过程不是窗口过程。一般在对话框处理过程中，我们只需要处理子窗口控件的初始化、子窗口控件消息和结束对话框。下面是一个对话框过程：BOOL CALLBACK DlgProc(HWND hDlg,UINT message,WPARAM wParam,lParam)
{
      switch(message)]]></description><category></category></item><item><title><![CDATA[资源——菜单（Menu）与快捷键（Keyboard Accelerators）]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5808277</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5808277</guid><author>welson80</author><pubDate>Fri, 13 Aug 2010 00:19:00 +0800</pubDate><description><![CDATA[<br />创建载入菜单<br />wndcls.lpszMenuName=MAKEINTRESOURCE(IDM_MENU)，也可用LoadMenu(hInstance,MAKEINTreSOURCE(IDM_MENU))，后者要在CreateWindow中传入菜单句柄或者在窗口创建后调用SetMenu(hwnd,hMenu)。挂在窗口上的菜单在结束时都会被销毁，所有没有挂在窗口的菜单在程序结束前都要用DestroyMenu销毁。<br /> <br />菜单消息<br />WM_INITMENU：在选择]]></description><category></category></item><item><title><![CDATA[资源——图标（ICON)、鼠标、字符串资源、自定义资源]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5807290</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5807290</guid><author>welson80</author><pubDate>Thu, 12 Aug 2010 16:26:00 +0800</pubDate><description><![CDATA[<br />ICON<br />LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MYICON)):IDI_MYICON是资源标识，定义在resource.h里。<br />LoadIcon(hInstance,TEXT("MYICON"):修改资源标识为"MYICON"（包括引号）或者修改.rc文件的IDI_MYICON ICON "icon.ico" 一行中的IDI_MYICON为"MYICON"（不包括引号），可以以字符串加载。<br />GetSystemMetrics(]]></description><category></category></item><item><title><![CDATA[子窗口控件——列表框(List Box)]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5805486</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5805486</guid><author>welson80</author><pubDate>Wed, 11 Aug 2010 22:17:00 +0800</pubDate><description><![CDATA[窗口类型"listbox"。默认的列表框给父窗口发送WM_COMMAND消息，所以几乎所有列表框都加LBS_NOTIFY，允许列表框发送WM_COMMAND，LBS_SORT可以让列表自动排序。LBS_MULTIPLESEL创建多选列表框。LBS_NOREDRAW会在添加列表后阻止列表更新，也可以利用WM_SETREDRAW消息。另外还可与WS_BORDER、WS_SIZEBOX、WS_CAPTION一起使用。Windows定义了常用的风格LBS_STANDARD，它定义为(LBS_NOTIFY | LBS]]></description><category></category></item><item><title><![CDATA[子窗口控件——文本框（Edit Control)]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5804768</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5804768</guid><author>welson80</author><pubDate>Wed, 11 Aug 2010 17:05:00 +0800</pubDate><description><![CDATA[<br />CreateWindow(TEXT("edit"),NULL,WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,0,0,0,0,hwnd,(HMENU)ID_EDIT,hInstance,NULL);ES_NOHIDESEL还可使失去输入焦点时，选择的文字仍然高亮。<br /> <br />WM_COMMAND]]></description><category></category></item><item><title><![CDATA[子窗口控件——滚动条控件（Scroll Bar）]]></title><link>https://blog.youkuaiyun.com/welson80/article/details/5803506</link><guid>https://blog.youkuaiyun.com/welson80/article/details/5803506</guid><author>welson80</author><pubDate>Wed, 11 Aug 2010 11:22:00 +0800</pubDate><description><![CDATA[SBS_VERT和SBS_HORZ。点击滚动条控件，给父窗口发送的是WM_VSCROLL或WM_VSCROLL而不是WM_COMMAN。消息的lParam是窗口句柄，wParam与窗口滚动条一样，低字是通知码(SB_LINEUP等)，高字是滚动块的位置。可以用GetSystemMerics(SM_CYHSCROLL)得到窗口垂直滚动条的长度，用SM_CXVHSCROLL参数得到水平滚动条的宽度。在对话框中，可以用SBS_LEFTALIGN等设置滚动条的停靠。一些函数：SetScrollRange(hwndS]]></description><category></category></item></channel></rss>