CString sPicturePath = "C:\Users\Public\Pictures\Sample Pictures\八仙花.jpg";

CString sPicturePara= "shimgvw.dll ImageView_Fullscreen "+ sPicturePath ;

 ShellExecute(NULL, NULL, "rundll32.exe", 
    sPicturePara,"C:\\WINDOWS\\system32", SW_SHOW);

posted @ 2012-06-18 16:41 Mumoo 阅读(1696) | 评论 (0)编辑 收藏
 

方法一 :

Step 1: 点击[开始]-[控制面板];

Step 2: 点击[轻松访问];

Step 3: 点击[使鼠标更易于使用];

Step 4: 在[防止将窗口移动到屏幕边缘时自动排列窗口]前打勾.

OK

ps:此操作同时还会关闭Win7的窗口摇曳模式(即鼠标拖住某个窗口摇曳,然后其他的窗口会自动最小化,再次摇曳又会恢复原状),想要关闭自动最大化的朋友看来只能舍弃这个功能了.

 

方法二 :

Step 1: 使用快捷键Win+R打开运行窗口;

Step 2: 在其中输入regedit,按回车或点击确定;

Step 3: 依次双击HKEY_CURRENT_USER/Control Panel/Desktop;

Step 4: 在右边出现的窗口中找到WindowArrangementActive并双击之.

Step 5: 将弹出窗口中的数值"1"改为"0".

OK,退出,然后再注销重新登陆或者重启电脑,搞定..

posted @ 2012-06-18 10:45 Mumoo 阅读(424) | 评论 (0)编辑 收藏
 
