青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

一、VC6.0操作步驟:
1.將下面XML代碼復制并保存名為XPStyle.manifest的文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
      version="1.0.0.0"
      processorArchitecture="X86"
      name="Microsoft.Windows.WorkSapceName"
      type="win32"
/>
  <description>Your app description here</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="X86"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
</assembly>
2.將該文件復制到工程文件夾中的rec文件夾中。
3.工程->添加到工程->將rec文件夾中的XPStyle.manifest文件添加到工程中。
4.打開resource.h文件,將下面兩行代碼復制并粘貼
#define IDR_MANIFEST                    1
#define RT_MANIFEST                     24

5.打開工程中的.rc文件,將下面一行代碼加入到該文件中
IDR_MANIFEST RT_MANIFEST MOVEABLE PURE "res\\XPStyle.manifest"
6.重新編譯鏈接,OK成功。

二、VS2005環境下操作方法與步驟

VS 2005中,如果Project->Property  -- General -- Character Set 為Use Unicode Character Set,那么程序的界面自然就是XP風格,不需要手動添加任何東西。但是如果這里是Use Multi-Byte Character Set,那么就要自己動手加東西了,和上面操作差不多。

1.將下面XML代碼復制并保存名為XPStyle.manifest的文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
      version="1.0.0.0"
      processorArchitecture="X86"
      name="Microsoft.Windows.WorkSapceName"
      type="win32"
/>
  <description>Your app description here</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="X86"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
</assembly>

2.將該文件復制到工程文件夾中的rec文件夾中。
3.工程->添加到工程->將rec文件夾中的XPStyle.manifest文件添加到工程中。
4.Rebuild.....就可以了。

posted @ 2010-04-13 20:54 wrh 閱讀(884) | 評論 (0)編輯 收藏
編譯頭文件:STDAFX.CPP,STDAFX.H  
   
  這兩個文件用于建立一個預編譯的頭文件.PCH和一個預定義的類型文件STDAFX.OBJ。由于MFC體系結構非常大,包含許多頭文件,如果每次都編譯的話比較費時。因此,我們把常用的MFC頭文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,然后讓stdafx.cpp包含這個stdafx.h文件。這樣,由于編譯器可以識別哪些文件已經編譯過,所以stdafx.cpp就只編譯一次,并生成所謂的預編譯頭文件(因為它存放的是頭文件編譯后的信息,故名)。如果讀者以后在編程時不想讓有些MFC頭文件每次都被編譯,也可以將它加入到stdafx.h中。采用預編譯頭文件可以加速編譯過程。
posted @ 2010-02-25 11:11 wrh 閱讀(500) | 評論 (0)編輯 收藏
工作中碰到這樣一個問題,
程序報錯:
Error    3    error C2668: 'wvsprintfW' : ambiguous call to overloaded function
這個錯誤的意思是:wvsprintfW有重載函數,根據目前的參數編譯器無法確定調用哪個。

wvsprintfW屬于系統函數,自己也沒有重載過,理應不該有這樣的問題,
可能是包含的頭文件太多,有的文件對此函數重載過。

網上有人舉例說:
int fun(int,int);
float fun(int,int); //編譯器就會出現錯誤 不知道到底調用哪個函數

這里的錯誤可能不是上述類型的,但這個例子可以幫助理解。

最終解決方法是:在調用的wvsprintfW前加” :: “符號,指明采用全局函數,這樣編譯器就不需做選擇了。

法2
函數調用有二義行。
在參數前加類型轉換
posted @ 2010-02-24 14:42 wrh 閱讀(3230) | 評論 (0)編輯 收藏

一、找到一個方法:

VC6---選項Project | Configuration Properties | C/C++ | Preprocessor | Preprocessor Definitions
添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE

VS2005 項目屬性---C/++ --->預處理定義下-》配置 -》下面添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE兩個宏

或調用VS2005鼓吹的那些帶“_s”后綴的非標準函數,即在其后加上"_S",如sprintf_s
或文件最開始:
#define _CRT_SECURE_NO_DEPRECATE
或者干粹在工程屬性中設置。
二、

在vs2003, vs2005中 用sprintf 會出現   warning C4996: 'sprintf' was declared deprecated see declaration of 'sprintf' 的警告 消除方法

1: 文件最開始: #define _CRT_SECURE_NO_DEPRECATE 或者干粹在工程屬性中設置如一中所說。

2: 不屏蔽的話就只能調用VS鼓吹的那些帶“_s”后綴的非標準函數。例如sprintf_s在函數后面加_s

3: 用StringCchPrintf

 

三、關鍵詞Security    Enhancements    in    the    CRT                                          

 

將過去的工程用VS2005打開的時候。你有可能會遇到一大堆的警告:warning C4996。
比如:warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

原因是Visual C++ 2005使用了更加安全的run-time library routines。
新的Security CRT functions(就是那些帶有“_s”后綴的函數):
http://msdn2.microsoft.com/en-us/library/wd3wzwts(VS.80).aspx

那么如何搞定這些警告呢:
方法一:手工將原來的舊函數替換成新的Security CRT functions。
方法二:屏蔽這個警告。
            在預編譯頭文件stdafx.h里(注意:一定要在沒有include任何頭文件之前)定義下面的宏:
            #define _CRT_SECURE_NO_DEPRECATE
            或者#param warning(disable:4996)

方法二沒有使用新的更安全的CRT函數,顯然不是一個值得推薦的方法,可是你又不想一個一個地改。
那么還有一個更方便的方法:

在預編譯頭文件stdafx.h里(同樣要在沒有include任何頭文件之前)定義下面的宏:
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
鏈接的時候便會自動將舊函數替換成
Security CRT functions。
注意:這個方法雖然使用了新的函數,但是不能消除警告(原因見紅字),你還得同時使用方法二。。。

 

