123456

 

2011年1月19日

怎么让单行EDIT文本居中

摘要: 利用多行文本框来模拟单行进行设置垂直居中派生一个基于CEdit的类CEditEx,重载create函数,记住是create,不是WM_ONCREATE消息,重载的目的是为了保证起始光标位置就在竖直中间靠左位置,代码如下BOOL CEditEx::Create(CString strNc,DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID){ dwStyle |= ES_MULTILINE | ES_AUTOHSCROLL; //不能加ES_AUTOVSCROLL | ES_WANTRETURN属性 if(CEdit:: 阅读全文

posted @ 2011-01-19 11:15 hgy413 阅读(737) 评论(0) 推荐(0) 编辑

2011年1月14日

模态对话框与非模态对话的几种销毁方法与区别

摘要: 自己看了这篇文,觉得很好,所以转了过来,大家共享,其实在msdn中输入destroying windows搜索,就可以发现Called by the default OnNcDestroy member function after the window has been destroyed.(PostNcDestroy( )在窗口销毁后被OnNcDestroy成员函数调用,所以可以在PostNcDestroy( )中释放资源)virtual void PostNcDestroy( );RemarksDerived classes can use this function for custo 阅读全文

posted @ 2011-01-14 21:20 hgy413 阅读(163) 评论(0) 推荐(0) 编辑

2011年1月6日

在Unicode环境下让Trace打印出中文字体出来

摘要: 在Unicode环境下让Trace打印出中文字体出来?实现条件,重新配置地域化信息为中文,再调用Trace,再恢复原来地域化信息即可函数:setlocale原型: char * setlocale ( int category, const char * locale ); 头文件:#include 返回值: 字符串 函数种类: 操作系统与环境 内容说明: 本函数用来配置地域的信息,设置当前程序使用的本地化信息category参数:LC_ALL:下面的全部选项LC_COLLATE 配置字符串比较LC_CTYPE 配置字符类别及转换LC_MONETARY 配置金融货币LC_NUMERIC... 阅读全文

posted @ 2011-01-06 21:02 hgy413 阅读(280) 评论(0) 推荐(0) 编辑

回调函数(callback function)

摘要: 1. 回调函数(callback function)?回调,就是两个程序A和C,程序A中含有函数b,程序C中含有函数d,当A要调用C的某个功能时,C需要反过来调用A中的函数b,而且是A不得不为C提供函数b,而C不知道A提供的b叫什么,有什么参数,所以C会规定b有什么参数,然后由A通过C中的函数d传入函数b的名字(也就函数d的一个参数和b的函数原型一致),这时b就是回调函数,而d就是注册函数.举个例子HHOOKSetWindowsHookEx(intidHook,HOOKPROClpfn,HINSTANCEhMod,DWORDdwThreadId);中参数HOOKPROC就是相当于上述函数d的一 阅读全文

posted @ 2011-01-06 17:26 hgy413 阅读(220) 评论(0) 推荐(0) 编辑

2011年1月5日

VC6 在Vista Win7 下提高权限问题

摘要: 以下程序集清单(Assembly Manifest)示例使你的程序在VISTA和WIN7下需要管理员权限,即在程序运行时弹出UAC提升权限对话框。 如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换 requestedExecutionLevel 节点。以下程序清单文件文件使你的程序使用WINXP风格的控件:Test application for xp style. 关联方式一般有两种:程序内部嵌入和外部关联。程序内部嵌入方式的操作步骤为:1. 新建一个程序集清单(Assembly Manifest)文件命名为"你的应用程序名.manifest",如你生 阅读全文

posted @ 2011-01-05 16:06 hgy413 阅读(126) 评论(0) 推荐(0) 编辑

2010年12月26日

自绘对话框基类

摘要: 所有的对话框都是基于CDialog的,也就都具有CDialog的特征,本文以CDialog为基类派生一个新的类CSkinDialogBase,只需将基于CDialog的对话框中CDialog替换成CSkinDialogBase,则可具有自绘DLG的特征.下面例子是自己重绘了非客户区及客户区底色完成的一个圆角Dialog的基类,直接上图:实现步骤:1.派生自CDialog的类CSkinDialogBase,这时系统会自动生成一个DLG资源,把enum { IDD = ...};删除掉,重载CSkinDialogBase的构造函数:CSkinDialogBase::CSkinDialogBase( 阅读全文

posted @ 2010-12-26 12:39 hgy413 阅读(263) 评论(0) 推荐(0) 编辑

2010年12月14日

初始化列表中初始化顺序和它们在类中声明的顺序保持一致---读书笔记

摘要: 随手写的程序:class A{public: A():a(b),b(1) { cout<<a<<endl ; cout<<b<<endl ; }private: int a,b;};int _tmain(int argc, _TCHAR* argv[]){ A a ; system("pause"); return 0;} 输出结果为:a为一个极大负数,b为1修改下代码:class A{public: A():a(b),b(1) { cout<<a<<endl ; cout<<b<&l 阅读全文

posted @ 2010-12-14 21:31 hgy413 阅读(127) 评论(0) 推荐(0) 编辑

2010年12月13日

new/delete和malloc/free读书笔记

摘要: 以前对这两者的认识是停留在以下表面:malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。new会自动调用构造函数,delete会自动调用析构函数,malloc和free不会。malloc是个分配内存的函数,供你调用的。new是保留字,不需要头文件支持。malloc需要头文件库函数支持。new 建立的是一个对象,malloc分配的是一块内存。今晚顺手写了个测试代码class A{ public: A(){coutShow(); system("pause"); return 0;} 却能正常显示&quo 阅读全文

posted @ 2010-12-13 21:29 hgy413 阅读(161) 评论(0) 推荐(0) 编辑

无边框/有边框菜单自绘

摘要: 菜单自绘分为两类,一类为无边框,一类为有边框,无边框是通过hook实现的,有边框菜单:无边框菜单:实现菜单自绘原理很简单:1.给每一项都加上MF_OWNERDRAW属性实现代码:void CMyMenu::ChangeToOwnerDraw(CMyMenu *pMyMenu){ CString str; CMyMenu* pMenu; int iMenuCount = pMyMenu->GetMenuItemCount(); UINT nID; for (int i=0; iGetMenuString(i, str, MF_BYPOSITION); pMenu = 0; if (pM.. 阅读全文

posted @ 2010-12-13 20:27 hgy413 阅读(353) 评论(0) 推荐(0) 编辑

2010年12月12日

尽量用const和inline而不用#define,类静态成员变量和函数---读书笔记

摘要: 要点1.静态成员变量只能在类外初始化要点2.静态成员函数可以在类中定义,但不含this指针,因为它不属于任何特定对象要点3.尽量用const和inline而不用#define因为类的静态成员变量是所有实例共用的.所以得在类外初始化.如class A{ static int num;} int A::num=0; 注意:num不可以在类中初始化,更不可以在构造函数或构造函数初始化表中初始化。必须在类外初始化。静态成员函数可以在类中定义,不属于任何一个特定的对象,所以不存在隐含的this指针,静态成员函数常用来操作静态数据成员。尽量用const和inline而不用#define#define .. 阅读全文

posted @ 2010-12-12 19:27 hgy413 阅读(283) 评论(0) 推荐(0) 编辑

导航