编程的经典问题珍藏

2008-1-23 11:10:42
C基础 
 
 编译,何时需要预编译:

答案:1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

2。char * const p      char const * p      const char *p

上述三个有什么区别?

答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p

3。char str1[] = "abc"; char str2[] = "abc";

const char str3[] = "abc"; const char str4[] = "abc";

const char *str5 = "abc"; const char *str6 = "abc";

…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(1024) | 回复(1)
 
2008-1-8 17:10:52
在.NET中使用XML、读取XML文件,插入数据到XML文档中。 
 
  本文介绍3个XML的基本应用实例,旨在带领你快速步入XML编程世界。实例包括:在.NET中使用XML、读取XML文件,插入数据到XML文档中。  在.NET中使用XML   如果使用过MSXML3,那么在.NET应用程序中使用XML将是一个相当简单的过程。即时没有接触过MSXML3,也不要紧,你会发现使用.NET平台提供的相关类也是很容易的一件事情。  有两种主要API可用于访问建立在XML文档中的数据,它们包括只向前的无缓冲存取以及随机存取,而且自始至终都使用到文档对象模型DOM。有关这2个API的类位于System.XML集合中。  如果要快速有效地访问XML文档中的数据,就需要使用XmlTextReader类。这个类采取“拉”模式处理方式,要比简单XML API(SAX)中的“推”模式处理方式优越许多。使用XmlTextReader类之前首先要引用System.Xml集合,在C#中是使用“using”关键字来引用,在Visual Basic中则是使用“imports”关键字。 …… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(1079) | 回复(1)
 
2007-12-27 20:58:23
Regsvr32使用方法 and Regsvr32命令修复系统故障 
 

Regsvr32使用方法

  使用过activex的人都知道,activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在windows的system 文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具。它的用法为:

  “regsvr32 [/s] [/n] [/i(:cmdline)] dllname”。其中dllname为activex控件文件名,建议在安装前拷贝到system文件夹下。

  参数有如下意义:

  /u——反注册控件

  /s——不管注册成功与否,均不显示提示框

  /c——控制台输出

  /i——跳过控件的选项进行安装(与注册不同)

  /n——不注册控件,此选项必须与/i选项一起使用 Regsvr32命令修复系统故障

…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(949) | 回复(0)
 
2007-11-19 14:39:30
Skin++ 0.1.3 使用指南
 
 一.加载Skin++ 0.将SkinPlusPlusDLL.lib,SkinPlusPlus.h,XPCorona.ssk都复制到当前目录 1.在(VC7)"项目->属性->链接器->输入->附加依赖项"中加入SkinPlusPlusDLL.lib  或 在(VC6)"Project->Settings->Link->Object/library"中加入SkinPlusPlusDLL.lib  在工程中加入SkinPlusPlus.h文件。 2.在你的程序中包含头文件 #include "SkinPlusPlus.h" 3.在程序中加入初始化语句InitInstance() InitializeSkin(_T("XPCorona.ssk"); 注:以上假定,如果不是请更改路径设置。 …… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(1046) | 回复(0)
 
2007-11-19 14:14:39
如何对 BCGControlBarPro 进行换肤
 

如何对 BCGControlBarPro 进行换肤 作者:阙海忠

…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(460) | 回复(0)
 
2007-11-12 15:26:10
指针类型转换
 
当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋值号的右边是一个指针表达式。
在我们前面所举的例子中,绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向的类型是一样的。
 
例十四:
1。 float f=12.3;
2。 float *fptr=&f 
3。 int *p;
在上面的例子中,假如我们想让指针p指向实数f,应该怎么搞?是用下面的 语句吗?
p=&f
不对。因为指针p的类型是int*,它指向的类型是int。 …… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(639) | 回复(0)
 
2007-11-10 14:44:22
MFC获得各种视图指针的方法 
 
获得各种视图指针如下 1) View中获得Doc指针 2) App中获得MainFrame指针 3) View中获得MainFrame指针 4)
2007-10-23 15:38:30
如何把vc的dll导入net使用
 
 安装了.net后,C:/Program Files/Microsoft Visual Studio .NET/FrameworkSDK/Bin/tlbimp.exe,这个文件就可以把dll转到net下使用。在dos下执行:转换格式:tlbimp c:/a.dll /out:b.dll,   就把a转成b。可以导入net使用。      MSDN如是说:
.NET Framework 工具
类型库导入程序 (Tlbimp.exe)

 

类型库导入程序将 COM 类型库中的类型定义转换为公共语言运行库程序集中的等效定义。Tlbimp.exe 的输出为二进制文件(程序集),该文件中包含在原始类型库中定义的类型的运行库元数据。可以使用诸如 Ildasm.exe 这样的工具检查此文件。

…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(797) | 回复(0)
 
2007-10-21 11:06:08
学用stl std::map
 
 学用stl std::map<std::string, int>     选择自 awzzz 的 Blog

C++:一种比较流行的强大功能面向对象编程语言,应用和前景都很广阔。

stl:C++标准模板库,功能极其强大,将其完全掌握后C++编程会相当容易。

map:一种关系式容器,可以根据关键字匹配多种数据。

string:"~!@#$%^&*()_+",这样的东东就是。