在網上搜索到的最常用的解決方案,那就是定義 _CRT_SECURE_NO_DEPRECATE _SCL_SECURE_NO_DEPRECATE 來禁止vc2005對此產生警告(依然使用的是非安全庫!0顯然并不是一個好的解決方案)。而且如果使用了ATL,則還需要定義 _ATL_SECURE_NO_DEPRECATE 使用了MFC則需要定義 _AFX_SECURE_NO_DEPRECATE
   
然而盡管如此,更好的解決方案只需要定義一個宏 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES, 那么vc將會自動替換使用他們的Safe Library來代替C/C++標準庫(strcat將被strcat_f來取代)

 

    即使使用了_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES,代碼將依舊不夠安全:(, 對此,ms提出了如下10點建議:
    1.
不要認為 strcpy_s strncpy_s( 以及其他的字符串函數)(在空間不夠的時候)會自動終止拷貝(truncate截斷,不截斷則意味著溢出).如果需要自動截斷,請使用strncpy_s (同時使用_TRUNCATE作為長度參數)
    2.
記住fopen_s缺省是獨占模式。如需共享使用文件,應該使用_sopen
    3.
別忘了_dupenv_s, 它將比_getenv_s更容易使用,因為它能自動分配一個正確長度的內存(buffer)
    4.
scanf_s中小心參數順序。
    5.
確定printf_s中格式字符串的正確。
    6.
使用_countof(x)來取代sizeof(x)/sizeof(element). _countof將會正確的計算元素個數,而且如果x是一個指針,編譯器將會發出一個警告(來提醒程序員,僅針對C++編譯)
    7.
記住所有的sizes(大小,非長度)都是使用characters(字符,unicode下一個字符占2byte)作為單位,而不是bytes(字節).
    8.
記住所有的sizes(大小,非長度,緣由同上)包含了字符串結束符'\0'(即別忘了很多情況下size需要+1)
    9.
調試的時候監視數據0xfd (在調試版本下)0xfd將會被填充在數據(buffer,通常是字符串)的結尾處。如果運行非你所愿,可能會得到一個長度錯誤。
    10.
檢查所有的錯誤。 許多新函數相比舊函數,能返回(表示)錯誤信息(的數值)

posted @ 2010-02-24 14:42 wrh 閱讀(4834) | 評論 (0)編輯 收藏

查閱各種資料的標準做法似乎為
CString       a;      
    int       b;      
    a.Format( "%d ",b);      
    TEXTOUT(a);

但我使用這種方法總是提示編譯錯誤
c:\documents   and   settings\administrator\my   documents\visual   studio   2005\projects\imageprocess\imageprocess\imageprocessview.cpp(137)   :   error   C2664:   'void   ATL::CStringT <BaseType,StringTraits> ::Format(const   wchar_t   *,...) '   :   cannot   convert   parameter   1   from   'const   char   [3] '   to   'const   wchar_t   * '
                with
                [
                        BaseType=wchar_t,
                        StringTraits=StrTraitMFC_DLL <wchar_t>
                ]
                Types   pointed   to   are   unrelated;   conversion   requires   reinterpret_cast,   C-style   cast   or   function-style   cast


/////////////////////////////////////////
解決方法:
cannot   convert   parameter   1   from   'const   char   [3] '   to   'const   wchar_t   * '

從這個看你可能采用了UNICODE編碼,
可以用
a.Format(L "%d ",   b);
或者
a.Format(_T( "%d "),   b);

貼子來源Diy部落(http://bbs.diybl.com) 詳細出處參考:http://bbs.diybl.com/dview61t13393.html

posted @ 2010-02-24 10:23 wrh 閱讀(12753) | 評論 (1)編輯 收藏

法1.for(int   nIndex=0;nIndex<m_List.GetHeaderCtrl()->GetItemCount();nIndex++)  
  m_List.DeleteColumn(0);  
法2.Example  
  //   The   pointer   to   my   list   view   control.  
  extern   CListCtrl*   pmyListCtrl;  
   
  int   nColumnCount   =   pmyListCtrl->GetHeaderCtrl()->GetItemCount();  
   
  //   Delete   all   of   the   columns.  
  for   (int   i=0;i   <   nColumnCount;i++)  
  {  
        pmyListCtrl->DeleteColumn(0);  
  }  
   
   
  還有一個:  
   
  while   (pmyListCtrl->DeleteColumn(0));

posted @ 2010-02-24 10:22 wrh 閱讀(4616) | 評論 (0)編輯 收藏

CString 轉 wchar_t

CString path = "asdf";

wchar_t wstr[256] = path.AllocSysString();

或者:

wchar_t wcstring[256];

MultiByteToWideChar(CP_ACP,0,path,-1,wcstring,256);

wchar_t轉CString

WideCharToMultiByte(CP_ACP,0,wcstring,256,

path.GetBuffer(0),256,NULL,NULL);

path.ReleaseBuffer(0);

 

string 轉 CString
CString.format("%s", string.c_str());

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

char 轉 string
string s(char *);

string 轉 char *
char *p = string.c_str();

CString 轉 string
string s(CString.GetBuffer());

CString   str   =   "fdjfdas";   
string   s   =   (LPCTSTR)str;

1,string -> CString
CString.format("%s", string.c_str());
用c_str()確實比data()要好.
2,char -> string
string s(char *);
你的只能初始化,在不是初始化的地方最好還是用assign().
3,CString -> string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否則就沒有釋放緩沖區所占的空間.


《C++標準函數庫》中說的
有三個函數可以將字符串的內容轉換為字符數組和C—string
1.data(),返回沒有”\0“的字符串數組
2,c_str(),返回有”\0“的字符串數組
3,copy()

---------------------------------------------------------------

CString與int、char*、char[100]之間的轉換- -


CString與int、char*、char[100]之間的轉換- -

CString互轉int

將字符轉換為整數,可以使用atoi、_atoi64或atol。
而將數字轉換為CString變量,可以使用CString的Format函數。如
CString s;
int i = 64;
s.Format("%d", i)
Format函數的功能很強,值得你研究一下。

void CStrDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString ss="1212.12";
int temp=atoi((char*)LPCTSTR(ss));

CString aa;
aa.Format("%d",temp);
AfxMessageBox("var is " + aa);
}

sart.Format("%s",buf);

CString互轉char*

///char * TO cstring
CString strtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint;


///CString TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());

標準C里沒有string,char *==char []==string

 

char *轉成CString

可以用CString.Format("%s",char *)這個方法來將char *轉成CString。

CString轉成char *

用操作符(LPCSTR)strtest 或者 (char*)(LPCSTR)strtest 就可以了。


CString轉換 char[100]

char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1570001

(一) 概述

string和CString均是字符串模板類,string為標準模板類(STL)定義的字符串類,已經納入C++標準之中;

CString(typedef CStringT > CString)為Visual C++中最常用的字符串類,繼承自CSimpleStringT類,主要應用在MFC和ATL編程中,主要數據類型有char(應用于ANSI),wchar_t(unicode),TCHAR(ANSI與unicode均可);

char*為C編程中最常用的字符串指針,一般以'\0'為結束標志;

(二) 構造

string是方便的,可以從幾乎所有的字符串構造而來,包括CString和char*;

CString次之,可以從基本的一些字符串變量構造而來,包括char*等;

char*沒有構造函數,僅可以賦值;

舉例:

char* psz = “joise”;

CString cstr( psz );

string str( cstr );

(三) 運算符重載

a) operator=

