博文

CImg - 跨平台的C++的图像处理库(2010-07-01 18:10:00)

摘要:CImg是一个跨平台的C++的图像处理库,提供了加载、处理、显示、保存等一系列功能,其中的图像处理功能尤其强大。 主页地址:http://cimg.sourceforge.net/
下载地址:http://cimg.sourceforge.net/download.shtml   载时注意应该下载源码包,里面附带的大量的例程。而实际上CImg库只是一个头文件CImg.h,这个头文件里包含了CImg库所有的代码。
另外不要错过下载列表中的一个部分完成的http://cimg.sourceforge.net/CImg_reference_chinese.pdf......

阅读全文(5278) | 评论:0

[推荐]C/C++编程遇到问题和编码时要注意的地方(2010-07-01 18:00:00)

摘要:来源百度百科 http://baike.baidu.com/view/118570.htm?fr=ala0_1_1   遇到问题的时候:   1,不要怨天怨地。出了问题,当然有可能是系统的bug,API的问题,但是那些几率往往比你犯低级错误的几率要低多了,先从自己身上找原因,是不是自己写错了。   2,要掌握工具。最低限度你要会写Log,最好是Log和调试器结合。好 的工具可以大大的提高效率。以前有人跟我说,Dll不能调试,我发现可以;有人说多线程不能调试,我发现可以;有人说COM不能调试,我发现可以;有人说 IE插件不能调试,我发现可以;有人说OE插件不能调试,我发现也可以。当然,你确实会遇到不能调试的时候,当年我们做东芝芯片的嵌入程序,一个组都没有 一个仿真器和调试器,但是至少可以用Log嘛,无非是麻烦点。   3,分析问题要有逻辑。遇到问题可以先把所有的可能性都列出来,然后一个一个分析,肯定能找到原因的。   4,要学会隔离问题。问题涉及到的代码越多,越难以理解,问题越难以解决。遇到这样的情况,可以利用Log或者调试器,一行代码一行代码的给它们洗清嫌疑,这样很快你就可以找到出问题的地方。如果代码特别长,程序特别复杂,可以用二分法来做,效率很高。   5,千万不要懒惰,不要事事求别人。一次复杂的调试过程就像一部侦探剧,如果你有非常好的逻辑性,那这部剧的主角就是福尔摩斯,剧情一定非常精彩。我说这个是有巨大风险的,说真的我帮人调东西挺上瘾的,很有意思。但是我还是要告诉大家,一次高难度的调试之后,你的满足感绝对不亚于写了一个伟大的程序。 要想不遇到问题,写代码的时候:   1,要对写出来的代码负责。我很佩服那些写代码写100行都不执行一次的 高手,如果他们最后不被低级错误困扰的话我就更加的佩服了。我写程序几乎是写一行两行就要执行一次,每句话我都要确保执行效果跟我的预期一致。没错这样写的时候 可能慢一些,但是调试的时候很轻松,我可以很简单的确定哪些代码绝对没有问题。所以我写代码整体速度比一般人高。很多人学习新东西的时候喜欢把例子抄一遍,运行一下,改改,再运行。我喜欢一句一句的抄例子,抄一句两句执行一次,这样可以把例子透彻的理解,而且很难会遇到出现了问题找不到原因的时候。   2,函数体功能块不要过长。我认为我的智商并不高,我很难接......

阅读全文(1622) | 评论:1

TCHAR*(IP格式字符串)转 struct in_addr(2010-06-29 16:24:00)

摘要:本文代码完成"192.168.1.1"这类的字符串转换到struct in_addr中存储 // TCAHR to char BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize)
{
    DWORD dwMinSize;
    dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
    if(dwSize < dwMinSize)
    {
        return FALSE;
    }
    WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE);
    return TRUE;
}
//////////////////////////////////////////////////////////////////
        char temp[18];
        DWORD dwAddr;
       struct in_addr devIP;
       TCHAR szIP[] = _T("......

阅读全文(4983) | 评论:0

windows下临时文件读写(2010-06-25 16:59:00)

摘要:临时文件的使用

  正规软件经常用到临时文件,你经常可以会看到C:\Windows\Temp目录下有大量的扩展名为tmp的文件, 这 些就是程序运行是建立的临时文件。临时文件的使用方法基本与常规文件一样,只是文件名应该调用函数 GetTempFileName()获得。它的第一个 参数是建立此临时文件的路径,第二个参数是建立临时文件名的前缀, 第四个参数用于得到建立的临时文件名。得到此临时文件名以后,你就可以用它来建立并操作 文件了,如:
  char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];

   GetTempPath(_MAX_PATH, szTempPath);

  GetTempFileName(szTempPath,_T ("my_"),0,szTempfile);

  CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite);

  char m_char='a';

   m_tempFile.Write(&m_char,2);

  m_tempFile.Close();......

阅读全文(2318) | 评论:1

C/C++ * 在输入流中的跳跃作用(2010-06-24 09:12:00)

摘要:e.g. scanf("%d %*d %d",&a,&b);
当输入为:1   2   3时,把1赋予a,2被跳过,3赋予b。

......

阅读全文(1871) | 评论:1

