心寄笔端 附庸风雅

甘草的技术博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2011年12月31日

摘要: 1. SEL和IMP最早我把SEL理解为函数指针,现在看来,不是这样的。1.1 SEL类型SEL类型的变量,可以通过@selector(方法名)来取得,当然了,Objective C的方法名,我们也知道了,多么恶心(比Java废话还多)。而它真正得到的,只要方法名一样,它的值就是一样的,不管这个方法定义于哪个类,是不是实例方法【再说了,@selector的时候,除了方法名也没有什么类啊,对象啊什么事情】。所以我现在把它理解为“方法名的某种映射结果”。(从C++程序员的眼光看,我觉得没啥可以对应的,既不是函数指针,也不是函数指针类型,像是函数指针类型的名字吧。)1.2 IMP类型这个才是函数指针 阅读全文
posted @ 2011-12-31 16:58 甘草 阅读(4879) 评论(0) 推荐(1) 编辑

2011年12月29日

摘要: 1.transitionFromView它会做这样的事情[fromViewremoveFromSuperview];所以我会持有UIView对象,保证它不会release到retain count 0. 然后把remove的View,重新insert进来,以应对被remove的情况。2.alwaysBounceVertical的弹力效果_scrollView.alwaysBounceVertical=YES;让某个UIView能产生某种垂直的“弹力效果”,可以把这个UIView加到一个UIScrollView上,然后设置alwaysBounceVertical=YES;3.UIViewAnim 阅读全文
posted @ 2011-12-29 22:38 甘草 阅读(455) 评论(0) 推荐(0) 编辑

2011年11月5日

摘要: 1.SaveDC和RestoreDC.说起来很费解,不如写个代码show下它们的能力~// DCLib... ...void Draw(HDC hdc){ // Draw a line (10, 10) - (190, 190) MoveToEx(hdc, 10, 10, (LPPOINT)NULL); LineTo(hdc, 190, 190); // comments? [2] SaveDC(hdc); // comments? [1] IntersectClipRect(hdc, 20, 20, 100, 100); // Draw a r... 阅读全文
posted @ 2011-11-05 11:40 甘草 阅读(269) 评论(0) 推荐(0) 编辑

2011年10月31日