string是最方便的,幾乎可以直接用所有的字符串賦值,包括CString和char*;

CString次之,可以直接用些基本的字符串賦值,包括char*等;

char*只能由指針賦值,并且是極危險的操作,建議使用strcpy或者memcpy,而且char*在聲明的時候如未賦初值建議先設為NULL,以避免野指針,令你抓狂;

舉例:

char *psz = NULL;

psz = new char[10]; //當然,以上的直接寫成char *psz = new char[10];也是一樣

memset( psz, 0, 10 );

strcpy( psz, “joise” );

CString cstr;

cstr = psz;

string str;

str = psz;

str = cstr;

delete []psz;

b) operator+

string與CString差不多,可以直接與char*進行加法,但不可以相互使用+運算符,即string str = str + cstr是非法的,須轉換成char*;

char*沒有+運算,只能使用strcat把兩個指針連在一起;

舉例:

char* psz = “joise”;

CString cstr = psz;

cstr = cstr + psz;

string str = psz;

str = str + str + psz;

strcat( psz, psz );

strcat( psz, cstr );//合法

strcat( psz, str );//非法,由此可見,CString可自動轉換為const char*,而string不行

c) operator +=

string是最強大的,幾乎可以與所有的字符串變量+=,包括CString和char*;

CString次之,可以與基本的一些字符串變量進行+=而來,包括char*等;

char*沒有+=運算符,只能使用strcat把兩個指針連在一起;

d) operator[]

CString最好,當越界時會拋出斷言異常;

string與char*下標越界結果未定義;

舉例:

char* psz = “joise”;

CString cstr = psz;

cout << cstr[8];

string str = psz;

cout << str[8];

cout << psz[8];

e) operator== 、operator!=、operator> 、operator< 、operator>= 、perator<=

CString與string之間不可以進行比較,但均可以與char*進行比較,并且比較的是值,而不是地址;

cout << ( psz == cstr );

cout << ( psz == str );

cout << ( str == psz );

cout << ( cstr == psz );//以上代碼返回均為1

(四) 常用算法

a) 查找

作用 char* string CString
查找指定值 strchr
strstr
strrstr
strspn find Find
第一個匹配的值 fild_first_of FindOneOf 從后面開始查找 ReserveFind 指定匹配方式 find_if

注:find_if中是把范圍內的值挨個代入匹配函數直至返回true

b) 比較

作用 char* string CString 查找指定值(區分大小寫) strcmp
strncmp
strcoll
_strncoll operator<
operator>
operator<=
operator>=
operator==
operator!= Collate

Compare 查找指定值(不區分大小寫) _stricmp
_strnicmp
_stricoll
_strnicoll CollateNoCase

CompareNoCas

注:返回值如果<0則前面的值小于后面的值,反之亦然

c) 替換

作用 char* string CString 查找指定值 _strset
_strnset
replace
replace_copy
replace_copy_if
replace_if Replace

d) 插入

作用 char* string CString 查找指定值 insert Insert
e) 增加 作用 char* string CString 動態增加值 strcat push

append Append

AppendChar

AppendFormat


f) 截取

作用 char* string CString 得到部分值 用下標操作 substr Left

Mid

Right

Truncate


g) 移除

作用 char* string CString 移除部份值 remove Remove 移除空白值 RemoveBlanks

注:此為ATL提供,非C函數 remove_if Trim

TrimLeft

TrimRig


h) 轉換大小寫

作用 char* string CString 轉換大小寫 _strlwr

_strupr MakeLower

MakeUpper


i) 與其他類型轉換

作用 char* string CString 轉化為數字 atoi

atod

atof Format 轉化為char* c_str
GetBuffer

GetBufferSetLen

j) 格式化

作用 char* string CString 格式化 sprintf Format


k) 得到長度

作用 char* string CString
得到長度 strlen length GetLength 得到大小 size GetAllocLength

l) 判斷為空

作用 char* string CString 判斷是否為空判斷是否==NULL或者第一個字符是否是'\0' empty IsEmpty

m) 重定義大小

作用 char* string CString 重定義大小 realloc
new resize GetBufferSetLength

n) 釋放資源

作用 char* string CString 釋放 free

delete (delete[]) ReleaseBuffer

ReleaseBufferSetLength

(五) 安全性>

CString > string > char*;

(六) 靈活性

CString > string >char*;

(七) 可移植性

char* = string > CString 

posted @ 2010-02-24 09:46 wrh 閱讀(8088) | 評論 (0)編輯 收藏

在VC中使用控件一直是件讓我頭痛的事件,從控件的創建到控件的操作管理,都得寫一大堆代碼,相比于Delphi/VB,實在是麻煩多了。其實在之前學習SDK的時候,就有想過專門花點兒時間來學習VC中控件的使用,但一直沒空。最近準備寫一個小工具,要用到ListCtrl控件,所以又不得不好好的惡補一翻。