CString的Format方法使用技巧总结(2010-06-19 10:34:00)

摘要:CString的Format方法使用技巧总结(int|float|double转换为 CString)
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://flyxxtt.blogbus.com/logs/44052998.html
      在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString 既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给 我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转 换为CString字符串只需一行代码就可以实现。       先看看Format用于转换的格式字符:        %c                 单个字符
       %d                 十进制整数(int)
       %ld                十进制整数(long)
    &nbs......

阅读全文(1522) | 评论:0

自定义CEdit等控件文本颜色等属性(2010-06-18 11:38:00)

摘要:重载DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)方法 其他属性的修改类似 void CUIText::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) {
    CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    int iSave = pDC->SaveDC();

    CString strText;
    CRect rtWin;
    GetClientRect(&rtWin);
    pDC->SetBkColor(COLOR); // 设置背景色
    pDC->SetTextColor(m_txColor); // 设置文本颜色

    GetWindowText(strText); // 获取文本
    pDC->DrawText(strText,&rtWin,m_dwDrawFlag); // 重新绘制文本

    pDC->RestoreDC(iSave);
    ReleaseDC(pDC);
}
......

阅读全文(3747) | 评论:0

VC实现当前程序退出后重启(关键代码段)(2010-06-08 17:34:00)

摘要:将该段代码置于Onclose或自定的响应消息的函数中         TCHAR szPath[MAX_PATH];  //         GetModuleFileName(NULL, szPath, MAX_PATH); //获取当前应用程序的全路径

        //定义俩变量,具体的请参见msdn
        STARTUPINFO startupInfo;
        PROCESS_INFORMATION procInfo;
        memset(&startupInfo,0x00,sizeof(STARTUPINFO));
        startupInfo.cb = sizeof(STARTUPINFO);

       // 这个变量是标记
        if(m_bRestart)
        {
// 这句是决定命运的关键            ::CreateProcess(szPath,NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&startupInfo,&procInfo);
        } ......

阅读全文(6031) | 评论:0

二叉树的先序遍历------零基础学数据结构讲座(2010-06-05 13:16:00)

摘要:二叉树的先序遍历的递归定义如下:如果二叉树为空,则执行空操作。如果二叉树非空,则执行以下操作: (1)访问根结点。 (2)先序遍历左子树。 (3)先序遍历右子树。     在二叉树先序的遍历过程中,对每一棵二叉树重复执行以上的递归遍历操作,就可以得到先序序列。例如,在遍历根结点A的左子树 {B,D,E,G,H,I}时,根据先序遍历的递归定义,先访问根结点B,然后遍历B的左子树为{D,G},最后遍历B的右子树为{E,H,I}。访问过 B之后,开始遍历B的左子树{D,G},在子树{D,G}中,先访问根结点D,因为D没有左子树,所以遍历其右子树,右子树只有一个结点G,所以访问G。 B的左子树遍历完毕,按照以上方法遍历B的右子树。最后得到结点A的左子树先序序列:B、D、G、E、H、I。   依据二叉树的先序递归定义,可以得到二叉树的先序递归算法。 void PreOrderTraverse(BiTree T) /*先序遍历二叉树的递归实现*/ {     if(T)                                                                     /*如果二叉树不为空*/     {         printf(“%2c”,T->data......

阅读全文(2600) | 评论:0

Linux开放实验室(2010-05-24 15:19:00)

摘要:原文 http://www.oschina.net/bbs/thread/8101?lp=1 简介 为方便广大Linux软件开发爱好者,轩辕高端IT培训中心于2009年10月设立了Linux开放实验室,轩辕Linux开放实验室提供了完整的 Linux软件开发环境,包括:Redhat Enterprise Linux 5.4、C/C++(GCC、GDB)、make、Java、Python、Perl、C++ Boost、C++ ACE、C++ OTL、Oracle、DB2、MySQL、Tomcat...,囊括了网络、多线程、数据库等服务器端软件开发的各个方面。 Linux开放实验室典型用途 * 熟悉Linux操作系统,如系统命令、Shell编程、vi等编辑器; * C++语言的学习与软件开发,包括基于Boost和ACE的软件开发; * C++数据库开发,OTL; * Java语言的学习与软件开发; * Java数据库开发,jdbc; * Python、Perl等脚本语言的学习与软件开发; * 更多您能发掘到的用途... 开发环境 * 操作系统:Redhat Enterprise Linux 5.4; * C/C++:GCC工具链(g++/gcc 4.4.0/4.1.2/3.4.0、gdb 6.8)、GNU make 3.81、GNU autotools 2.59等; * C++第三方库:Boost 1.40、ACE 5.7.4、OTL 4.0; * Java:Java se 6(SUN jdk 1.6.0_16); * Jdbc:Oracle ojdbc14、MySQL mysql-connector-java-5.0.8; * 数据库:Oracle 10g 企业版、DB2 express-C 9.7、MySQL 5.0.77; * Python 2.4.3/2.6.4、Perl 5.8.8; * 版本控制:CVS 1.12.13 * ... 实验室面向的人群 * 所有能通过互联网登录到实验室服务器的朋友。 开始使用 在开始使......

阅读全文(4028) | 评论:0