摘要: [专门研究PlgBlt]:BOOLPlgBlt(HDChdcDest,//handletodestinationDCCONSTPOINT*lpPoint,//destinationvertices // 目标DC的三点,顺序是从左上角->右上角->左下角,映射到Source的RECT DC.HDChdcSrc,//handletosourceDCintnXSrc,//x-coordofsourceupper-leftcornerintnYSrc,//y-coordofsourceupper-leftcornerintnWidth,//widthofsourcerectangle.. 阅读全文
posted @ 2011-10-31 11:29 甘草 阅读(634) 评论(0) 推荐(0) 编辑

2011年10月12日

摘要: 1.CCustomDraw和LVS_OWNERDRAWFIXED我发现我去掉了LVS_OWNERDRAWFIXED风格,继承了CCustomDraw的CListView自绘就OK了。2.CCustomDraw<T>CCustomDraw<T>利用静多态,给派生类一个可以定制自绘Options的策略。//customdrawreturnflags//valuesunder0x00010000arereservedforglobalcustomdrawvalues.//abovethatareforspecificcontrols#defineCDRF_DODEFAULT0 阅读全文
posted @ 2011-10-12 20:59 甘草 阅读(2616) 评论(0) 推荐(0) 编辑

2011年9月24日

摘要: [接上篇]封装目标: 最终目标是封装WinSock的WSAAsyncSelectIO模型。封装原则: 耦合性[减少各种依赖,包括classes之间,编译模块之间。],小粒度增加可复用性。依赖ATL/WTL。CKxAsyncSocket是我要实现的class,它只需要维护SOCKET成员,另外因为是异步选择,所以可以再维护一个HWND。关于HWND,是否有必要暴露给用户,关键在于Socket要仅仅运行于UI主线程,还是用户可以自己创建另一个有消息循环的Thread,在其上处理Socket的消息。我选择后者,因为,尽管异步的Socket,在Recv大数据的时候,还是可能导致UI“卡”的。那么,我们 阅读全文
posted @ 2011-09-24 16:21 甘草 阅读(1541) 评论(0) 推荐(0) 编辑

2011年9月20日

摘要: [WTL]调用JS有两种办法,一种是依赖于IWebBrowser接口的,就是可以操纵Web的。我们先说另外一种,把JScript(VBS)当纯脚本调用的。部分参考了这个BLOG:http://www.cppblog.com/free2000fly/archive/2009/05/23/85549.html保存下面的内容为 a.wsc:<?xmlversion="1.0"encoding="UTF-8"?><?componenterror="true"debug="true"?><com 阅读全文
posted @ 2011-09-20 23:16 甘草 阅读(1126) 评论(0) 推荐(0) 编辑

2011年8月29日

摘要: 1.REFLECT_NOTIFICATIONS macro笔者(就不自称寡人了),试验了两天两夜,终于有些要领了。我的主窗口,不加REFLECT_NOTIFICATIONS 或者REFLECT_NOTIFICATIONS_EX,自绘的CListBox Items就显示不出来。---- ---- ----在WTL使用中,需要注意的是CListBox风格 |= LBS_OWNERDRAWFIXED和LBS_HASSTRINGS,需要在消息宏添加REFLECT_NOTIFICATION()以支持自绘消息。这个宏调用的是函数CWindowImplRoot::ReflectNotifications。这 阅读全文
posted @ 2011-08-29 14:15 甘草 阅读(2286) 评论(0) 推荐(0) 编辑

2011年8月25日

摘要: 1. 实现自绘窗口的Resize自绘的主窗口,往往没有WS_BORDER【特别是Win7下的Border,厚厚的~】,但是没有Border,就等于没有了WS_SIZEBOX。那么我们怎么样才能实现同等的功能呢?接管以下三个消息:MESSAGE_HANDLER(WM_NCHITTEST,OnNcHitTest)MESSAGE_HANDLER(WM_SETCURSOR,OnSetCursor)MESSAGE_HANDLER(WM_NCLBUTTONDOWN,OnNcLButtonDown)第一个好说,到处都是MFC的例子,判断以下Border的位置,返回HTBOTTOMRIGHT这些值即可。Cur 阅读全文
posted @ 2011-08-25 13:52 甘草 阅读(779) 评论(0) 推荐(0) 编辑

2010年11月30日

摘要: 1. ATL/WTL的CEdit的光标问题WTL里面的CEdit, 可以在MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)的实现中,加入bHandled = FALSE; 否则不会显示Cursor。2. 使用SendMessage (hWnd, WM_SYSCOMMAND, SC_RESTORE, 0); 而不是 ShowWindow()【无内容】3. 父窗口和拥有者之间的区别http://blog.csdn.net/zjl_wzw/archive/2010/01/26/5258332.aspx4. CRichEditCtrl的Copy问题是的,基类里面都提供了 阅读全文
posted @ 2010-11-30 14:35 甘草 阅读(369) 评论(0) 推荐(0) 编辑

2010年11月29日

摘要: 总章http://msdn.microsoft.com/en-us/library/aa382019(v=VS.85).aspx产生和Java或C#代码一致的HMAC-SHA1的结果:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SHA1CryptoServiceProvidersha1=newSHA1CryptoServiceProvider();byte[]data={0x6D,0x65,0x73,0x73,0x61,0x67,0x65 阅读全文
posted @ 2010-11-29 11:43 甘草 阅读(1030) 评论(0) 推荐(0) 编辑

2010年10月11日

摘要: 1. Hook的实现参考 参考: http://github.com/Totto8492/VSAi/tree/master/Vendor/mhook-lib/2. Detours /Files/healerkx/detours.rarDetourTransactionBegin();DetourUpdateThread(GetCurrentThread());DetourSetIgnoreTooSmall(TRUE);DetourAttach(a,b);if(DetourTransactionCommit()!=0){PVOID*ppbFailedPointer=NULL;DetourTran 阅读全文
posted @ 2010-10-11 04:01 甘草 阅读(607) 评论(0) 推荐(0) 编辑

2010年10月7日