我是在MFC的對話框模式下使用CListCtrl控件的,其實不管在SDK或文檔/視圖模式下,VC控件的使用都差不多,下面來好好的寫寫CListCtrl控件的使用筆記。

一、CListCtrl控件的創建

由于我是在MFC的對話框模式下使用CListCtrl控件的,所以只需要在控件欄上選擇CListCtrl的圖形按鈕,接著添加到對話框中就行了。

二、CListCtrl控件樣式的設置

第一步:在使用CListCtrl控件之前,首先需要為該控件關聯一個變量(只針對于對話框模式):
CListCtrl m_BlogAccountList;

第二步:由于CListCtrl控件要做一些初始化操作,比如設置控件樣式,設置控件的行列并填入一些數據。初始化操作的代碼是在對話框的OnInitDialog事件中寫入的。

默認情況下,CListCtrl控件的樣式是非常簡陋的,大多情況下我們都需要對CListCtrl控件的樣式進行修改,比如設置為報表樣式,可以進行整行選擇等,如有需要還有調整CListCtrl控件的行高。諸如這些設置都需要用到CListCtrl控件的擴展樣式,所以首先得了解這些擴展樣式。

我在MSDN中沒有找到CListCtrl控件的擴展樣式資料,只好上百度百科找了找。

CListCtrl控件的擴展樣式
LVS_EX_GRIDLINES //繪制表格線
LVS_EX_SUBITEMIMAGES//子項目圖標列表
LVS_EX_CHECKBOXES //帶復選框
LVS_EX_TRACKSELECT //自動換行
LVS_EX_HEADERDRAGDROP//報表頭可以拖拽
LVS_EX_FULLROWSELECT //選擇整行
LVS_EX_ONECLICKACTIVATE//單擊激活
LVS_EX_TWOCLICKACTIVATE//雙擊激活
LVS_EX_FLATSB//扁平滾動條
LVS_EX_REGIONAL
LVS_EX_INFOTIP
LVS_EX_UNDERLINEHOT
LVS_EX_UNDERLINECOLD
LVS_EX_MULTIWORKAREAS//多工作區

對話框模式下創建的CListCtrl控件樣式只有一個,就是WS_BORDER,而我需要為CListCtrl設置為報表樣式,并能選擇整行,下面就可以開始寫代碼了:

//通過GetWindowLong來獲取CListCtrl已有的樣式
DWORD dwStyle = GetWindowLong(m_BlogAccountList.m_hWnd, GWL_STYLE);

//在原有樣式的基本上,添加LVS_REPORT擴展樣式
SetWindowLong(m_BlogAccountList.m_hWnd, GWL_STYLE, dwStyle|LVS_REPORT);

 

//獲取已有的擴展樣式
DWORD dwStyles = m_BlogAccountList.GetExStyle();

//取消復選框樣式
dwStyles &= ~LVS_EX_CHECKBOXES;

