项目接近尾声,要开始作安装包,这里作个笔记。
1、Inno Setup 是什么?
Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件。
关键功能:
[……]
项目接近尾声,要开始作安装包,这里作个笔记。
1、Inno Setup 是什么?
Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件。
关键功能:
[……]
开发wxWidgets项目已经快3个月了,也快接近尾声,今天对项目进行了一个Release版测试,突然出现一个比较莫名的问题,经过辛苦的wxMessageBox调试,发现Release版的一个布尔值和Debug版的值不一样。。。
后面在构造函数中对这个bool值成员进行了初始化就好了。[……]
因为对wxWidgets不熟,这几天为了回车等热键的问题抓破头了。。。
问题描述:
我的登录窗体里有以下控件:
2个wxTextCtrl(帐号密码输入框),1个wxButton(登录按钮)
要实现不管在什么时候按回车,都和鼠标点击登录按钮一个效果。
但实[……]
现在我要从我的本地文件中装载一个图片,显示在wxStaticBitmap上,假如这个图片的路径在我们的项目的images文件夹下,文件名为abc.jpg,那么我们该怎么引入这个图片呢?
我们需要用wxImage对象,将这个图片先转换成wxImage对象,然后,我们通过wxBitmap[……]
在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行
而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可
经典的C++库
STLport——-SGI STL库的跨平台可移植版本,在以前有些编译器离符合
 [……]
今天做的项目中需要根据系统的分辨率控制窗体的位置,所以用到这些,拿出来分享一下。
这里需要引用到wxWidgets的一个库文件:#include <wx/settings.h>
我们用到的是它里面的wxSystemSettings这个类,在这里摘录一下官方帮助文档:[……]
使用代码
1 2 3 4 5 6 |
string c,key; cin >> c; if( c == "c" ) return(0); CMD5 iMD5; iMD5.GenerateMD5( (unsigned char*)c.c_str(), c.size() ); key = iMD5.ToString(); |
Md5.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#ifndef _MD5_H #define _MD5_H //#pragma warning(disable:4786) #include <string> using namespace std; /*! * Manage MD5. */ class CMD5 { private: #define uint8 unsigned char #define uint32 unsigned long int struct md5_context { uint32 total[2]; uint32 state[4]; uint8 buffer[64]; }; void md5_starts( struct md5_context *ctx ); void md5_process( struct md5_context *ctx, uint8 data[64] ); void md5_update( struct md5_context *ctx, uint8 *input, uint32 length ); void md5_finish( struct md5_context *ctx, uint8 digest[16] ); public: //! construct a CMD5 from any buffer void GenerateMD5(unsigned char* buffer,int bufferlen); //! construct a CMD5 CMD5(); //! construct a md5src from char * CMD5(const char * md5src); //! construct a CMD5 from a 16 bytes md5 CMD5(unsigned long* md5src); //! add a other md5 CMD5 operator +(CMD5 adder); //! just if equal bool operator ==(CMD5 cmper); //! give the value from equer // void operator =(CMD5 equer); //! to a string string ToString(); unsigned long m_data[4]; }; #endif /* md5.h */ |
Md5.cpp
[crayon-67[……]
使用wxWidgets便于支持跨平台的软件,但是在平台底层的差异还是无法封装。比如windows平台下file explorer显示的程序图标是直接从程序中读取的,所以必需使用windows的“.rc”格式资源文件,并编译进项目中才可以显示。如果使用xmp格式或其它格式[……]
今天在做项目的时候,遇到一个非常郁闷的问题,捣鼓了半天,最后在国外的一个论坛上获得了思路,终于把它解决掉,在此给大家分享一下。
我们知道,在C++中用ADO操作数据库,首先需要用#import将ado组件导入进来,然后才能正常使用它。
[crayon-6740de2f63955419[……]
wxString的大小写转换函数有两类,一类:Lower/Upper(),另一类:MakeLower()|LowerCase()/MakeUpper()|UpperCase()
一.Lower()/Upper()。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
void datetest() { wxDateTime now=wxDateTime::Now(); wxString date1=now.Format(); wxString date2=now.Format(wxT("%X")); wxString date3=now.Format(wxT("%x")); //下面代码只显示日期部分 cout<<"wxDateTime now=wxDateTime::Now():"<<wxDateTime::Now().FormatDate()<<endl; cout<<"now.Format():"<<date1<<endl;//日期时间 cout<<"now.Format(wxT(\"%X\")):"<<date2<<endl;//时间 cout<<"now.Format(wxT(\"%x\")):"<<date3<<endl;//日期 //有趣的ParseDateTime() cout<<"\n\nwxDateTime::ParseDateTime():"<<endl; //tomorrow 是什么日子? cout<<"tomorrow:"<<endl; wxDateTime tomorrow; tomorrow.ParseDateTime(wxT("tomorrow 11:00am")); cout<<"Tomorrow is "<<tomorrow.Format()<<endl; //五一又是什么日子? cout<<"The Labor Day test:"<<endl; wxDateTime laborday; laborday.ParseDate(wxT("May 1st")); cout<<"The Labor Day is "<<laborday.Format()<<endl; //至于wxDateSpan,用法非常直白,仅举一例,顺便一提Format的另一种格式: wxDateSpan span(0,1); wxDateTime then=now.Add(span); cout<<then.Format(wxT("%B %d %Y"))<<endl; } |
[……]