摘要: http://arizona.javaeye.com/blog/711029Program Database: 创建一个程序库(PDB),包括类型信息和符号调试信息。 Program Database for Edit and Continue: 除了上面的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。 这个选项同时使#pragma设置的优化功能无效。 阅读全文
posted @ 2010-10-07 23:59 甘草 阅读(162) 评论(0) 推荐(0) 编辑

2010年9月29日

摘要: IE编程的部分内容 阅读全文
posted @ 2010-09-29 20:00 甘草 阅读(2326) 评论(5) 推荐(1) 编辑

2010年9月26日

摘要: 1. 安装WTL into VS 2008我是VS2008+SP11, 下载WTL80,然后解压缩。2,将setup80.js复制为setup90.js,编辑setup90.js,将"8.0"全部替换为"9.0"后保存。3, 运行,c:\>wscript setup90.js,会看到安装成功的MessageBox。4, 打末VS2008,选择Tools->Options->Projects and Solutions->VC++ Directories,在include中将c:\wtl80\include加入。----现在就可以建 阅读全文
posted @ 2010-09-26 23:22 甘草 阅读(615) 评论(0) 推荐(0) 编辑

2010年9月24日

摘要: 1. WS_CLIPCHILDREN随便建立一个Win32 Application,大概在画线的位置,摆放一个Button。看两段代码的结果。[代码][代码]第一个代码的结果是线在Button上,第二个则不是。根源在于GetDC和WS_CLIPCHILDREN的关系,以及BeginPaint对消息队列的影响。从《Windows图形编程》上面获得了BeginPaint的伪码:[代码]这个代码大致说明... 阅读全文
posted @ 2010-09-24 22:44 甘草 阅读(254) 评论(0) 推荐(0) 编辑

摘要: CoInitialize(NULL);IActiveDesktop*pActiveDesktop=NULL;hr=CoCreateInstance(CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,(void**)&pActiveDesktop);hr=pActiveDesktop->SetWallpaper(image,style);WALLPAPEROPTwpo;wpo.dwSize=sizeof(WALLPAPEROPT);wpo.dwStyle=dwStyle;hr=pActiveDeskto 阅读全文
posted @ 2010-09-24 00:07 甘草 阅读(223) 评论(0) 推荐(0) 编辑

2010年9月22日

摘要: 1. VS 2008的STL的线程安全的吗?VS 2008用的是PJ STL。当编译选项为/MT,/MTd,/MD,or/MDd的时候,容器和class complex的线程安全规则如下(容器包括vector,deque,list,queue,stack,priority_queue,valarray,map,multimap,set,multiset,basic_string,bitset):只是多线程读安全;单个线程写,而没有其他线程读写,也安全;此外,线程安全针对的是对象,而和它们是不是同类型有关(猜想是极少用到static成员罢)。总结一下,四个字,线程不安全。http://msdn. 阅读全文
posted @ 2010-09-22 21:08 甘草 阅读(1227) 评论(0) 推荐(0) 编辑

2010年9月17日

摘要: MsgWaitForMultipleObjects FunctionMSDN:Waits until one or all of the specified objects are in the signaled state or the time-out interval elapses. The objects can include input event objects, which you specify using the dwWakeMask parameter.To enter an alertable wait state, use the MsgWaitForMultip. 阅读全文
posted @ 2010-09-17 10:47 甘草 阅读(581) 评论(0) 推荐(0) 编辑

2010年3月26日

摘要: 有一段时间不写技术文章,貌似博客园的缩进样式变化了。这个主题讲IE插件开发,又以BHO为主要内容,也谈一些其他相关的,也有一些关于ATL,和我的心得方面的。希望读者能给我一些意见,我做IE插件,确实没有什么经验。BHOBHO就是IE浏览器的辅助对象,我们需要编写的是一个IE进程内COM组件,要实现几个特定的接口。其实,了解COM的朋友,就不会觉得难了。首先,一个BHO必须实现IObjectWith... 阅读全文
posted @ 2010-03-26 11:28 甘草 阅读(1131) 评论(0) 推荐(0) 编辑

Baidu
Google
心寄笔端
TEST
以后我会加上Power By的,先别介意