int nTest = ((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck();
int nTest1 = ((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck();//单选框  
if (nTest == 1)
{
AfxMessageBox("你好a");
}
else if (nTest1 == 1)
{
AfxMessageBox("你好b");
}
else
{
UpdateData(TRUE);
m_comMsg = "你好";
UpdateData(FALSE);
}

//m_sSeclectLevel:静态框的value变量
//m_ctrlSecretLevel:复选框变量

m_ctrlSecretLevel.GetWindowText(m_sSeclectLevel);

if (m_sSeclectLevel.IsEmpty())
{
MessageBox(PRINT_MSG, "打印监控", MB_OK | MB_ICONERROR);
}
else
{
LOG("确认打印,打印密级为 %s", m_sSeclectLevel);
OnOK();
}//复选框


改变提示信息字体颜色
Class -> 类名 ->属性 -> Message -> WM_CTLCOLOR -> <Add> OnCtlColor
int nId = pWnd-> GetDlgCtrlID();
if(nCtlColor == CTLCOLOR_STATIC)
{
if(nId == IDC_STATIC1)
{
pDC-> SetTextColor((COLORREF)(RGB(255,0,0)));
}
}
posted @ 2012-06-11 14:58 Mumoo 阅读(363) | 评论 (0)编辑 收藏
 
列表控件可以看作是功能增强的 ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。
MFC 中使用 CListCtrl 类来封装列表控件的各种操作。
创建一个窗口:可通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
dwStyle 中可以使用以下一些列表控件的专用风格:
l LVS_ICON ,LVS_SMALLICON ,LVS_LIST, LVS_REPORT 这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示

l LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
l LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
l LVS_SINGLESEL 同时只能选中列表中一项
也可通过listcontrl对话框的 View 属性->Report 设置

设置为Report属性后,若要ListControl显示为列表状,则在Init函数中,添加:
ListView_SetExtendedListViewStyle(m_listctrl.m_hWnd, LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_FULLROWSELECT);

int InsertItem( int nItem, LPCTSTR lpszItem ); 插入行

nItem:指明插入位置
lpszItem:为显示字符。
除 LVS_REPORT 风格外其他三种风格都只需要直接调用 InsertItem 就可以了,但如果使用报表风格就必须先设置列表控件中的列信息。

int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat , int nWidth, int nSubItem); 插入列

iCol:为列的位置,从零开始
lpszColumnHeading:为显示的列名
nFormat:为显示对齐方式
nWidth:为显示宽度
nSubItem:为分配该列的列索引。

BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );设置每列的显示字符

nItem:为行位置
nSubItem:为列位置
lpszText:为显示字符

下面的代码演示了如何设置多列并插入数据:
m_list.SetImageList(&m_listSmall,LVSIL_SMALL);//设置 ImageList
m_list.InsertColumn(0,"Col 1",LVCFMT_LEFT,300,0);//设置列
m_list.InsertColumn(1,"Col 2",LVCFMT_LEFT,300,1);
m_list.InsertColumn(2,"Col 3",LVCFMT_LEFT,300,2);

m_list.InsertItem(0,"Item 1_1");//插入行
m_list.SetItemText(0,1,"Item 1_2");//设置该行的不同列的显示字符
m_list.SetItemText(0,2,"Item 1_3")

posted @ 2012-06-07 14:38 Mumoo 阅读(3895) | 评论 (0)编辑 收藏
 

原文地址:http://hi.baidu.com/miliear/blog/item/1da2a2d88fc08b3211df9bc3.html

1. 属性列表:
    SelectionMode    组件中条目的选择类型,即多选(Multiple)、单选(Single)
    Rows             列表框中显示总共多少行
    Selected         检测条目是否被选中
    SelectedItem     返回的类型是ListItem,获得列表框中被选择的条目
    Count            列表框中条目的总数
    SelectedIndex    列表框中被选择项的索引值
    Items            泛指列表框中的所有项,每一项的类型都是ListItem

2. 取列表框中被选中的值
     ListBox.SelectedValue

3. 动态的添加列表框中的项:
     ListBox.Items.Add("所要添加的项");

4. 移出指定项:
     //首先判断列表框中的项是否大于0
     If(ListBox.Items.Count > 0 )
     {
          //移出选择的项
          ListBox.Items.Remove(ListBox.SelectedItem);
     }

5. 清空所有项:
     //首先判断列表框中的项是否大于0
     If(ListBox.Items.Count > 0 )
     {
          //清空所有项
          ListBox.Items.Clear();
     }

6. 列表框可以一次选择多项:
     只需设置列表框的属性 SelectionMode="Multiple",按Ctrl可以多选

7. 两个列表框联动,即两级联动菜单
     //判断第一个列表框中被选中的值
     switch(ListBox1.SelectValue)
     {
          //如果是"A",第二个列表框中就添加这些:
          case "A"
                ListBox2.Items.Clear();
                ListBox2.Items.Add("A1");
                ListBox2.Items.Add("A2");
                ListBox2.Items.Add("A3");
          //如果是"B",第二个列表框中就添加这些:
          case "B"
                ListBox2.Items.Clear();
                ListBox2.Items.Add("B1");
                ListBox2.Items.Add("B2");
                ListBox2.Items.Add("B3");
     }

8. 实现列表框中项的移位
     即:向上移位、向下移位
     具体的思路为:创建一个ListBox对象,并把要移位的项先暂放在这个对象中。
     如果是向上移位,就是把当前选定项的的上一项的值赋给当前选定的项,然后
     把刚才新加入的对象的值,再附给当前选定项的前一项。
     具体代码为:
      //定义一个变量,作移位用
      index = -1;
      //将当前条目的文本以及值都保存到一个临时变量里面
      ListItem lt=new ListItem (ListBox.SelectedItem.Text,ListBox.SelectedValue);
      //被选中的项的值等于上一条或下一条的值
      ListBox.Items[ListBox.SelectedIndex].Text=ListBox.Items[ListBox.SelectedIndex + index].Text;
      //被选中的项的值等于上一条或下一条的值
      ListBox.Items[ListBox.SelectedIndex].Value=ListBox.Items[ListBox.SelectedIndex + index].Value;
      //把被选中项的前一条或下一条的值用临时变量中的取代
      ListBox.Items[ListBox.SelectedIndex].Test=lt.Test;
      //把被选中项的前一条或下一条的值用临时变量中的取代
      ListBox.Items[ListBox.SelectedIndex].Value=lt.Value;
      //把鼠标指针放到移动后的那项上
      ListBox.Items[ListBox.SelectedIndex].Value=lt.Value;

9. 移动指针到指定位置:
      (1).移至首条
          //将被选中项的索引设置为0就OK了
          ListBox.SelectIndex=0;
      (2).移至尾条
          //将被选中项的索引设置为ListBox.Items.Count-1就OK了
          ListBox.SelectIndex=ListBox.Items.Count-1;
      (3).上一条
          //用当前被选中的索引去减 1
          ListBox.SelectIndex=ListBox.SelectIndex - 1;
      (4).下一条
          //用当前被选中的索引去加 1
          ListBox.SelectIndex=ListBox.SelectIndex + 1;
 

posted @ 2012-06-06 17:34 Mumoo 阅读(6773) | 评论 (0)编辑 收藏
 
读取XML文件:TiXmlDocument XmlDoc(sJobXML);
                   if (!XmlDoc.LoadFile())
                   {
                       LOG("GetJobXMLInfo:加载XML文件%s失败", sJobXML);
                       return FALSE;
                     }

获取根结点:TiXmlElement* rootElement = XmlDoc.RootElement(); 

获取根结点的第一个标签值:TiXmlElement* pElement= rootElement->FirstChildElement(); 

获取标签值的第一个键值: TiXmlElement* pChildElement= pElement->FirstChildElement(); 

获取该键值的所有属性值:while ( pChildElement) 
                                 {
                                    TiXmlAttribute* pAttribute= pChildElement->FirstAttribute(); //键值的第一个属性值
                                    while ( pAttribute) 
                                    {
                                          // pAttribute->Name() ——属性名称;pAttribute->Value()——属性值
                                         pAttribute= pAttribute->Next(); //依次获取其他属性值
                                     }

获取键值的第一个子属性值   TiXmlElement* pSecElement = pChildElement->FirstChildElement();
                                    //pSecElement ->GetText()——子属性的属性值
    
 依次获取键值的n个子属性值   TiXmlElement* pChildElement= pChildElement->NextSiblingElement();
                                  }
posted @ 2012-06-06 17:27 Mumoo 阅读(782) | 评论 (0)编辑 收藏
 

 


 CString cstr(asdd);
 const char* ch = (LPCTSTR)cstr;

 CString.format("%s", char*);

 CString cstr(asdd);
 const char* ch = (LPCTSTR)cstr;

 char* = (LPTSTR)(LPCTSTR)cstr


一、定义

1、CString:动态的TCHAR数组。它是一个完全独立的类,封装了+等操作符和字符串操作方法。

2、BSTR:专有格式的字符串(需要使用系统函数来操纵)。定义为:typedef OLECHAR FAR* BSTR

3、LPCTSTR:常量的TCHAR指针。定义为:typedef const char* LPCTSTR

二、要点

1、char*:指向ANSI字符数组的指针,其中每个字符占8位(有效数据是除掉最高位的其他七位),它保持

了与传统C/C++的兼容。

2、LPSTR:指向一个以“\0”结尾的ANSI字符数组的指针,可与char*互换使用,它通常在Win32中使用。

其中LP表示长指针(long pointer)。

3、LPCSTR:该数据类型的特性在于它的实例不能被使用它的API函数改变,除此之外与LPSTR等同。其

中C表示常量(CONSTANT)。

4、在Win16下长指针(LP)和短指针(P)有区别,而在Win32下它们是没有区别的,都是32位。

5、TCHAR在采用Unicode方式下编译时为wchar_t,在普通编码方式下编译时位char。

三、Unicode标准

1、为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表示字符串的

方法,所有字符中的字节都是16位(两个字节)的值,其数量也可以满足几乎世界上所有书面语言字符的

编码需求,开发程序时使用Unicode(类型位wchar_t)是一种被鼓励的做法。

2、LPWSTR和LPCWSTR由此产生,它们的含义类似于LPSTR和LPCSTR,不同的是字符数据wchar_t为

16位,而char却为8位。

四、TCHAR数据类型

TCHAR数据类型是为了实现ANSI和Unicode两种编码的通用而提出来的

1、如果定义了_UNICODE,则声明如下:

typedef wchar_t TCHAR;

2、如果没有定义_UNICODE,则声明如下:

typedef char TCHAR;

这样就可以让CString、LPTSTR和LPCTSTR中的每个字符都是TCHAR类型,而不考虑它们的编码格

式。而且CString是一个封装好了的类,更是大大地方便了用户的使用。

五、VC++中常用数据类型之间的转换

1、定义

int i=100;

long l=2001;

float f=300.2;

double d=12345.119

char username[]="2008北京奥运";

char temp[200];

char* buf;

CString str;

_variant_t v1;

_bstr_t v2;

2、其他数据类型到字符串的转换

(1)短整形int->字符串

itoa(i,temp,10); //按十进制把i转换为字符串存入temp中

itoa(i,temp,2); //按二进制把i转换为字符串存入temp中

(2)长整形long->字符串

ltoa(l,temp,10);

3、从其他包含了字符串的变量中获取指向该字符串的指针

(1)从CString变量中获取字符串

str="祈福四川";

buf=(LPSTR)(LPCTSTR)str;

(2)从BSTR类型的_varitant_t变量中获取字符串

v1=(_bstr_t)"程序员";

buf=_com_util::ConvertBSTRToString((_bstr_t)v1);

4、字符串转换为其他数据类型

strcpy(temp,"123");

(1)i=atoi(temp); //字符串->短整型int

(2)l=atol(temp); //字符串->长整形long

(3)d=atof(temp); //字符串->浮点型double

5、其他数据类型转换到CString

(1)使用CString的成员函数Format来转换

A:str.Format("%d",i); //短整型int->CString

B:str.Format("%f",f); //浮点数float->CString

(2)支持CString构造函数的数据类型可以直接赋值,例如char*

str=username;

六、BSTR、_bstr_t和CCombBSTR

BSTR:指向字符串的32位指针,_bstr_t和CComBSTR都是对它的封装。

1、char*->BSTR的转换

BSTR b=_com_util::ConvertStringToBSTR("数据");

注:使用之前需要加上comutil.h头文件

2、BSTR->char*的转换

char* p=_com_util::ConvertBSTRToString(b);

七、VARIANT、_variant_t和COleVariant

1、对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型。再对联合结构中相同数据类型的变量赋

值(可参考VC98\Inlude\OAIDL.H头文件中关于tagVARIANT结构体的定义)。举例如下:

VARIANT va;

va.vt=VT_l4; //指明数据类型

va.lVal=2008;

2、对于不马上赋值的VARIANT,最好先使用void VariantInit(VARIANTARG FAR* pvarg)函数对其进行初始

化,其本质是将vt设置为VT_EMPTY。vt与常用数据类型的对应关系(略)。

3、_variant_t是VARIANT的封装类,赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。

例如:

long l=222;

int i=100;

_variant_t lVal(l);

lVal=(long)i;

4、COleVariant与_variant_t的使用方法基本一样,示例如下:

COleVariant v3="字符串",v4=(long)1999;

CString str=(BSTR)v3.pbstrVal;

long l=v4.lVal;

八、其他

1、对消息的处理中,我们通常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据

(WORD),例如:

LPARAM lParam;

WORD loValue=LOWORD(lParam); //取低16位

WORD hiValue=HIWORD(lParam); //取高16位

2、对于16位的数据(WORD),我们可以使用同样的方法分解成高低两个8位的数据(BYTE),例如:

WORD wValue;

BYTE loValue=LOBYTE(wValue); //取低8位

BYTE hiValue=HIBYTE(wValue); //取高8位

3、如何将CString类型的变量赋给char*类型的变量

(1)CString::GetBuffer函数

char* p;

CString str="hello";

p=str.GetBuffer(str.GetLength());

str.ReleaseBuffer();

(2)strcpy函数

CString str("aaaaaaaa");

strcpy(str.GetBuffer(10),"aa");

str.ReleaseBuffer();

GetBuffer(int n)函数用于获取字符数组,其中n表示字符数组的长度,使用完该字符数组之后一定要调用

ReleaseBuffer()函数来释放这个字符数组。

注:在能够使用const char*的地方,通常不要使用char*

(3)memcpy函数

CString mCS=_T("cxl");

char mch[20];

memcpy(mch,mCS,20);

(4)LPCTSTR强制类型转换(不建议使用)

char* ch;

CString str;

ch=(LPSTR)(LPCTSTR)str;

str="good!";

sprintf(ch,"%s",(LPTSTR)(LPCTSTR)str);

(5)CString->LPTSTR->char*

CString Msg;

Msg=Msg+"abc";

LPTSTR lpsz;

lpsz=new TCHAR[Msg.GetLength()+1];

_tcscpy(lpsz,Msg);

char* psz;

strcpy(psz,lpsz);

4、如何将CString类型的变量赋给const char*类型的变量

char* a[100];

CString str("abcdef");

strncpy(a,(LPCTSTR)str,sizeof(a));

strncpy(a,str,sizeof(a));

注:编译器会自动将CString类型的变量转换为const char*类型

5、如何将CString类型的变量赋给LPCTSTR类型的变量

CString cStr;

const char* lpctStr=(LPCTSTR)cStr;

6、如何将LPCTSTR类型的变量赋给CString类型的变量

LPCTSTR lpctStr;

CString cStr=lpctStr;

7、如何将char*类型的变量赋给CString类型的变量

(1)直接赋值:CString myString="This is a test";

(2)构造函数:CString s1("Tom");

8、如何将CString类型的变量赋给char[](字符串)类型的变量

(1)sprintf函数

CString str="good!";

char temp[200];

sprintf(temp,"%s",(LPCSTR)str);

注:强制类型转换(LPCSTR)str与(LPTSTR)(LPCTSTR)str等同,使用的区别仅在于CString对象是变量

还是常量。LPCTSTR表示const char*,它得到的字符串是不可写的!如果将其强制转换位LPTSTR(去

掉const),是极为危险的!要得到char*,应该使用GetBuffer或GetBufferSetLength函数,用完之后再调

用ReleaseBuffer函数。

(2)strcpy函数

CString str;

char c[256];

strcpy(c,str);

str="Hello";

strcpy((char*)&c,(LPCTSTR)str);

九、关于CString的使用

1、指定CString形参

(1)对于大多数需要字符串参数的函数,最好将函数原型中的形参指定为一个指向字符(LPCTSTR),而非

CString的const指针。当将形参指定为指向字符的const指针时,可将指针传递到TCHAR数组(如字符串["hi

here"]或传递到CString对象)。CString对象将自动转换成LPCTSTR。任何能够使用LPCTSTR的地方也能

够使用CString对象。

(2)如果某个形参将不会被修改,则也将该参数指定为常量字符串引用(const CString&)。如果函数要修改

该字符串,则删除const修饰符。如果需要默认为空值,则将其初始化为空字符串([""]),如下所示:

void AddCustomer(const CString& name,const CString& address,const CString& comment="");

(3)对于大多数函数的结果,按值返回CString对象即可。

2、串的基本运算

char s1[20]="dir/bin/appl",s2[20]="file.asm",s3[30],*p;

int result;

(1)求串长

int strlen(char* s); //求串s的长度

例:printf("%d",strlen(s1));

(2)串复制

char* strcpy(char* to,char* from); //将from串复制到to串中,并返回to开始处的指针

例:strcpy(s3,s1);

(3)串联接

char* strcat(char* to,char* from); //将from串复制到to串的末尾

例:strcat(s3,"/");

strcat(s3,s2);

(4)串比较

int strcmp(char* s1,char* s2); //比较s1和s2的大小,s1<s2(小于0)、s1=s2(0)和s1>s2(大于0)

例:result=strcmp("baker","Baker"); //大于0

result=strcmp("12","12"); //等于0

result=strcmp("Joe","joseph"); //小于0

(5)字符定位

char* strchr(char* s,char c); //找c在字符串s中第一次出现的位置。若找到,则返回该位置;否则NULL。

例:p=strchr(s2,'.'); //p指向"file"之后的位置

(6)注意

A:上述操作是最基本的,其中后4个操作还有变种形式:strncpy、strncath和strnchr。

B:其他的串操作见C的<string.h>头文件。在不同的高级语言中,对串运算的种类及符号都不尽相同。

C:其余的串操作一般可由这些基本操作组合而成。

例:求子串的操作可如下实现

//s和sub是字符数组,用sub返回串s的第pos个字符长度为len的子串

void substr(char* sub,char* s,int pos,int len)

{

//其中0<=pos<=strlen(s)-1,且数组sub至少可容纳len+1个字符

if(pos<0 || pos>strlen(s)-1 ||len<0)

Error("parameter error!");

//从s[pos]起复制至多len个字符到sub

strncpy(sub,*s[pos],len);

}

posted @ 2012-06-04 09:05 Mumoo 阅读(2676) | 评论 (0)编辑 收藏
 

文件函数,顾名思义就是处理文件用的函数。使用这些文件处理函数前,必须先包含头文件FileFunc.nsh。该头文件目前包含如下一些函数:Locate、GetSize、DriveSpace、GetDrives、GetTime、GetFileAttributes、GetFileVersion、GetExeName、GetExePath、GetParameters、GetOptions、GetRoot、GetParent、GetFileName、GetBaseName、GetFileExt。文件处理函数的主要作用有文件搜索、获取路径、获取驱动器信息、获取命令行参数等等,应用甚广。下面我们就将该头文件中的函数作用作以简单介绍。

  • Locate - 搜索指定文件夹中符合指定过滤文件大小或指定文件过滤名的文件,并根据选项返回查找的文件路径、文件夹和名称
  • GetSize - 搜索文件、指定文件过滤名的文件或文件夹的大小或数量
  • DriveSpace - 获取驱动器的全部、已用和可用空间
  • GetDrives - 查找系统中所有可用驱动器
  • GetTime - 获取本地或系统时间;获取文件访问、创建和修改时间
  • GetFileAttributes - 获取文件或文件夹属性
  • GetFileVersion - 获取可执行文件的版本信息
  • GetExeName - 获取安装程序运行完整路径
  • GetExePath - 获取安装程序运行所在文件夹
  • GetParameters - 获取安装程序运行命令行参数
  • GetOptions - 获取安装程序运行命令行选项的值
  • GetRoot - 获取给定路径所属的根目录
  • GetParent - 获取给定路径的上层目录
  • GetFileName - 获取文件路径中的文件名称
  • GetBaseName - 获取文件路径中的文件基本名
  • GetFileExt - 获取文件路径中的文件扩展名
posted @ 2012-05-15 14:00 Mumoo 阅读(923) | 评论 (0)编辑 收藏
 

转自:http://hi.csdn.net/jinglidong

文本函数,顾名思义就是处理文本文件的函数。使用这些文本函数前,必须先包含头文件TextFunc.nsh。有些函数需要预声明,这个在帮助中有详细介绍,具体可查阅帮助。该头文件目前包含如下一些函数:LineFind、LineRead、FileReadFromEnd、LineSum、FileJoin、TextCompare、TextCompareS、ConfigRead、ConfigReadS、ConfigWrite、ConfigWriteS、FileRecode、TrimNewLines。下面我们就常用函数用法做以简单介绍。

  • LineFind

查找文本文件中的指定行并在回调函数中编辑或者查看该行。语法:
${LineFind} "[文件1]" "[文件2|/NUL]" "[行号]" "函数"

  • LineRead

读取指定文本文件中指定行号的内容。语法:
${LineRead} "[文件]" "[行号]" $输出变量

  • FileReadFromEnd

从末尾起逐行读取文本文件。语法:
${FileReadFromEnd} "[文件]" "函数"

  • LineSum

获取文本文件的行数。语法:
${LineSum} "[文件]" $输出变量

  • FileJoin

将两个文件合并为一个。语法:
${FileJoin} "[文件1]" "[文件2]" "[文件3]"

  • TextCompare

比较两个文本文件。语法:
${TextCompare} "[文件1]" "[文件2]" "[选项]" "函数"

  • FileRecode

将文本文件从 DOS 重新编码为 Windows 格式,反之亦然。语法:
${FileRecode} "[文件]" "[格式]"

  • TrimNewLines

修剪字符串中的新行。语法:
${TrimNewLines} "[字符串]" $输出变量

该头文件中的ConfigRead/ConfigWrite函数与NSIS内置的ReadINIStr及WriteINIStr命令用法类似,故在此不再赘述。

posted @ 2012-05-15 09:59 Mumoo 阅读(955) | 评论 (0)编辑 收藏
 
转自 http://hi.csdn.net/jinglidong

文字函数,顾名思义就是处理字符串的函数。使用这些字符串函数前,必须先包含头文件WordFunc.nsh。该头文件目前包含如下一些函数:WordFind、WordFind2X、WordFind3X、WordReplace、WordAdd、WordInsert、StrFilter、VersionCompare、VersionConvert等。这些函数的主要作用都是查找字符串。下面我们就常用函数用法做以简单介绍。

  • WordFind

用于在给定字符串中查找使用指定的分隔符分隔的字符串。由于功能众多,其语法与参数在此不再赘述。举例说明:假如我们要从字符串“first;second;third;forth”中查找第二个字符串,就必须使用这样的代码:
${WordFind} "first;second;third;forth" ";" +2 $R0
输出的结果$R0为second。其中的+2中的“+”代表从左查找,2代表第二个字符串。

  • WordFind2X

用于在给定字符串中查找使用指定的两个分隔符包围的字符串。功能强大,语法与参数亦不赘述。举例说明其用法:假如我们要从字符串“<System>|<Guest>|<User>”中查找第三个字符串,也就是倒数第一个,即User,用第一个就比较麻烦了。这是我们需要借助WordFind2X查找。代码如下:
${WordFind2X} "<System>|<Guest>|<User>" "<" ">" -1 $R0
输出的结果$R0为User。其中的-1中的“-”代表从右计算,1代表第二个字符串。

  • WordFind3X

与WordFind2X比较相似,用于在给定字符串中查找使用指定的两个分隔符包围且含有指定字符串的字符串。使用方法将不做介绍,用户可以参考中文版本的帮助文件。

  • WordReplace
WordReplace的作用是从字符串中替换或删除词语。语法:
${WordReplace} "[字符串]" "[词语1]" "[词语2]" "[E][选项]" $输出变量

 

  • WordAdd

从选项中指定的字符串2添加词语到字符串1(如果不存在),或删除词语(如果存在)。语法:
${WordAdd} "[字符串1]" "[分隔符]" "[E][选项]]" $输出变量

 

  • WordInsert
在字符串中插入词语。语法:
${WordInsert} "[字符串]" "[分隔符]" "[词语]" "[E][选项]]" $输出变量

 

 

 

  • StrFilter

转换字符串为大写或小写;设置符号过滤。语法:
${StrFilter} "[字符串]" "[选项]" "[符号1]" "[符号2]" $输出变量

 

  • VersionCompare
用来比较版本号的大小。例如,比较1.1.0.1和1.1.1.0的大小。语法:
${VersionCompare} "[版本1]" "[版本2]" $输出变量

 

 

 

  • VersionConvert

将带字母的版本转换为可用于比较的十进制数版本号。语法:
${VersionConvert} "[版本]" "[字符列表]" $输出变量
用法示例:${VersionConvert} "9.0c" "" $R0
结果变量$R0的值为9.0.03。这样转换后可以用于和别的版本如9.0a比较。

posted @ 2012-05-15 09:55 Mumoo 阅读(5840) | 评论 (0)编辑 收藏
仅列出标题
共4页: 1 2 3 4