以下程序代码将简单演示如何通过名称(string)关键字匹配id(int),由于程式(程序,受网上资料的影响,偶也开始想把程序说成程式,废话)太简单,没有写注释,对于想入门的朋友将代码看明白可以自己举一反三就算学会一招了:)高手请跳过。

…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(983) | 回复(0)
 
2007-10-21 10:57:02
CPU 测速(MHz)和高精度延时(微秒级)
 
  CPU 测速(MHz)和高精度延时(微秒级)-- Victor Chen

一.高精度延时, 是 CPU 测速的基础 Windows 内部有一个精度非常高的定时器, 精度在微秒级, 但不同的系统这个定时器的频率不同, 这个频率与硬件和操作系统都可能有关。 利用 API 函数 QueryPerformanceFrequency 可以得到这个定时器的频率。利用 API 函数 QueryPerformanceCounter 可以得到定时器的当前值。根据要延时的时间和定时器的频率, 可以算出要延时的时间定时器经过的周期数。在循环里用 QueryPerformanceCounter 不停的读出定时器值, 一直到经过了指定周期数再结束循环, 就达到了高精度延时的目的。

============================== 点击此处阅读全文 

 
2007-10-21 10:52:48
PreTranslateMessage()函数说明
 
PreTranslateMessage()函数说明

1.函数原型:(MSDN)

virtual BOOL PreTranslateMessage( MSG *pMsg );

功能:

    Override   this   function   to   filter   window   messages   before   they   are   dispatched   to   the   Windows   functions TranslateMessage   and DispatchMessage. The   default   implementation   performs   accelerator-key   translation,   so   you   must   call   the   CWinApp::PreTranslateMessage   member   function   in   your   overridden   version.     重载该函数可以实现窗口消息在派发给窗口函数TrnaslateMessage和DispatchMessae()之前的过滤.缺省的实现是完成加速键的翻译.因为您必须在你的重载版本中调用CWinApp:PreTranslateMessage()函数.

…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(1266) | 回复(0)
 
2007-10-19 19:42:04
UINT RegisterWindowMessage(lpsz)
 
RegisterWindowMessage(lpsz) 函数说明:RegisterWindowMessage函数定义一个新的窗口消息,该消息保证在整个系统范围内是唯一的。调用SendMessage或PostMessage函数时可以使用该函数返回的消息值。 参数说明: lpsz   指向一个以NULL结束的字符串,该字符串指定待登记的消息。 返回值:若成功地登记了消息,返回值是一个消息标识符。该标识符值的范围在0XC000到0XFFFF之间,否则,返回值为0。 注释:RegisterWindowMessage函数通常用于为两个合作应用程序之间的通信登记消息。   若两个不同的应用程序登记了相同的消息字符串,则这两个应用程序返回相同的消息值。该消息一直维持被登记状态,直到Windows会话结束。当多个应用程序必须处理同一消息时才使用RegisterWindowMessage函数。在一个窗口类范围内发送私有消息时,应用程序可使用范围在 WM_USER到0X7FFF之间的任意整数。 ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(679) | 回复(0)
 
2007-2-2 13:45:52
Breaking change - OnNcHitTest
 

Alright, this is a really bad one. This line of code :-

ON_WM_NCHITTEST()

- which was compiling quite okay in VC++ 6 (and VC++ 7.1) suddenly throws this strange error message.

error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CPocket::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint)'

And it also has a suggestion to fix the error that is even more confusing :-

Cast from base to derived requires dynamic_cast or static_cast

We are already using static_cast, aren’t we?

Guess what? The return type for OnNcHitTest has been changed from UINT to LRESULT (only in the MFC source, the MSDN documentation still says UINT as of Beta 2) to accommodate for negative return values. Crappy part is that this was wizard generated code - we didn’t even write it, damnit! The fix is to change UINT to LRESULT - though if you want to compile the same code for VC++ 6 and 7.1, you’d want to do wha …… ============================== 点击此处阅读全文

 
By 耿磊  阅读全文(1409) | 回复(1)
 
2006-6-13 13:43:55
Clipboard 问答集 
 

 Clipboard 问答集

翻译:陈贵敏(efoxxx)

拷贝与粘贴文本

 

下边的源代码演示了如何将文本(包含在CString对象“source”中)拷贝到剪贴板上。

CString source; 
                   
                   
…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(1520) | 回复(0)
 
2006-6-13 13:06:52
List Box/Check List Box
 

 List Box/Check List Box

ListBox窗口用来列出一系列的文本,每条文本占一行。创建一个列表窗口可以使用成员函数: BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff ); 其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。

  • LBS_MULTIPLESEL 指明列表框可以同时选择多行
  • LBS_EXTENDEDSEL 可以通过按下Shift/Ctrl键选择多行
  • LBS_SORT 所有的行按照字母顺序进行排序

…… ============================== 点击此处阅读全文
 
By 耿磊  阅读全文(955) | 回复(0)
 
2006-6-2 9:54:03
显示图形如何避免闪烁(转)
 

显示图形如何避免闪烁(转)

显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。 而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。 MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单, 只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。 我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈 我的一些观点。 1、显示的图形为什么会闪烁? 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏 幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时, 总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容 反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来 在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。 当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来 绘制的图形进行清除,而又叠加上了新的图形。 有的人会说,闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的, 其实这样说并不对,绘图的显示速度对闪烁的影响不是根本性的。 …… ============================== 点击此处阅读全文

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值