调用Windows外壳程序格式化磁盘

看资料介绍说 Windows 2000 以上的 SDK 提供了格式化逻辑驱动器的函数 SHFormatDrive, 这是一个外壳函数(Windows界面操作环境称之为外壳),从 shell32.dll 库导出,调用后会弹出一个格式化对话框,只有用户单击"开始"按钮后格式化才开始,使用时应包含头文件 shlobj.h 

我都照做了,下载安装了 Windows XP SP2 的 SDK, 并配置在了 VC 的 include和lib目录中了,也把新SDK的目录调到了最上面,程序中也包含了 shlobj.h, 而且看到新的 SDK 的 shlobj.h 中确实有 SHFormatDrive 函数原型,可是当我使用 SHFormatDrive 函数编译时总提示我找不到这个符号。不知道发生什么问题了,留待以后有需求时再解决吧,反正就是预编译宏展开时,不是去 include 新的 SDK 的 shlobj.h 文件,include 的是 VC98 中的 shlobj.h 文件。 阅读全文 >>

VC常用代码[转]

VC代码收集
一、改变视图背景色:
在CView的OnDraw函数中添写如下一段程序代码:
void CFileNameView::OnDraw(CDC* pDC)
{
    CFileNameDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    CRect rectClient;
    CBrush brushBkColor;
    GetClientRect(rectClient);
    brushBkColor.createSolidBrush(RGB(255,0,0)); //颜色设置 阅读全文 >>

在VC6中使用正则表达式解析字符串

接前面一篇日志,当用 CInternetSession 抓到网页内容之后,就要从中按某种模式截取自己想要的东西,比如其中的电话区号,对于这种事情最擅长的莫过于正则表达式了,以及它的分组/后向引用功能。

VC.net 倒是提供了一个很好的正则表达式类库 CATLRegExp (据说是全世界效率最高的正则表达式库),可是却不能在VC6上使用,VC6可以使用VBS(Microsoft VBScript Regular Expression 5.5)这个 COM 来处理正则表达式,或者引入 vbscript.dll 的方式,最好的办法还是借助于第三方库来处理正则表达式,如 boost,更何况若是使用 COM 就不太值(COM给人的感觉总有些笨拙)。 阅读全文 >>

VC中使用CInternetSession抓取网页内容

在 VC 中用 WinInet 的 CInternetSession::OpenURL(url),得到一个 CFile,读取其中的内容即可,详细代码如下

其他如不从缓存中读取内容及如何使用代理连接现在就不说了,可以参考下面的链接,或者下次补上。另外不妨看看 Java 是如何读取 URL 内容的,更简单

阅读全文 >>

VC编程中常用快捷键【转】

忽又想,编写桌面软件 Java 始终是跟不上步伐,VC 能非常好的平衡开发与运行的效率。 掌握一个 IDE,想提高开发上的效率,记住常用的快捷键是很有必要的,真正的对战类游戏高手无不娴熟于键盘的微操作,那种叫嚣着真正的程序员是用记事本编程实在听来让人冷峻不经。于是也就有了下文,在网上搜来的 VC 常用快捷键 阅读全文 >>

在 Visual Studio 或 Rational Rose 中使用 CVS

Eclipse 内置就对 CVS 很好的支持,而 Visual Studio(.net) 和 Rational Rose 等对 VSS 支持很好,因为他们遵循的是 Microsoft SCC API,那么如何让 Microsoft SCC API 与 CVS 桥接起来呢?这就是现在要介绍的几个工具

1. Jalindi 这个程序完全免费,任你使用

Jalindi 的网址
http://www.devhood.com/tools/tool_details.aspx?tool_id=491

http://www.jalindi.com/igloo/index.html 阅读全文 >>

VC窗口程序中出现中文乱码的解决

用 VC6 的 MFC AppWizard 生成的窗口程序,窗口标题或者标签用中文,编译执行发现中文成乱码了,奇怪,以前怎么没有出现这种问题呢?

在网上找找资料才知道,原来我现在用的是非中文 XP 操作系统,在用向导生成窗口程序的过程中,没有中文语言的选项。不知道为什么,我的操作系统的区域都是设置成的中国,语言也是设成的简体中体,都没错的,VC6 安装程序看我的界面不是中文就不给我装上中文语言支持的动态库。 阅读全文 >>

在VB中进行条件编译

因为工作的需要,在某些时候又要拣一拣令我生厌的VB,是要在别人代码的基础上进行修改。看人家代码都是写连接字符串、用户名和密码都写两套,开发时用一套,注释另一套,发布时反过来,更加了VB还只能行注释。我一看就嫌这麻烦,宁愿多思考思考,看看有啥好办法能偷偷懒,当这事,条件编译了。

以前就没怎么用过VB,更别提VB中条件编译了,Goole搜,发现VB中可以用几个预编译指令: #Const、#If .Then ...#ElseIf.Then...#Else...#End If

#Const 声明一个常量,相当于宏定义,用#Const定义的只能被当前模块识别。例如定义常 DebugVer =1,标明是调试版本:

#Const DebugVer = 1

然后,数据库连接串写成

#If DebugVer = 1 Then  '或者是#If DebugVer Then VB和C、C++也一样,非零为真
connStr = "Provider=OraOLEDB.Oracle;Data Source=Fraud-Test;User Id=Unmi;Password=testpwd;"
#Else
connStr = "Provider=OraOLEDB.Oracle;Data Source=Fraud;User Id=user;Password=pwd";
#End If

要发布到正式环境时编译前只需要把 #Const DebugVer = 1 改为 #Const DebugVer = 1 就 OK 了。 阅读全文 >>

C++的头文件中类声明后忘记加分号产生不可预期的编译错误

头文件 Test.h 的内容是
class Test
{
public:
 virtual void test1();
}
实现文件是 Test.cpp
#include "Test.h"
#include <iostream>
using namespace std;
void Test::test1(){  cout<<"Hello"<<endl; }

编译时出现错误
c:\program files\microsoft visual studio\vc98\include\errno.h(29) : error C2143: syntax error : missing ';' before 'string' 阅读全文 >>

VB采用ADO的方式操作Excel表格

使用VB配搭着ADO可以像操纵Access数据文件一样操作Excel文件,对于如何用ADO操作Excel文件,首先应该建立一些基本概念。你需要将一个Excel数据文件想象为一个关系数据库,Excel文件中的每个工作表就对应该数据库中的一个表,而工作表中的每一列当然就是表的列了。

代码如下:操作 book1.xls 的 sheet1 工作表,注意要写成 sheet1$ (加个美元符号) 阅读全文 >>