//添加整行選擇和表格線擴展樣式
m_BlogAccountList.SetExtendedStyle(dwStyles|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

通過以上四句代碼,就已經能滿足我的需求了。

三、為CListCtrl控件添加列

列的添加只需要用到LVCOLUMN結構體,所以需要先行了解了解。在MSDN中查到的LVCOLUMN結構體的定義如下:

typedef struct _LVCOLUMN {
    UINT mask;
    int fmt;
    int cx;
    LPTSTR pszText;
    int cchTextMax;
    int iSubItem;
#if (_WIN32_IE >= 0x0300)
    int iImage;
    int iOrder;
#endif
} LVCOLUMN, FAR *LPLVCOLUMN;

該結構體共有8個成員。

mask是用來設置LVCOLUMN結構體中哪些成員有效,其值可以為0。mask可設置的值如下:

LVCF_FMT  fmt成員有效
LVCF_IMAGE iImage成員有效 
LVCF_ORDER  //以下略
LVCF_SUBITEM
LVCF_TEXT
LVCF_WIDTH

fmt成員是對CListCtrl控件列標題進行設置,比如列標題中文字的對齊方式,是否在列標題中顯示圖標等。

cx成員是設置列寬。

pszText成員是設置列標題文字

cchTextMax成員是設置標題文字的緩沖區大小

iSubItem成員是設置列索引

iImage成員是設置ImageList中的圖像索引。

iOrder成員的作用未知。

下面進行添加列操作:

char *szColUmn[] = {"帳號", "密碼"};
int nColWidth[] = {100, 100};
LVCOLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
lvc.fmt = LVCFMT_LEFT; //左對齊
for (int i = 0; i < 2; i++)
{
    lvc.pszText = szColUmn[i];
    lvc.iSubItem = i;
    lvc.iOrder = i;
    lvc.cx = nColWidth[i];
    m_BlogAccountList.InsertColumn(i, &lvc);

}

四、為CListCtrl控件添加行
添加行的操作需要用到InsertItem和SetItemText屬性,這個簡單,就不詳述了,看代碼:

m_BlogAccountList.InsertItem(0, "abc");
m_BlogAccountList.SetItemText(0, 1, "abc");
m_BlogAccountList.SetItemText(1, 1, "123");

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/tg2003/archive/2009/04/09/4060322.aspx

posted @ 2010-02-23 16:45 wrh 閱讀(2386) | 評論 (0)編輯 收藏
CString的構造函數
CString( );
例:CString csStr;

CString( const CString& stringSrc );
例:CString csStr("ABCDEF中文123456");
    CString csStr2(csStr);

CString( TCHAR ch, int nRepeat = 1 );
例:CString csStr('a',5);
//csStr="aaaaa"

CString( LPCTSTR lpch, int nLength );
例:CString csStr("abcdef",3);
//csStr="abc"

CString( LPCWSTR lpsz );
例:wchar_t s[]=L"abcdef";
    CString csStr(s);
//csStr=L"abcdef"

CString( const unsigned char* psz );
例:const unsigned char s[]="abcdef";
    const unsigned char* sp=s;
    CString csStr(sp);
//csStr="abcdef"

CString( LPCSTR lpsz );
例:CString csStr("abcdef");
//csStr="abcdef"

int GetLength( ) const;
返回字符串的長度,不包含結尾的空字符。
例:csStr="ABCDEF中文123456";
    printf("%d",csStr.GetLength());       //16

void MakeReverse( );
顛倒字符串的順序
例:csStr="ABCDEF中文123456";
    csStr.MakeReverse();
    cout<<csStr;                  //654321文中FEDCBA

void MakeUpper( );
將小寫字母轉換為大寫字母
例:csStr="abcdef中文123456";
    csStr.MakeUpper();
    cout<<csStr;                  //ABCDEF中文123456

void MakeLower( );
將大寫字母轉換為小寫字母
例:csStr="ABCDEF中文123456";
    csStr.MakeLower();
    cout<<csStr;                  //abcdef中文123456

int Compare( LPCTSTR lpsz ) const;
區分大小寫比較兩個字符串,相等時返回0,大于時返回1,小于時返回-1
例:csStr="abcdef中文123456";
    csStr2="ABCDEF中文123456";
    cout<<csStr.CompareNoCase(csStr2);             //0

int CompareNoCase( LPCTSTR lpsz ) const;
不區分大小寫比較兩個字符串,相等時返回0,大于時返回1,小于時返回-1
例:csStr="abcdef中文123456";
    csStr2="ABCDEF中文123456";
    cout<<csStr.CompareNoCase(csStr2);             //-1

int Delete( int nIndex, int nCount = 1 )
刪除字符,刪除從下標nIndex開始的nCount個字符
例:csStr="ABCDEF";
    csStr.Delete(2,3);
    cout<<csStr;              // ABF
//當nIndex過大,超出對像所在內存區域時,函數沒有任何操作。
//當nIndex為負數時,從第一個字符開始刪除。
//當nCount過大,導致刪除字符超出對像所在內存區域時,會發生無法預料的結果。
//當nCount為負數時,函數沒有任何操作。


int Insert( int nIndex, TCHAR ch )
int Insert( int nIndex, LPCTSTR pstr )

在下標為nIndex的位置,插入字符或字符串。返回插入后對象的長度
例:csStr="abc";
    csStr.Insert(2,'x');
    cout<<csStr;                     //abxc
    csStr="abc";
    csStr.Insert(2,"xyz");
    cout<<csStr;                     //abxyzc
//當nIndex為負數時,插入在對象開頭
//當nIndex超出對象末尾時,插入在對象末尾


int Remove( TCHAR ch );
移除對象內的指定字符。返回移除的數目
例:csStr="aabbaacc";
    csStr.Remove('a');
    cout<<csStr;                     //bbcc

int Replace( TCHAR chOld, TCHAR chNew );
int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

替換字串
例:csStr="abcdef";
    csStr.Replace('a','x');
    cout<<csStr;                    //xbcdef
    csStr="abcdef";
    csStr.Replace("abc","xyz");
    cout<<csStr;                    //xyzdef

void TrimLeft( );
void TrimLeft( TCHAR chTarget );
void TrimLeft( LPCTSTR lpszTargets );

從左刪除字符,被刪的字符與chTarget或lpszTargets匹配,一直刪到第一個不匹配的字符為止
例:csStr="aaabaacdef";
    csStr.TrimLeft('a');
    cout<<csStr;                //baacdef
    csStr="aaabaacdef";
    csStr.TrimLeft("ab");
    cout<<csStr;                //cdef
//無參數時刪除空格

void TrimRight( );
void TrimRight( TCHAR chTarget );
void TrimRight( LPCTSTR lpszTargets );

從右刪除字符,被刪的字符與chTarget或lpszTargets匹配,一直刪到第一個不匹配的字符為止
例:csStr="abcdeaafaaa";
    csStr.TrimRight('a');
    cout<<csStr;               //abcdeaaf
    csStr="abcdeaafaaa";
    csStr.TrimRight("fa");
    cout<<csStr;                //abcde
//無參數時刪除空格


void Empty( );
清空
例:csStr="abcdef";
    csStr.Empty();
    printf("%d",csStr.GetLength());    //0

BOOL IsEmpty( ) const;
測試對象是否為空,為空時返回零,不為空時返回非零
例:csStr="abc";
    cout<<csStr.IsEmpty();         //0;
    csStr.Empty();
    cout<<csStr.IsEmpty();         //1;

int Find( TCHAR ch ) const;
int Find( LPCTSTR lpszSub ) const;
int Find( TCHAR ch, int nStart ) const;
int Find( LPCTSTR pstr, int nStart ) const;

查找字串,nStart為開始查找的位置。未找到匹配時返回-1,否則返回字串的開始位置
例:csStr="abcdef";
    cout<<csStr.Find('b');       //1
    cout<<csStr.Find("de");      //3
    cout<<csStr.Find('b',3);     //-1
    cout<<csStr.Find('b',0);     //1
    cout<<csStr.Find("de",4);    //-1
    cout<<csStr.Find("de",0);    //3
//當nStart超出對象末尾時,返回-1。
//當nStart為負數時,返回-1。


int FindOneOf( LPCTSTR lpszCharSet ) const;
查找lpszCharSet中任意一個字符在CString對象中的匹配位置。未找到時返回-1,否則返回字串的開始位置
例:csStr="abcdef";
    cout<<csStr.FindOneOf("cxy");       //2

CString SpanExcluding( LPCTSTR lpszCharSet ) const;
返回對象中與lpszCharSet中任意匹配的第一個字符之前的子串
例:csStr="abcdef";
    cout<<csStr.SpanExcluding("cf");    //ab

CString SpanIncluding( LPCTSTR lpszCharSet ) const;
從對象中查找與lpszCharSe中任意字符不匹配的字符,并返回第一個不匹配字符之前的字串
例:csStr="abcdef";
    cout<<csStr.SpanIncluding("fdcba");    //abcd

int ReverseFind( TCHAR ch ) const;
從后向前查找第一個匹配,找到時返回下標。沒找到時返回-1
例:csStr="abba";
    cout<<csStr.ReverseFind('a');        //3

void Format( LPCTSTR lpszFormat, ... );
void Format( UINT nFormatID, ... );

格式化對象,與C語言的sprintf函數用法相同
例:csStr.Format("%d",13);
    cout<<csStr;                       //13

TCHAR GetAt( int nIndex ) const;
返回下標為nIndex的字符,與字符串的[]用法相同
例:csStr="abcdef";
    cout<<csStr.GetAt(2);             //c
//當nIndex為負數或超出對象末尾時,會發生無法預料的結果。


void SetAt( int nIndex, TCHAR ch );
給下標為nIndex的字符重新賦值
例:csStr="abcdef";
    csStr.SetAt(2,'x');
    cout<<csStr;                      //abxdef
//當nIndex為負數或超出對象末尾時,會發生無法預料的結果。


CString Left( int nCount ) const;
從左取字串
例:csStr="abcdef";
    cout<<csStr.Left(3);           //abc
//當nCount等于0時,返回空。
//當nCount為負數時,返回空。
//當nCount大于對象長度時,返回值與對象相同。


CString Right( int nCount ) const;
從右取字串
例:csStr="abcdef";
    cout<<csStr.Right(3);           //def
//當nCount等于0時,返回空。
//當nCount為負數時,返回空。
//當nCount大于對象長度時,返回值與對象相同。


CString Mid( int nFirst ) const;
CString Mid( int nFirst, int nCount ) const;

從中間開始取字串
例:csStr="abcdef";
    cout<<csStr.Mid(2);           //cdef
    csStr="abcdef";
    cout<<csStr.Mid(2,3);         //cde
//當nFirst為0和為負數時,從第一個字符開始取。
//當nFirst等于對象末尾時,返回空字串。
//當nFirst超出對象末尾時,會發生無法預料的結果。
//當nCount超出對象末尾時,返回從nFirst開始一直到對象末尾的字串
//當nCount為0和為負數時,返回空字串。


LPTSTR GetBuffer( int nMinBufLength );
申請新的空間,并返回指針
例:csStr="abcde";
    LPTSTR pStr=csStr.GetBuffer(10);
    strcpy(pStr,"12345");
    csStr.ReleaseBuffer();
    pStr=NULL;
    cout<<csStr                 //12345
//使用完GetBuffer后,必須使用ReleaseBuffer以更新對象內部數據,否則會發生無法預料的結果。


void ReleaseBuffer( int nNewLength = -1 );
使用GetBuffer后,必須使用ReleaseBuffer以更新對象內部數據
例:csStr="abc";
    LPTSTR pStr=csStr.GetBuffer(10);
    strcpy(pStr,"12345");
    cout<<csStr.GetLength();       //3(錯誤的用法)
    csStr.ReleaseBuffer();
    cout<<csStr.GetLength();       //5(正確)
    pStr=NULL;
//CString對象的任何方法都應在ReleaseBuffer之后調用

LPTSTR GetBufferSetLength( int nNewLength );
申請新的空間,并返回指針
例:csStr="abc";
    csStr.GetBufferSetLength(20);
    cout<<csStr;                  //abc
    count<<csStr.GetLength();     //20;
    csStr.ReleaseBuffer();
    count<<csStr.GetLength();     //3;
//使用GetBufferSetLength后可以不必使用ReleaseBuffer。
posted @ 2010-02-23 13:00 wrh 閱讀(469) | 評論 (0)編輯 收藏
VS2005快捷鍵大全
快捷鍵 功能
CTRL + SHIFT + B生成解決方案
CTRL + F7 生成編譯
CTRL + O 打開文件
CTRL + SHIFT + O打開項目
CTRL + SHIFT + C顯示類視圖窗口
F4 顯示屬性窗口
SHIFT + F4顯示項目屬性窗口
CTRL + SHIFT + E顯示資源視圖
F12 轉到定義
CTRL + F12轉到聲明
CTRL + ALT + J對象瀏覽
CTRL + ALT + F1幫助目錄
CTRL + F1 動態幫助
F1 幫助
SHIFT + F1當前窗口幫助
CTRL + ALT + F3幫助-搜索
SHIFT + ALT + ENTER全屏顯示
CTRL + -向后定位
CTRL + SHIFT + -向前定位
CTRL + F4關閉文檔窗口
CTRL + PAGE DOWN光標定位到窗口上方
CTRL + PAGE UP光標定位到窗口下方
CTRL + F6
CTRL + TAB下一個文檔窗口
CTRL + SHIFT + F6
CTRL + SHIFT + TAB上一個文檔窗口
ALT + F6下一個面板窗口
CTRL + K, CTRL + L取消remark
CTRL + K, CTRL + C注釋選擇的代碼
CTRL + K, CTRL + U取消對選擇代碼的注釋
CTRL + M, CTRL + O折疊代碼定義
CTRL + M, CTRL + L展開代碼定義
CTRL + DELETE刪除至詞尾
CTRL + BACKSPACE刪除至詞頭
SHIFT + TAB取消制表符
CTRL + U轉小寫
CTRL + SHIFT + U轉大寫
CTRL + SHIFT + END選擇至文檔末尾
CTRL + SHIFT + HOME選擇至文檔末尾開始
SHIFT + END選擇至行尾
SHIFT + HOME選擇至行開始處
SHIFT + ALT + END垂直選擇到最后尾
SHIFT + ALT + HOME垂直選擇到最前面
CTRL + A全選
CTRL + W選擇當前單詞
CTRL + SHIFT + PAGE UP選擇至本頁前面
CTRL + SHIFT + PAGE DOWN選擇至本頁后面
CTRL + END文檔定位到最后
CTRL + HOME文檔定位到最前
CTRL + G轉到…
CTRL + K, CTRL + P上一個標簽
CTRL + K, CTRL + N下一個標簽
ALT + F10調試-ApplyCodeChanges
CTRL + ALT+ Break停止調試
CTRL + SHIFT + F9 取消所有斷點
CTRL + F9允許中斷
CTRL + SHIFT + F5調試-重新開始
F5運行調試
CTRL + F5運行不調試
F10跨過程序執行
F11單步逐句執行
CTRL + J列出成員
CTRL + PAGE DOWN下一個視圖
CTRL + B格式-粗體
CTRL + SHIFT + T格式-文字縮進
調試快捷鍵
F6: 生成解決方案
Ctrl+F6: 生成當前項目
F7: 查看代碼
Shift+F7: 查看窗體設計器
F5: 啟動調試
Ctrl+F5: 開始執行(不調試)
Shift+F5: 停止調試
Ctrl+Shift+F5: 重啟調試
F9: 切換斷點
Ctrl+F9: 啟用/停止斷點
Ctrl+Shift+F9: 刪除全部斷點
F10: 逐過程
Ctrl+F10: 運行到光標處
F11: 逐語句
編輯快捷鍵
Shift+Alt+Enter: 切換全屏編輯
Ctrl+B,T / Ctrl+K,K: 切換書簽開關
Ctrl+B,N / Ctrl+K,N: 移動到下一書簽
Ctrl+B,P: 移動到上一書簽
Ctrl+B,C: 清除全部標簽
Ctrl+I: 漸進式搜索
Ctrl+Shift+I: 反向漸進式搜索
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一個
Shift+F3: 查找上一個
Ctrl+H: 替換
Ctrl+Shift+H: 在文件中替換
Alt+F12: 查找符號(列出所有查找結果)
Ctrl+Shift+V: 剪貼板循環
Ctrl+左右箭頭鍵: 一次可以移動一個單詞
Ctrl+上下箭頭鍵: 滾動代碼屏幕,但不移動光標位置。
Ctrl+Shift+L: 刪除當前行
Ctrl+M,M: 隱藏或展開當前嵌套的折疊狀態
Ctrl+M,L: 將所有過程設置為相同的隱藏或展開狀態
Ctrl+M,P: 停止大綱顯示
Ctrl+E,S: 查看空白
Ctrl+E,W: 自動換行
Ctrl+G: 轉到指定行
Shift+Alt+箭頭鍵: 選擇矩形文本
Alt+鼠標左按鈕: 選擇矩形文本
Ctrl+Shift+U: 全部變為大寫
Ctrl+U: 全部變為小寫
代碼快捷鍵
Ctrl+J / Ctrl+K,L: 列出成員
Ctrl+Shift+空格鍵 / Ctrl+K,P: 參數信息
Ctrl+K,I: 快速信息
Ctrl+E,C / Ctrl+K,C: 注釋選定內容
Ctrl+E,U / Ctrl+K,U: 取消選定注釋內容
Ctrl+K,M: 生成方法存根
Ctrl+K,X: 插入代碼段
Ctrl+K,S: 插入外側代碼
F12: 轉到所調用過程或變量的定義
窗口快捷鍵
Ctrl+W,W: 瀏覽器窗口
Ctrl+W,S: 解決方案管理器
Ctrl+W,C: 類視圖
Ctrl+W,E: 錯誤列表
Ctrl+W,O: 輸出視圖
Ctrl+W,P: 屬性窗口
Ctrl+W,T: 任務列表
Ctrl+W,X: 工具箱
Ctrl+W,B: 書簽窗口
Ctrl+W,U: 文檔大綱
Ctrl+D,B: 斷點窗口
Ctrl+D,I: 即時窗口
Ctrl+Tab: 活動窗體切換
Ctrl+Shift+N: 新建項目
Ctrl+Shift+O: 打開項目
Ctrl+Shift+S: 全部保存
Shift+Alt+C: 新建類
Ctrl+Shift+A: 新建項

VS2005的隱藏快捷鍵
 
這里我將會把一些無意中發現的VS2005中沒有明確指出的快捷鍵共享出來,并不是所有的快捷鍵,或者常見的一些快捷鍵。
1、Ctrl+Space直接完成類或函數(本來這個并不算隱藏的快捷鍵,但是因為中文輸入法搶占這個快捷鍵,所以。。。,替代的快捷鍵是Alt+Right)
2、Shift+Delete整行刪除,并且將這一行放到剪貼板(這時候不能選中一段內容)
3、Shift+Insert粘貼,有點匪夷所思,Ctrl+V就可以了,大概是為了和Shift+Delete對應吧
4、Ctrl+Up,Ctrl+Down滾動編輯器,但盡量不移動光標,光標保證在可見范圍內
5、Ctrl+BackSpace,Ctrl+Delete整詞刪除,有的時候很有用
6、Ctrl+Left,Ctrl+Right按整詞移動光標(不算隱藏,和前面幾條加起來就是Ctrl光標控制套件了)
7、Alt+Shift+F10打開執行改名,實現接口和抽象類的小窗口(還可以用Ctrl+.,不過有的中文輸入法用到這個)
8、Shift+F9調試是打開QuickWatch,內容是當前光標所在處的內容
9、F12轉跳到定義,很有用的快捷鍵
10、Shift+F12查找所有引用
11、Ctrl+F10=F5,開始Debug
12、Ctrl+F6循環察看代碼窗口,有點Ctrl+Tab的感覺
13、Ctrl+F3查找當前光標選中的內容,可以和F3配合使用
14、Ctrl+F2將焦點轉移到類的下拉框上
15、Alt+F7=Ctrl+Tab
16、Alt+F11新開VS2005并編輯宏
17、Alt+F12查找=Ctrl+F
posted @ 2010-02-23 08:45 wrh 閱讀(281) | 評論 (0)編輯 收藏
僅列出標題
共25頁: First 9 10 11 12 13 14 15 16 17 Last 

導航

<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩一级片网址| 欧美高潮视频| 国产专区欧美专区| 欧美日韩午夜剧场| 欧美破处大片在线视频| 久久久伊人欧美| 久久精品一级爱片| 久久中文字幕导航| 午夜精品av| …久久精品99久久香蕉国产| 国产偷久久久精品专区| 国产精品成人va在线观看| 欧美日韩高清一区| 国产精品伦一区| 激情成人综合网| 91久久精品久久国产性色也91| 亚洲第一狼人社区| 亚洲最黄网站| 麻豆精品传媒视频| 亚洲国产一区二区视频| 欧美日韩国产免费观看| 国产精品亚洲人在线观看| 国产网站欧美日韩免费精品在线观看| 一区二区三区我不卡| 一区二区三区欧美在线| 午夜宅男欧美| 欧美激情一区二区三区不卡| 亚洲精品一区在线观看| 久久精品91| 欧美日韩一级片在线观看| 极品日韩久久| 久久久久久综合| 亚洲欧美激情一区二区| 欧美久久久久久久| 亚洲国产你懂的| 久久综合五月| 久久国产精品黑丝| 亚洲精品欧美极品| 欧美日韩1234| 一区二区三区色| 亚洲人在线视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产精品久久久久9999高清| 一区二区三区在线观看视频| 国产日韩一区| 亚洲一区免费| 亚洲网站视频| 国产伦精品免费视频| 性刺激综合网| 亚洲一区网站| 亚洲视频精品| 国语精品中文字幕| 欧美大片免费看| 欧美日韩ab片| 久久婷婷色综合| 欧美成人免费在线| 亚洲男同1069视频| 久久免费午夜影院| 一区二区三区日韩精品视频| 亚洲性av在线| 亚洲精选视频在线| 亚洲免费在线| 日韩视频一区| 久久久国际精品| 亚洲欧美日韩综合| 女仆av观看一区| 欧美亚洲三区| 欧美日韩午夜| 最新热久久免费视频| 国产一区二区三区在线免费观看 | 中文日韩在线视频| 午夜精品婷婷| 欧美一区二区三区四区在线观看 | 激情亚洲一区二区三区四区| 亚洲第一狼人社区| 亚洲激情在线播放| 老鸭窝毛片一区二区三区| 久久久99精品免费观看不卡| 国产精品v亚洲精品v日韩精品 | 午夜精品一区二区三区四区| 亚洲欧美日韩精品综合在线观看| 欧美日本免费| 久久国产精品久久久久久电车| 欧美制服丝袜| 91久久综合| 久久狠狠婷婷| 一本色道久久综合亚洲精品按摩| 欧美激情在线播放| 亚洲美女视频在线免费观看| 亚洲黄色视屏| 欧美视频福利| 亚洲欧美精品一区| 亚洲精品中文在线| 欧美国产精品va在线观看| 亚洲国产欧美国产综合一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 99精品欧美一区二区三区综合在线| 亚洲国产99精品国自产| 99精品99久久久久久宅男| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美国产77777| 久久久国产成人精品| 亚洲国产精品久久久久久女王| 亚洲午夜久久久久久尤物| 欧美专区在线| 国产婷婷一区二区| 国产一级揄自揄精品视频| 欧美91大片| 亚洲视屏在线播放| 国产精品一区免费观看| 欧美成人精品高清在线播放| 亚洲国产高清自拍| 亚洲日本免费| 久久国产精品色婷婷| 久久精品国产亚洲5555| 亚洲国产欧美一区二区三区久久| 欧美国产日本在线| 欧美在线视频a| 欧美电影美腿模特1979在线看| 亚洲精品日本| 欧美精品一区二区精品网 | 亚洲永久免费| 国产精品久久久久久久午夜| 中文精品视频一区二区在线观看| 久久综合中文字幕| 亚洲高清二区| 国产一区二区三区免费不卡| 欧美日韩中文在线| 午夜国产精品视频| 久久精品国产久精国产爱| 亚洲综合二区| 一本色道久久综合狠狠躁的推荐| 黄色精品免费| 国产精品中文字幕欧美| 国产精品男女猛烈高潮激情| 国产精品videosex极品| 母乳一区在线观看| 欧美日韩在线三区| 免费在线观看精品| 国产精品www| 国产区亚洲区欧美区| 国外成人性视频| 久久久不卡网国产精品一区| 久久久久国产成人精品亚洲午夜| 欧美中在线观看| 久久久xxx| 一区二区三区四区国产精品| 麻豆久久婷婷| 亚洲欧洲日本一区二区三区| 亚洲欧美日韩国产中文在线| 欧美亚洲免费电影| 免费观看久久久4p| 久久女同互慰一区二区三区| 欧美日韩一级大片网址| 国产精品成人一区二区网站软件 | 亚洲电影自拍| 黄色亚洲大片免费在线观看| 国产丝袜一区二区| 99精品国产福利在线观看免费| 久久久xxx| 亚洲三级观看| 久久青青草综合| 精品999网站| 西西裸体人体做爰大胆久久久| 蜜桃av一区二区| 久久综合给合久久狠狠色| 欧美剧在线免费观看网站| 国产精品日韩一区二区| 一区二区国产日产| 欧美激情成人在线| 亚洲视频一区| 国产精品欧美日韩一区| 亚洲精品免费一区二区三区| 欧美成人精品在线播放| 欧美在线免费| 国产视频一区在线| 亚洲精品国产欧美| 欧美激情aⅴ一区二区三区| 欧美中文字幕在线播放| 久久久水蜜桃| 亚洲一区精品视频| 黄色成人在线免费| 久久精品国产免费| 午夜精品理论片| 国产精品美女久久久免费| 亚洲美女在线看| 99国产精品国产精品久久| 欧美精品日韩www.p站| 午夜亚洲福利| 欧美一区二区三区在线观看视频 | 蜜臀久久99精品久久久久久9| 亚洲在线国产日韩欧美| 国产农村妇女精品一区二区| 久久精品国产免费看久久精品| 亚洲综合社区| 亚洲大胆视频| 久久蜜桃av一区精品变态类天堂| 午夜精品久久久久久| 国产伪娘ts一区| 欧美成人一区二区|