??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99精品免费一区二区,精品一二三区久久aaa片,久久久久久久久波多野高潮http://www.shnenglu.com/Cass/category/16518.html漂Q在水面上的冰山,只不q是它庞大体U的一部分,C++,也是一栗不深入挖掘Q永q都只是认识冰山一角? zh-cnSat, 17 Sep 2011 01:10:46 GMTSat, 17 Sep 2011 01:10:46 GMT60键盘与鼠标ȝhttp://www.shnenglu.com/Cass/articles/155677.htmlYuYuTue, 13 Sep 2011 08:23:00 GMThttp://www.shnenglu.com/Cass/articles/155677.htmlhttp://www.shnenglu.com/Cass/comments/155677.htmlhttp://www.shnenglu.com/Cass/articles/155677.html#Feedback0http://www.shnenglu.com/Cass/comments/commentRss/155677.htmlhttp://www.shnenglu.com/Cass/services/trackbacks/155677.html一、击键与字符消息Q?br />处理按键和字元讯息的基本规则是:如果需要读取输入到视窗的键盘字元,那么您可以处理WM_CHAR 讯息。如果需要读取游标键、功能键、Delete、Insert、Shift、Ctrl 以及Alt 键,那么您可以处理WM_KEYDOWN 讯息?br />但是Tab 键,Enter、Backspace 和Escape 键可以处理击键或字符消息都可以?br />按键   字元代码  产生Ҏ  ANSI C 控制字元
Backspace  0x08   Ctrl-H   \b
Tab   0x09   Ctrl-I   \t
Ctrl-Enter 0x0A   Ctrl-J   \n
Enter   0x0D   Ctrl-M   \r
Esc   0x1B   Ctrl-[
现在一般处理字W消息?/p>

二?/////////////创徏插入W?br />主要有五个插入符号函式:
CreateCaret 建立与视H有关的插入W号
SetCaretPos 在视H中讑֮插入W号的位|?br />ShowCaret 昄插入W号
HideCaret 隐藏插入W号
DestroyCaret 撤消插入W号
另外Q?br />GetCaretPos  取得插入W号目前位置
GetCaretBlinkTime  取得插入W号闪烁旉
SetCaretBlinkTime 讑֮插入W号闪烁旉

使用插入W号的主要规则很单:
1、视H讯息处理程式在WM_SETFOCUS 讯息理期间呼叫CreateCaretQ在WM_KILLFOCUS讯息处理期间呼叫DestroyCaret?br />2、插入符号刚建立时是隐蔽的。想使插入符号可见,CreateCaret QShowCaret
3、当视窗讯息处理E式处理一条非WM_PAINT 讯息而且希望在视H内l制某些东西Ӟ它必d叫HideCaret 隐藏插入W号。在l制完毕後,再呼叫ShowCaret昄插入W号。HideCaret 的媄响具有篏U效果,相同ơ数Ӟ才能看到插入W号?/p>

 

三、捕获鼠标:是鼠标移出客户区时依焉要鼠标鼠标的位置。这是捕?br />SetCapture (hwnd) ;Windows 所有滑鼠讯息发l视H代号ؓhwnd 的视H讯息处理程式?br />ReleaseCapture () ;释放


WPARAM的参?nbsp;
W号帔R  十六q制? 指定的鼠标或键盘按键
  VK_LBUTTON  01   鼠标左键Q一般不用)
  VK_RBUTTON  02   鼠标右键Q一般不用)
  VK_CANCEL  03   Control-break q程
  VK_MBUTTON  04   鼠标中键Q一般不用)
  VK_BACK  08   BACKSPACE ?br />  VK_TAB  09   TAB ?
  VK_CLEAR  0C   CLEAR 键(Num Lock关闭时的数字键盘5Q?br />  VK_RETURN  0D   ENTER 键(回R键)
  VK_SHIFT  10   SHIFT ?br />  VK_CONTROL  11   CTRL ?br />  VK_MENU  12   ALT ?br />  VK_PAUSE  13   PAUSE ?nbsp; //Q?Q?br />  VK_CAPITAL  14   CAPS LOCK 键(大写锁定键)
  VK_ESCAPE  1B   ESC ?br />  VK_SPACE  20   SPACEBARQ空格键Q?br />  VK_PRIOR  21   PAGE UP 键(上页Q?br />  VK_NEXT  22   PAGE DOWN 键(下页Q?br />  VK_END  23   END ?br />  VK_HOME  24   HOME 键(一般用来做开始)
  VK_LEFT  25   LEFT ARROW ?br />  VK_UP  26   UP ARROW ?br />  VK_RIGHT  27   RIGHT ARROW ?br />  VK_DOWN  28   DOWN ARROW ?br />  VK_SELECT  29   SELECT ?nbsp; //Q?Q?
  VK_EXECUTE  2B   EXECUTE ?nbsp; //Q?Q?
  VK_SNAPSHOT 2C   PRINT SCREEN键(用于Windows 3.0及以后版本)
  VK_INSERT  2D   INS 键(Insert键)
  VK_DELETE  2E   DEL 键(Delete键)
  VK_HELP  2F   HELP ?nbsp; //Q?Q找不到
  ///////////////////////////////////////////////////
  对于字母键和非小键盘上的数字?直接在单引号中加入该键就?
  比如:a?'A'
   1?'1'
  //////////////////////////////////////////////

  VK_LWIN  5B  Left Windows ?(Microsoft自然键盘)
  VK_RWIN  5C  Right Windows ?(Microsoft自然键盘)
  VK_APPS  5D  Applications ?(Microsoft自然键盘)
  VK_NUMPAD0  60  数字键盘上?0 ?br />  VK_NUMPAD1  61  数字键盘上?1 ?br />  VK_NUMPAD2  62  数字键盘上?2 ?br />  VK_NUMPAD3  63  数字键盘上?3 ?br />  VK_NUMPAD4  64  数字键盘上?4 ?br />  VK_NUMPAD5  65  数字键盘上?5 ?br />  VK_NUMPAD6  66  数字键盘上?6 ?br />  VK_NUMPAD7  67  数字键盘上?7 ?br />  VK_NUMPAD8  68  数字键盘上?8 ?br />  VK_NUMPAD9  69  数字键盘上?9 ?br />  VK_MULTIPLY  6A  Multiply ?Q?键)
  VK_ADD  6B  Add 键(+Q?br />  VK_SEPARATOR 6C  Separator ?br />  VK_SUBTRACT 6D  Subtract ?Q?#8212;Q?br />  VK_DECIMAL  6E  Decimal 键(.Q?br />  VK_DIVIDE  6F  Divide ?/)
  VK_F1  70  F1 ?br />  VK_F2  71  F2 ?br />  VK_F3  72  F3 ?br />  VK_F4  73  F4 ?br />  VK_F5  74  F5 ?br />  VK_F6  75  F6 ?br />  VK_F7  76  F7 ?br />  VK_F8  77  F8 ?br />  VK_F9  78  F9 ?br />  VK_F10  79  F10 ?br />  VK_F11  7A  F11 ?br />  VK_F12  7B  F12 ?br />  VK_F13  7C  F13 ?br />  VK_F14  7D  F14 ?br />  VK_F15  7E  F15 ?br />  VK_F16  7F  F16 ?br />  VK_F17  80H  F17 ?br />  VK_F18  81H  F18 ?br />  VK_F19  82H  F19 ?br />  VK_F20  83H  F20 ?br />  VK_F21  84H  F21 ?br />  VK_F22  85H  F22 ?br />  VK_F23  86H  F23 ?br />  VK_F24  87H  F24 ?br />  VK_NUMLOCK  90  NUM LOCK ?br />  VK_SCROLL  91  SCROLL LOCK ?br />/////下面的键盘找不到
  VK_ATTN  F6  Attn ?br />  VK_CRSEL  F7  CrSel ?br />  VK_EXSEL  F8  ExSel ?br />  VK_EREOF  F9  Erase EOF ?br />  VK_PLAY  FA  Play ?br />  VK_ZOOM  FB  Zoom ?br />  VK_OEM_CLEAR FE  Clear ?br />



Yu 2011-09-13 16:23 发表评论
]]>
剪脓板的使用http://www.shnenglu.com/Cass/articles/155676.htmlYuYuTue, 13 Sep 2011 08:21:00 GMThttp://www.shnenglu.com/Cass/articles/155676.htmlhttp://www.shnenglu.com/Cass/comments/155676.htmlhttp://www.shnenglu.com/Cass/articles/155676.html#Feedback0http://www.shnenglu.com/Cass/comments/commentRss/155676.htmlhttp://www.shnenglu.com/Cass/services/trackbacks/155676.html//重要函数
1、分配内存:
GLOBALHANDLE hGlobal = GlobalReAlloc (hGlobal, dwSize, uiFlags) ;

uiFlagsQ?br />GMEM_FIXED    //初始化每一位ؓ0
#define GPTR (GMEM_FIXED | GMEM_ZEROINIT)    //
#define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)   //q回一个虚拟地址

2、访问内存块Q?br /> int *p = (int *) GlobalLock (hGlobal) ;

解锁内存块:GlobalUnlock (hGlobal) ;

释放内存;hGlobal = GlobalHandle (p) ;

3、把文本送到剪脓?br />Q?Q、分配内存,后面是以NULLl尾的,故要加一
hGlobal = GlobalAlloc (GHND | GMEM_SHARE, iLength + 1) ;

Q?Q、锁定ƈ获得指针Q?br />pGlobal = GlobalLock (hGlobal) ;

Q?Q、复Ӟ
for (i = 0 ; i < wLength ; i++)
 *pGlobal++ = *pString++ ;

Q?Q、由于不用hGlobal 了,可以解锁Q?br />GlobalUnlock (hGlobal);  //可以防止泄漏

Q?Q、打开剪脓板ƈ清空
OpenClipboard (hwnd) ;
EmptyClipboard () ;

Q?Q、设|剪贴板数据Qƈ关闭剪脓板:
SetClipboardData (CF_TEXT, hGlobal) ;
CloseClipboard () ;

//注意Q不要将锁定的句柄送给剪脓ѝ?br />//当从E序d数据旉要锁定hGlobal 句柄以访问内?/p>


4、从剪脓板获取文本:
Q?Q确定剪贴板是否含有数据QbAvailable = IsClipboardFormatAvailable (CF_TEXT) ;

Q?Q、先打开剪脓板:OpenClipboard (hwnd) ;
Q?Q获得句柄:hGlobal = GetClipboardData (CF_TEXT) ;

Q?Q把数据复制到程序前先分配内存:pText = (char *) malloc (GlobalSize (hGlobal)) ;
获得数据大小GlobalSize (hGlobal)
Q?Q、锁定句柄获取指向剪贴板的指针:pGlobal = GlobalLock (hGlobal) ;
Q?Q、复制数据:strcpy (pText, pGlobal) ;或者while (*pText++ = *pGlobal++) ;

Q?Q、解锁后关闭剪脓?br />GlobalUnlock (hGlobal) ;
CloseClipboard ();


(5)、逐次获得数据iFormatQ?br />iFormat = 0 ;
OpenClipboard (hwnd) ;
while (iFormat = EnumClipboardFormats (iFormat))
?br /> //
?br />CloseClipboard () ;
您剪贴板不同格式的个敎ͼ //iCount = CountClipboardFormats () ;


//q程

一、写入数据到剪脓?br />1、打开
BOOL OpenClipboard(   __in HWND hWndNewOwner  );  如果函数执行成功,q回非零?  如果函数执行p|,q回?Z获得更多的错误信息,调用GetLastError.

2、清I?br /> BOOL EmptyClipboard(  VOID );该函数清I剪切板q攑։切板内数据的句柄。函数在之后会将剪切板的所有权指派l当前打开剪切板的H口?

3、设|数?br />HANDLE SetClipboardData(
  UINT uFormat,   //数据的格?br />  HANDLE hMem  //数据指定的内存Ş?br />);
①、?
HGLOBAL GlobalAlloc      分配内存
(   UINT uFlags, // 分配属?方式)   
DWORD dwBytes // 分配的字节数   
);
//注意要用GMEM_MOVEABLE 标志
②、锁?nbsp;  锁定内存中指定的内存块,q返回一个地址|令其指向内存块的起始?br />LPVOID GlobalLock(   HGLOBAL hMem // handle to global memory object   );
③解锁
GlobalUnlock函数解除锁定的内存块Q指向该内存块的指针无效,GlobalLock锁定的内存,一定要用GlobalUnlock解锁?/p>

4、关?br />  BOOL CloseClipboard(VOID);   //关闭剪脓?q其他H口能访问剪贴板?/p>

二、读?br />1、打开 q检查IsClipboardFormatAvailable_
2、获?nbsp; GetClipboardData
注意使用
用GlobalLock锁定剪脓杉K内存?  
GlobalSize可以用来获取该内存块的大?  
使用GlobalUnlock解除锁定
3、关?/p>

 



Yu 2011-09-13 16:21 发表评论
]]>
Windows GDI 讑֤描述表对?--------位图、画W、字体、文本、元文ghttp://www.shnenglu.com/Cass/articles/155673.htmlYuYuTue, 13 Sep 2011 08:16:00 GMThttp://www.shnenglu.com/Cass/articles/155673.htmlhttp://www.shnenglu.com/Cass/comments/155673.htmlhttp://www.shnenglu.com/Cass/articles/155673.html#Feedback0http://www.shnenglu.com/Cass/comments/commentRss/155673.htmlhttp://www.shnenglu.com/Cass/services/trackbacks/155673.html

1、三大函?br />从源写到目标  
BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop)Q?/p>

从源写到目标 Q可以拉?br />BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeighDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop)Q?/p>

选定刷子?br />函数原型QBOOL PatBlt(HDC hdc, int nXLeft, int nYLeft, int nWidth, int nHeight, DWORD dwRop)Q?/p>

2、加载位图资源:
Q?Q、加?nbsp; hBitmap=LoadBitmap(hinst,MAKEINTRESOURCE(IDB_BITMAP2));
Q?Q、得到对?nbsp; GetObject(hBitmap,sizeof(BITMAP),&bitmap);
Q?Q创建内存DC     hdcMem=CreateCompatibleDC(hdc);   //创徏内存dc
(4)把位囑֯象选中到内存dc?nbsp;    SelectObject(hdcMem,hBitmap); 
(5)?BitBlt、StretchBlt、PatBltdQ?br />注意要删除DC,和对?br />DeleteDC(hdcMem);
DeleteObject(hBitmap);

3、填充bitmap创徏单色位图?br />先用数据填充bitmap。然后调用CreateBitmap(&bitmap);


4、用位图做画?nbsp;  HBRUSH CreatePatternBrush(HBITMAP hbmp)Q 
该函数可以创建具有指定位图模式的逻辑刷子Q该位图不能是DIBcd的位图,DIB位图是由CreateDIBSection函数创徏的?br />

二、透明位图/透明H口

//改变扩展风格
DWORD dwStyle=GetWindowLong(hwnd,GWL_EXSTYLE);
SetWindowLong(hwnd,GWL_EXSTYLE,dwStyle^0x80000);
//动态链接库
hinst=LoadLibrary("User32.DLL");
if(hinst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND ,COLORREF,BYTE,DWORD);
MYFUNC fun=NULL;
//获得指针
fun=(MYFUNC)GetProcAddress(hinst,"SetLayeredWindowAttributes");
if (fun)
{
 fun(hwnd,0,180,2);    //讄
}
}

//扩展风格WS_EX_LAYERED

 


三、元文g

一、创建:
CreateMetaFileQ)Q?NULL表示存储在内存中
CloseMetaFile    //q回元文件句?br />PlayMetaFile     //在指定的讑֤场景中回放一个图元文件。与原元文g的坐标有养I故要定义原点在哪里。。?br />DeleteMetaFile   //删除
hmf=GetMetaFileQszFileNameQ;    //获得句柄
CopyMetaFile   //为元文g制定一个副?br />EnumMetaFile  //Z个标准的windows囑օ文g枚D单独的图元文件记?br />PlayMetaFileRecord    //回放来自囑օ文g的单条记录(每条记录都包含了单个GDIl图命oQ?br />//EnumMetaFileProc 
int CALLBACK EnumMetaFileProc(
  HDC hDC,                    // handle to device context
  HANDLETABLE FAR *lpHTable,  // pointer to metafile handle table
  METARECORD FAR *lpMFR,      // pointer to metafile record
  int nObj,                   // count of objects
  LPARAM lpClientData         // pointer to optional data
);

GetMetaFileBitsEx 

SetMetaFileBitsEx

//增强型元文g
CreateEnhMetaFile //创徏增强型元文g
CloseEnhMetaFile  //q回元文件句柄?br />PlayEnhMetaFile   //昄元文?br />GetEnhMetaFileHeader(hemf,cbsize,&emh);    //获得ENHMETAHEADER信息?br />GetEnhMetaFile    //取得盘文g中包含的一个增强型囑օ文g的图元文件句?br />EnumEnhMetaFile
PlayEnhMetaFileRecord     // 回放单独一条增强型囑օ文g记录
//
CopyEnhMetaFile  
DeleteEnhMetaFile 
EnhMetaFileProc 
 
GdiComment 
GetEnhMetaFileBits 
GetEnhMetaFileDescription 
GetEnhMetaFilePaletteEntries 
GetWinMetaFileBits  
 
SetEnhMetaFileBits 
SetWinMetaFileBits

  记录数据的元文gQ?br />ENHMETAHEADER
typedef struct tagENHMETAHEADER { // enmh
    DWORD iType;    //cd
    DWORD nSize;  //大小
    RECTL rclBounds;     //指出囑փ大小
    RECTL rclFrame;   //
    DWORD dSignature;  //字符?#8220;EMF”
    DWORD nVersion;  //0X00010000
    DWORD nBytes;  //d节数
    DWORD nRecords;  //指出记录数。(头记录,GDI函数调用{记录)
    WORD  nHandles;  //指出元文件用图形对象的非默认句柄数量?br />    WORD  sReserved;
    DWORD nDescription;  //描述串的大小 
    DWORD offDescription;  //描述串在文g中的偏移?br />    DWORD nPalEntries;   //调试板中条目的个?br />    SIZEL szlDevice;   //指出以像素ؓ单位的输备大?br />    SIZEL szlMillimeters; //以mm为单位输出的讑֤大小
    DWORD cbPixelFormat; //描述?br />    DWORD offPixelFormat;
    DWORD bOpenGL;
} ENHMETAHEADER;



四、字?br />

一、用于文本输出的函数Q?br />1、TextOut (hdc, xStart, yStart, pString, iCount) ;
2、TabbedTextOut ( hdc, xStart, yStart, pString, iCount,iNumTabs, piTabStops, xTabOrigin) ;iNumTabs制表位数QpiTabStops以像素ؓ单位的制表位数。xTabOriginq_字符宽度讄?br />3、BOOL ExtTextOut(HDC hdc, int X, int Y, UINT fuOptions, CONST RECT *lprc, LPCTSTR lpString, UINT cbCount, CONST INT *lpDx)QlpDx指定字符串中q箋字符的间隔、NULL为默认?br />4、int DrawText(HDC hDC, LPCTSTR lpString,int nCount, LPRECT lpRect, UINT uFormat )Q?br />5、int DrawTextEx(HDC, hdc, LPTSTR lpchText, int cchText, LPRECT lprc, UINT dwDTFormat, LPDRAWTEXTPARAMS lpDTParams)Q?/p>

二、逻辑字体
1、CreateFont 或CreateFontIndirect建立逻辑字体
2、GetTextFace (hdc, sizeof (szFaceName) / sizeof (TCHAR), szFaceName) ;获得字体?br />3、GetTextMetrics (hdc, &textmetric) ;获得字体信息

三?br />该函Cؓ指定的设备环境设|图形模式。int SetGraphicsMode(HDC hdc, int iMode)Q?br />该函数用指定的方式修改与讑֤环境有关的全局转换。BOOL ModifyWorldTransform(HDc hdc, CONST XFORM *lpXform, DWORD iMode)Q?/p>

四、hPen = ExtCreatePen (iStyle, iWidth, &lBrush, 0, NULL) ;使用该函数正常地l制U段?/p>

五:轨迹
BeginPath         {路径开始}
EndPath           {路径l束}
StrokePath        {l制路径}
FillPath          {填充路径}
StrokeAndFillPath {l制q填充\径}
SelectClipPath     路径的运?br />//在\径中可以使用的图形命令有:
AngleArc
Arc
ArcTo
Chord
CloseFigure
Ellipse
ExtTextOut
LineTo
MoveToEx
Pie
PolyBezier
PolyBezierTo
PolyDraw
Polygon
Polyline
PolylineTo
PolyPolygon
PolyPolyline
Rectangle
RoundRect
TextOut


六、字体效?br />

一、设|字体大?br />LOGFONT lf;
ZeroMemory(&lf,sizeof(lf));
lf.lfCharSet=DEFAULT_CHARSET;
lf.lfHeight=m_iMineLength;
lf.lfWidth=m_iMineLength;
lf.lfWeight=1000;
HFONT hFont=CreateFontIndirect(&lf);
HFONT hOldFont=(HFONT)SelectObject(m_hMemDC,hFont);
DeleteObject(hFont);

二、输出透明底色字体
SetBkMode(hMemDc,TRANSPARENT);
TextOut(hMemDc,0,0,sNum,strlen(sNum));


三、居中输?br />DrawText(hdc,str,&rt,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
//注意要同时DT_VCENTER|DT_SINGLELINE才能居中

 



Yu 2011-09-13 16:16 发表评论
]]>
Windows GDI使用大全 -----d基础http://www.shnenglu.com/Cass/articles/155671.htmlYuYuTue, 13 Sep 2011 08:12:00 GMThttp://www.shnenglu.com/Cass/articles/155671.htmlhttp://www.shnenglu.com/Cass/comments/155671.htmlhttp://www.shnenglu.com/Cass/articles/155671.html#Feedback0http://www.shnenglu.com/Cass/comments/commentRss/155671.htmlhttp://www.shnenglu.com/Cass/services/trackbacks/155671.html////////////7 个画U函式是Q?br />(1)ȝU?br />LineTo    BOOL LineTo(HDC hdc,int nXEnd,int nYEnd);
l合MoveToEx函数使用BOOL MoveToEx(HDC hdc,int X,int Y,LPPOINT lpPoint);Point记录了旧的坐标点Q先前的当前位置Q?br />///注意QGetCurrentPositionEx (hdc, &pt) ;获得当前位置?

Q?Q画一pd相连的直Uѝ?br />Polyline    把Point数组的点q接成线。不用当前点做开始点Q?br />PolylineTo  使用当前点做开始点Qƈ当前的位置讄成最后一根线的终炏V?br />PolyPolyline dl相q的Uѝ?/p>

(3)填充矩Ş
Rectangle M个矩形,q用白色刷子填充、RectangleQhdc,xleft,ytop,xright,ybottomQ?br />Ellipse   M椭圆Qƈ用白色的刷子填充。Ellipse Qhdc,xleft,ytop,xright,ybottomQ?br />RoundRect d角矩形。ƈ用白色的刷子填充 RoundRectQhdc,xL,yT,xR,yB,xC,yCQ?br /> xC,yC是圆角矩形的圆角?br />Arc  L圆线。Arc (hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd,yEnd)
Chord du弓ŞChord(hdc,xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd)
Pie 画饼形图 Pie(hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd);
ArcTo 和AngleArc L圆线?/p>

//////多边?br />Polygon(hdc,aptQiCount)Q?nbsp; //M个多边ŞQ最后一点与W一点相q?br />PolyPolygon(hdcQaptQaiCount,iPolyCount);  //d个多边Ş?/p>


 

 
Q?Q贝塞尔曲线,画贝塞尔曲线
POINY  apt??Qv点,W一控制点,W二控制点,l点Q?br />需要注意的是:Q曲U是L到终点的q线曲线Q控制点Q调整点Q不在其中?br />PolyBezier Qhdc,apt,icountQ?br />PolyBezierTo Qhdc,apt,icountQ。用当前点v?br />PolyDraw Mpd相连的线以及贝塞曲Uѝ?br />对于多条贝塞曲U,后一条的L是前一条的l点?/p>

(5)矩Ş函数
FillRect(hdc,&rect,hBrush);  //使用指定的画h填充矩ŞQ(不包含(RightQbuttomQFrameRect(hdc,&rect,hBrush);//使用d来填充矩形框Q不填充矩ŞQ?br />InvertRect(hdc,&rect);  //使像素翻转,白变黑,黑变白,l变U?/p>

///////对Rect的操?br />SetRect(&rect,xLeft,yTop,xRight,yButtom);//赋?br />OffsetRect(&rect,x,y);  //沿xQyUd
InflateRect(&rect,x,y); //增减矩Ş的尺寸?br />SetRectEmpty(&rect);  //|?
CopyRect(&A,&B);把B复制到A.
IntersectRect(&A,&B1,&B2);//把B1和B2的交集复制到A.
UnionRect(&A,&B1,&B2);  //取ƈ?br />bEmpty=IsRectEmpty(&Rect);//判断矩Ş是否为空?br />blnRect=PtlnRect(&Rect,point); //判断Ҏ否在矩Ş中?br />

二、映像坐?br />

1Q、视口:讑֤坐标Q像素)
H口Q逻辑坐标Q像素、mm、英?br />视口Q设备)坐标转换为窗口(逻辑Q坐标:
公式Q一般不用记Q有专门的函数?br />xWindow=(xViewport - xViewOrg) * xWinExt/xViewExt +xWinOrg
yWindow=(yViewport - yViewOrg) * yWinExt/yViewExt +yWinOrg

(xWindow,yWindow) 转换后的H口坐标
QxViewportQyViewportQ待转换的视口坐?br />(xWinExt,yWinExt)是逻辑座标的视H范_
(xViewExt,yViewExt)是装|标的视窗范围?br />(xWinOrgQyWinOrg)是逻辑座标的窗口原点;
(xViewOrg,yViewOrg)是装|标的视口原点

2Q、设备点转化为逻辑?br />DPtoLP (hdc, pPoints, iNumber);pPoints l构阵列的指标,而iNumber 是要转换的点的个?br />例如Q?br />GetClientRect (hwnd, &rect) ;
DPtoLP (hdc, (PPOINT) &rect, 2) ;

逻辑点{换ؓ装置点:
LPtoDP (hdc, pPoints, iNumber) ;


3):
SetMapMode(hdc,iMapMode);   //讄映射方式?br />默认QMM_TEXTQ每个逻辑单位转换Z个图素,X正方向向叻IY正方向向下?br />原点可以改变Q范围不可改?br />SetWindowOrgEx();  //讄讑֤环境的原?br />SetViewprocOrgEx(); //讄客户Z?br />//
//原点和范围都可以改变?br />MM_ANISOTROPICQ逻辑单位转换成具有Q意比例u的Q意单位,用SetWindowExtExSetViewportExtEx函数可指定单位、方向和比例?/p>

//原点可以改变Q范围不可以改变QX的正斚w向右QY的正方向向上?br />MM_HIENGLISHQ每个逻辑单位转换?.001英寸QX的正斚w向右QY的正方向向上?br />MM_HIMETRICQ每个逻辑单位转换?.01毫米QX正方向向叻IY的正方向向上?br />MM_ISOTROPICQ逻辑单位转换成具有均{比例u的Q意单位,xX轴的一个单位等于沿Y轴的一个单位,用和函数可以指定该u的单位和方向。图形设备界面(GDIQ需要进行调_以保证X和Y的单位保持相同大(当设|窗口范围时Q视口将被调整以辑ֈ单位大小相同Q?br />MM_LOENGLISHQ每个逻辑单位转换?.01英寸QX正方向向叻IY正方向向上?br />MM_LOMETRICQ每个逻辑单位转换?.1毫米QX正方向向叻IY正方向向上?br />MM_TWIPSQ每个逻辑单位转换为打印点?Q?0Q即1Q?400英寸Q,X正方向向叻IY方向向上?br />

 


三、GDI  对象

ȝ、刷子、位图、区域、字体、调色板是可以创建的6UGDI对象?br />GetStockObject(obj);获取对象的句柄?br />DeleteObject(obj);  删除对象。(注意不能在有效的讑֤描述表中删除。)
除调色板外,其他对象都是通过SelectObject(hdc,obj);选入讑֤描述表中?br />GetObject(HOBJ,size,lpObj); lpObj可以是下列的l构体。获取对象信息?br />BITMAP       //位图
DIBSECTION  //位图
EXTLOGPEN   //ȝ
LOGBRUSH    //?
LOGFONT     //字体
LOGPEN      //ȝ
Q?Q画W(PenQ?windows的默认|BLACK_PEN
创徏Q?br />Ҏ一QhPen=CreatePenQiPenStyle,iWidth,crColorQ?
iPenStyle的参敎ͼPS_SOLID    实心ȝ
   PS_DASH     破折LW(在iWidth<1有效Q否则系l会用实心笔替代Q?br />   PS_DOT     虚线Q在iWidth<1有效Q否则系l会用实心笔替代Q?br />  PS_DASHDOT  点划U(在iWidth<1有效Q否则系l会用实心笔替代Q?br />  PS_DASHDOTDOT 双重点划U(在iWidth<1有效Q否则系l会用实心笔替代Q?br />  PS_NULL   I白W?br />  PS_INSIDEFRAME  _实U,当iWidth>1可以使用抖动Ԍ不只是纯Ԍ

Ҏ二:LOGPEN logpen   //指定W颜艌Ӏ大、类型的l构体。同上?br /> hPen=CreatePenIndirect(&logpen);

Q?Q字体(FontQ?默认|SYSTEM_FONT
创徏Q?br />一QCreateFont
只用?个参敎ͼ其他都ؓ0Q例QCreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL)
HFONT CreateFont(
  int nHeight,             // 字符宽度Q逻辑单位
  int nWidth,              //
  int nEscapement,         // 斜放|字W串
  int nOrientation,        // 字符倾斜的角度,影响单个字符
  int fnWeight,            // _体?—400标准Q?00_体
  DWORD fdwItalic,         // 斜体
  DWORD fdwUnderline,      // 下划U?br />  DWORD fdwStrikeOut,      // 删除U?br />  DWORD fdwCharSet,        // 1为默认倹{指定字体字W集一个字节的|*不用理会Q?br />  DWORD fdwOutputPrecision,  // 输出_ֺ*
  DWORD fdwClipPrecision,  // 裁剪_ֺ*
  DWORD fdwQuality,        // 期望匚w字体*
  DWORD fdwPitchAndFamily,  // 字体?
  LPCTSTR lpszFace         // 字样*
);
                                 
字体Q?br />SYSTEM_FONT
SYSTEM_FIXED_FONT
OEM_FIXED_FONT

ANSI_FIXED_FONT?br />ANSI_VAR_FONT
DEVICE_DEFAULT_FONT

其中: WM_INPUTLANGCHANGE: dwCharSet = wParam ;
二:LOGFONT logfontQ?br />    CreateFontIndirectQ?amp;logfontQ;

Q?Q刷子(BrushQ?默认?:WHITE_BRUSH
pȝ的刷子: WHITE_BRUSH 
  LTGRAY_BRUSH    亮灰
  GRAY_BRUSH ?br />                DKGRAY_BRUSH 黑灰
  BLACK_BRUSH
创徏Q?br />一QhBrush=CreateSolidBrush(crColor);
二:hBrush=CreateHatchBrush(iHatchStyle,crColor);//创徏有媄U的刷子填充部分为阴?br />其中QiHatchStyle的参数如下:
 HS_BDIAGONAL   45度的斜线?br /> HS_CROSS        十字型的Uѝ?br /> HS_DIAGCROSS ×?br /> HS_FDIAGONAL  135度斜U?br /> HS_HORIZONTAL   水^
 HS_VERTICAL  垂直 
三:LOGBRUSH  logbrush
    CreateBrushIndirectQ?amp;logbrushQ;
四: hBrush=CreatePatternBrush(HBITMAP hbmp);//创徏位图的刷子?br />五:hBrush=CreateDIBPatternBrushPtQ?/创徏DIB位图的刷子?br />    CreateDIBPatternBrush,

 


Q?Q位图(BitmapQ默认|NoneQ无Q;
 
CreateBitmap,
CreateBitmapIndirect,
CreateCompatibleBitmap,
CreateDIBitmap,
CreateDIBSection
CreateSolidBrush
W一U:Q?br />HBITMAP CreateBitmap(
  int nWidth,         // ?br />  int nHeight,        // ?br />  UINT cPlanes,       // 颜色板的数目
  UINT cBitsPerPel,   // 没像素的位数?br />  CONST VOID *lpvBits // 指向颜色数据数组指针。这些颜色数据用来设|矩形区域内像素的颜艌Ӏ矩形区域中的每一扫描U必L双字节的整数倍(不部分?填充Q。如果该参数为NULLQ那么就表示没有定义C图?br />);

//化版
HBITMAP CreateCompatibleBitmap( HDC hdc,     int nWidth,   int nHeight  );


//W二U?br />HBITMAP CreateBitmapIndirect(&bitmap);bitmap是BITMAPl构?/p>

Q?Q区域(RegionQ区域是ҎC器上一个范围的描述Q这个范围是矩Ş、多边Ş和椭圆的l合Q把区域选进讑֤描述表,区域可以用于l制和剪裁?br />作用QiRgnType=CombineRgn(hRgn,hRgn1,hRgn2,iCombine);
iCombine的参敎ͼ
RGN_AND  两个源区域的公共部分
RGN_OR   全部
RGN_XOR  除去公共部分?br />RGN_DIFF hRgn1不在hRgn2的部?br />RGN_COPY hRgn1的全部。(忽略hRgn2Q;
iRgnType的参敎ͼ
NULLREGION     得到I区?br />SIMPLEREGION   得到单的矩Ş、椭圆或多边?br />COMPLEXREGION   多个多边形、矩形、椭圆的l合
ERROR  出错
创徏Q?br />一Q创建矩形区域:
    hRgn = CreateRectRgn (xLeft, yTop, xRight, yBottom) ;
    hRgn = CreateRectRgnIndirect (&rect) ;
二: 创徏椭圆剪裁区域;
   hRgn = CreateEllipticRgn (xLeft, yTop, xRight, yBottom) ;//
   hRgn = CreateEllipticRgnIndirect (&rect) ;
三;创徏多边形剪裁区?br /> hRgn = CreatePolygonRgn (&point, iCount, iPolyFillMode) ;

///////////////////////////////////////////////////////////
矩Ş与区域的剪裁
对于矩Ş;
InvalidateRect (hwnd, NULL, TRUE) ;//使矩形无?br />GetUpdateRect 来取得失效矩形的座标或WM_PAINT中从PAINTSTRUCTl构中得?br />ValidateRect使有?br />对于区域:
InvalidateRgn (hwnd, hRgn, bErase) ;
ValidateRgn (hwnd, hRgn) ;


SelectObject(hdc,hRgn);  或SelectClipRgn(hdc,hRgn);选进讑֤描述?br />ExcludeClipRect用於一个矩形从剪裁区域里排除掉Q?br />IntersectClipRect 用於建立一个新的剪裁区域,它是前一个剪裁区域与一个矩形的交,OffsetClipRgn 用於剪裁区域移动到昄区域的另一部分?br />


四、设备描q表

理解1Q设备描q表中包含许多确定的GDI函数如何在设备上工作的当前属性。这些属性允怼递给GDI函数的参数只包含其实坐标或者尺怿息,而不包含Windows在设备上昄对象旉要的所以其他信息?/p>

理解2Q一个设备描q表通常指一个物理显C备。如视频昄器或打印机?/p>

理解3Q设备描q表Q简UDCQ实际上是GDI内部保存的数据结构。有些值是囑Ş化的“属?#8221;Q这些属性定义了一些GDIl图函数的工作,例如Q文本颜Ԍ文本的背景、TextOut函数的X坐标Qy坐标映射到窗口客户区的方式,q有windows昄的字体?/p>

//////////////////////////////////获取句柄hdc

(1)注意q不能无效区域变的有效
hdc=GetDC(hwnd);
//////
ReleaseDC(hwnd,hdc);

(2)在处理WM_PAINT消息使用。能使无效区域变的有效、重l?br />hdc=BeginPaint(hwnd,&ps);
/////////
EndPaint(hwnd,&ps);

Q?Q能获得非客户区的绘制消息。包括窗口的标题栏,菜单栏,和滚动条、框架等?br />在WM_NCPAINT中处理?br />hdc=GetWindowDC(hwnd);
//////
ReleaseDC(hwnd,hdc);

Q?Q通用获得DC的方法。视频显C器或者打印机上的DC.
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);   //获得整个屏幕的dc
//////////////
DeleteDC(hdc);

Q?Q获得一个dcQ其参数与CreateDC的参数相同。但是不能用q个信息环境句柄往讑֤描述表上写东ѝ?///特别 注意?br />hdc=CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL);
/////////
DeleteDC (hdc);


Q?Q可以把位图选进内部讑֤描述表。然后用GDI 函数在位图上l画?br />hdcMem=CreateCompatibleDC(hdc); //位图选进内部讑֤描述?br />///////////
DeleteDC (hdcMem);

Q?Q获取元文g的设备描q表来创建元文g?br />hdcMeta=CreateMetaFile(pszFilename);
//////////
hmf=ColseMetaFile(hdcMeta)

/////////////////////获取信息
Q?Q获取视频显C器的尺寸,色彩{信息?br />int iValue=GetDeviceCaps(hdc,ilndex);

///////////////////保存讑֤描述表?br />(9)
SaveDC(hdc);可以保存多次
RestoreDC(hdc,-1);恢复DC



五、设备描q表属?br />

1\一些空间隔的填充。如点和虚线之间的间隔填充?br />背景模式Q用SetBkMode(hdc,iBkMode)修改
Q?QOPAQUE(pȝ默认?Q间隔用背景颜色填充?br />       修改QSetBkColor(hdc,crColor);  //修改背景?br />  GetBkColor(hdc);  获取背景?br />Q?QTRANSPARENT  不填充间?,不擦除背景,透明模式
  

2\l图方式Q?br />用画W进行绘囑֮际是ȝ像素与目标位|处原来像素之间的某U布D?br />默认|QR2_COPYPEN;
修改Q?br />SetROP2(hdc,iDrawMode);
获取Q?br />iDrawMode=GetROP2(hdc);




Yu 2011-09-13 16:12 发表评论
]]>
OpenGL 基础http://www.shnenglu.com/Cass/articles/155666.htmlYuYuTue, 13 Sep 2011 08:00:00 GMThttp://www.shnenglu.com/Cass/articles/155666.htmlhttp://www.shnenglu.com/Cass/comments/155666.htmlhttp://www.shnenglu.com/Cass/articles/155666.html#Feedback0http://www.shnenglu.com/Cass/comments/commentRss/155666.htmlhttp://www.shnenglu.com/Cass/services/trackbacks/155666.html阅读全文

Yu 2011-09-13 16:00 发表评论
]]>
蝴蝶桩仿真模拟驾?/title><link>http://www.shnenglu.com/Cass/articles/147455.html</link><dc:creator>Yu</dc:creator><author>Yu</author><pubDate>Sat, 28 May 2011 00:54:00 GMT</pubDate><guid>http://www.shnenglu.com/Cass/articles/147455.html</guid><wfw:comment>http://www.shnenglu.com/Cass/comments/147455.html</wfw:comment><comments>http://www.shnenglu.com/Cass/articles/147455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Cass/comments/commentRss/147455.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Cass/services/trackbacks/147455.html</trackback:ping><description><![CDATA[<p style="text-align: left; line-height: 150%; text-indent: -18pt; margin: 6pt 0cm 0pt 18pt; layout-grid-mode: char" align="left"><span>题目Q仿真驾驶训l?/span></p> <p style="text-align: left; line-height: 150%; margin: 6pt 0cm 0pt; layout-grid-mode: char" align="left"><span style="line-height: 150%; font-family: 宋体; font-size: 12pt">蝴蝶桩是现在机动车驾驶培训的重要内容Q一般考试旉驶者只需要用方向盘和最基本的档位控制功能(一挡、倒R挡)Q当然还包括刹R和离合控制器Q请采用</span><span style="line-height: 150%; font-size: 12pt">2D</span><span style="line-height: 150%; font-family: 宋体; font-size: 12pt">?/span><span style="line-height: 150%; font-size: 12pt">3D</span><span style="line-height: 150%; font-family: 宋体; font-size: 12pt">的图形界面模拟驾驶员基本蝴蝶桩训l时候的全过E。徏议采用键盘、鼠标或游戏杆的方式控制模拟机动车操?/span> <span style="line-height: 150%; font-family: 宋体; font-size: 12pt">q过</span><span style="line-height: 150%; font-size: 12pt">2D</span><span style="line-height: 150%; font-family: 宋体; font-size: 12pt">画面反映车辆和R库的q面位置关系?br />作品介绍Q?br /><img style="width: 705px; height: 551px" border="0" alt="" src="http://www.shnenglu.com/images/cppblog_com/cass/蝴蝶桩仿?jpg" width="705" height="551" /><br />E序界面有四大模块:<br />1、操作控?nbsp;   分别对应键盘上的ADWS键,或用鼠标点击<br />2、演C控?nbsp;   设计相应的步骤演C?br />3、R模型        独立与界面外Q却依存在界面运动中<br />4、界面提C?nbsp;     步骤提示Q和没一步对应相应的轨迹<br /><br />设计要点Q?br />1、R的{弯或UdQ其实R子本w是一个窗口,分别用了36张图片表CZ同角度的UdQR子外使用透明颜色。用API函数movewindowq不能完全解决问题,主要是不能控制移动的距离?br />2、演C的步骤Q基于判断点位置的移动,讄?2个不可见参考点Q当车子刚要接触参考点时改变轨qV?br />3、目标:当用户用Y件时Q免除查找资?/span><br /><br />更多蝴蝶桩仿真,讉KQ?a >http://blog.sina.com.cn/s/blog_62ea3be40100trtp.html</a><br />作品下蝲Q?a href="/Files/Cass/cardrive.rar">/Files/Cass/cardrive.rar</a></p> <img src ="http://www.shnenglu.com/Cass/aggbug/147455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Cass/" target="_blank">Yu</a> 2011-05-28 08:54 <a href="http://www.shnenglu.com/Cass/articles/147455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布一个音乐盒http://www.shnenglu.com/Cass/articles/143936.htmlYuYuMon, 11 Apr 2011 04:29:00 GMThttp://www.shnenglu.com/Cass/articles/143936.htmlhttp://www.shnenglu.com/Cass/comments/143936.htmlhttp://www.shnenglu.com/Cass/articles/143936.html#Feedback0http://www.shnenglu.com/Cass/comments/commentRss/143936.htmlhttp://www.shnenglu.com/Cass/services/trackbacks/143936.html截图Q?br>
易版



扩展版:



正在赉教E,源代码未能上传?br>有需要的朋友QQ?Q?97532016Q标注c++博客Q?br>下蝲Q?a href="http://www.shnenglu.com/Files/Cass/butterfly.rar">/Files/Cass/butterfly.rar
//////////////////////////

Yu 2011-04-11 12:29 发表评论
]]>
vc6杂谈 旉与月历控?/title><link>http://www.shnenglu.com/Cass/articles/143928.html</link><dc:creator>Yu</dc:creator><author>Yu</author><pubDate>Mon, 11 Apr 2011 03:37:00 GMT</pubDate><guid>http://www.shnenglu.com/Cass/articles/143928.html</guid><wfw:comment>http://www.shnenglu.com/Cass/comments/143928.html</wfw:comment><comments>http://www.shnenglu.com/Cass/articles/143928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Cass/comments/commentRss/143928.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Cass/services/trackbacks/143928.html</trackback:ping><description><![CDATA[<p>IT行业发展q速,Cvc2010的时候,Ҏ间与月历控g的用已l推及到属性的讄。但是初学者不应该一开始就接触高的编译器Q学习原理和基础的学者最好是从C++和VC6开始。其实不Z哪里开始也好,“学好一门语aQ精通一个编译器Q实现计机的一通百?#8221;是我从别人哪里得到的信息Qƈ作ؓ学习的指南。此路走的通,也希望后l者走下去?br>又或者,困难的本w不在于难懂Q而在于你的选择?br>介绍用法Q?br>///////////旉与月历控?br>风格Q?br>DTS_APPCANPARSE  // <br>DTS_LONGDATEFORMAT  //创徏长时_?"Friday, April 19, 1996." <br>注意Q:Q?/要获得用所有的语言环境中,长日期格式EnumDateFormats Q?EnumDateFormatsEx Q或EnumDateFormatsExEx ?br>DTS_SHOWNONE //可选需要用的日期风|<br>复选框能被DTM_SETSYSTEMTIME?DTM_GETSYSTEMTIME  获得<br>DTS_SHORTDATEFORMAT   //创徏短时间。像"4/19/96."  <br>DTS_TIMEFORMAT  //创徏有旋转按钮,昄旉的,可以~辑?5:31:42 PM."<br>DTS_UPDOWN  //创徏有旋转按钮,不能拉下的,没复选框的日期风?br><br>1、DTM_GETMONTHCAL      //获取日期旉控g的日历子H口的句?br>    wParam = 0;<br>    lParam = 0;</p> <p>2、DTM_GETMCCOLOR  //获得日历旉控g的日历子H口的颜艌Ӏ?br>    wParam = (WPARAM)(INT)iColor; //<br>    lParam = 0;<br>iColor; 的|<br>MCSC_BACKGROUND  索月份之间的背景颜色昄出来?<br>MCSC_MONTHBK MCSC_MONTHBK  背景颜色索在本月内显C出来?<br>MCSC_TEXT MCSC_TEXT  索用于显C在一个月内文本的颜色?<br>MCSC_TITLEBK MCSC_TITLEBK 索背景颜色在日历的标题显C出来?<br>MCSC_TITLETEXT MCSC_TITLETEXT  .索用来显C在日历的标题文字的颜色?<br>MCSC_TRAILINGTEXT MCSC_TRAILINGTEXT 索用的颜色来显C头一天和后一天的文本头和N天数׃前的和随后的几个月里Q关于当前月份的日历出现的日子?<br> <br>q回COLORREF Q?br>3、DTM_GETMCFONT    //获得日历旉控g的日历子H口的字?br>    wParam = 0;<br>    lParam = 0;</p> <p>4、DTM_GETRANGE     //取得日历旉控g的最大和最时?br>    wParam = 0;<br>    lParam = (LPARAM) lpSysTimeArray;<br>q回一个DWORD|它是GDTR_MAXl合GDTR_MIN或。第一个元素SYSTEMTIME数组包含最低限度的旉W二个元素的数组的SYSTEMTIME包含的最大的允许旉?/p> <p><br>5、DTM_GETSYSTEMTIME   //目前的时_和填充systime指针<br>    wParam = 0;<br>    lParam = (LPARAM) lpSysTime;</p> <p>q回|</p> <p>q回一?DWORD|{于GDT_VALID如果旉信息被成功结构放|在指定?<br>或消息可以返回GDT_NONE如果控制被设|ؓDTS_SHOWNONE风格和控制复选框未被选中?</p> <p>6、DTM_SETFORMAT     //讄日期旉选择器的格式<br>    wParam = 0;<br>    lParam = (LPARAM) lpszFormat;</p> <p>预设的格式有三种可供昄的日期和旉的显C?br>DTS_LONGDATEFORMAT  昄是q样的:“星期五,1996q??9?#8221;?nbsp; <br>DTS_SHORTDATEFORMAT 昄是q样的:“4/19/96”?nbsp; <br>DTS_SHORTDATECENTURYFORMAT 昄是q样的:“1996q??9?#8221;?nbsp; <br>DTS_TIMEFORMAT DTS_TIMEFORMAT  昄是q样的:“下午五时31?2U?#8221;?nbsp; </p> <p>日期和时间格式元素将被替换ؓ实际的日期和旉他们被定义ؓ以下l的字符?nbsp; <br>"d"  一个或两个数字的日期? <br>"dd"  q两个数字的日期。单数天数的前面加一个零? <br>"ddd"  三个字符的星期几的羃写?<br>"dddd"  完整的星期名U?br>"h"   ?2时格式的一位或两位数小时?<br>"hh"   ?2时格式的两位数时.一位数数值前面加一个零?<br>"H"   ?4时格式的一位或两位数小时?br>"HH"   ?4时格式的两位数时。一位数数值前面加一个零<br>"m"  一个或两位数分?br>"mm"  q两个数字的分钟?一位数数值前面加一个零?br>"M"  一个或两个数字的月份数?br>"MM"  q两个数字的月䆾数?一位数数值前面加一个零?<br>"MMM"  q三个字W的月䆾~写?<br>"MMMM"  完整的月份名U?<br>"t"  单字母AM / PM~写Q即上午?#8220;A”昄Q?br>"tt"  q两个字母的AM / PM~写Q即上午?#8220;AM”昄Q?<br>"X"   //Q?<br>"y"  q䆾的最后一个数?(?996q将作ؓ“6”昄). <br>"yy"  最后两位数字的q䆾Q即1996q将作ؓ“96”昄Q?<br>"yyy"  完整的年份(?996q将作ؓ“1996q?#8221;昄Q?</p> <p><br>7、DTM_SETMCCOLOR     //讄日期旉选择器的日历控g颜色Q返回先前的颜色<br>    wParam = (WPARAM)(INT) iColor;<br>    lParam = (LPARAM)(COLORREF) clr;<br>8、DTM_SETMCFONT    //讄日期旉选择器的日历控g字体QfRedraw是是否立即重l?br>    wParam = (WPARAM)(HFONT) hFont;<br>    lParam = (LPARAM) MAKELONG(fRedraw, 0);<br>9、DTM_SETRANGE     //讄旉的最大最?br>    wParam = (WPARAM) flags;<br>    lParam = (LPARAM) lpSysTimeArray;</p> <p>10DTM_SETSYSTEMTIME             //讄旉。参考DTM_GETSYSTEMTIME   <br>    wParam = (WPARAM) flag;<br>    lParam = (LPARAM) lpSysTime;<br></p> <p><br>////////////////////////月历控g<br>1、创?H口cMONTHCAL_CLASS   使用SetWindowPos改变大小<br>2、风|<br>MCS_DAYSTATE     //标记选择的日期。有黑体阴媄<br>MCS_MULTISELECT   //选中范围 <br>MCS_WEEKNUMBERS     //昄周数<br>MCS_NOTODAYCIRCLE    //不圈今天<br>MCS_NOTODAY         //不显CZ?br>MCS_NOSELCHANGEONNAV<br>MCS_NOTRAILINGDATES <br>MCS_SHORTDAYSOFWEEK <br><br>3、通知消息Q?/p> <p>Q?QMCM_GETCOLOR     //获得颜色<br>    wParam = (WPARAM)(INT)iColor;<br>    lParam = 0;</p> <p>iColor的|<br>MCSC_BACKGROUND  //月之间的背景 <br>MCSC_MONTHBK  //背景 <br>MCSC_TEXT  //字体. <br>MCSC_TITLEBK  //标题 <br>MCSC_TITLETEXT //标题<br>MCSC_TRAILINGTEXT  //</p> <p>Q?QMCM_GETCURSEL    //获得当前选中的日?br>    wParam = 0;<br>    lParam = (LPARAM) (LPSYSTEMTIME) lpSysTime;</p> <p>Q?QMCM_GETFIRSTDAYOFWEEK     //获得一个月的第一?br>    wParam = 0;<br>    lParam = 0;</p> <p>Q?QMCM_GETMAXSELCOUNT     //获得最大最时间的范围<br>    wParam = 0;<br>    lParam = 0;</p> <p>Q?QMCM_GETMAXTODAYWIDTH    //获得今天的宽?br>    wParam = 0;<br>    lParam = 0;</p> <p>Q?Q?br>MCM_GETMINREQRECT     //索所需的最尺寸显C在月历控制整整一个月?br>    wParam = 0;<br>    lParam = (LPARAM) (LPRECT) lpRectInfo;</p> <p>Q?QMCM_GETMONTHDELTA   //索滚动月历控制率?滚动速度的月?br>    wParam = 0;<br>    lParam = 0;</p> <p>Q?QMCM_GETMONTHRANGE   //获取最新的信息Q用SYSTEMTIMEl构Q表C月历控件的昄的上限和下限的?br>    wParam = (WPARAM)(DWORD) dwFlag;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lprgSysTimeArray;</p> <p>Q?QMCM_GETRANGE    //索一个月日历控g讄最和最大允许的日期?br>    wParam = 0;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lprgSysTimeArray;</p> <p>Q?0QMCM_GETSELRANGE  //获取最C息,表示日期的上限和下限范围目前q户选择?br>    wParam = 0;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lprgSysTimeArray;</p> <p>Q?1Q?//索作?#8220;今天”指定月历控制日期的信息?br>MCM_GETTODAY<br>    wParam = 0;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lpToday;</p> <p>Q?2QMCM_GETUNICODEFORMAT    //获得格式<br>    wParam = 0;<br>    lParam = 0;</p> <p>Q?3QMCM_HITTEST    //军_了一个月历控刉分是在屏q上的一个特定点<br>    wParam = 0;<br>    lParam = (LPARAM)(PMCHITTESTINFO) pMCHitTest;</p> <p>Q?4QMCM_SETCOLOR   //讄颜色<br>    wParam = (WPARAM)(INT) iColor;<br>    lParam = (LPARAM)(COLORREF) clr;</p> <p>Q?5QMCM_SETCURSEL   //讄选中<br>    wParam = 0;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lpSysTime;</p> <p>Q?6QMCM_SETDAYSTATE     //集目前所有月份的日历控g在一个月内每天可见的状态?br>    wParam = (WPARAM) iMonths;<br>    lParam = (LPARAM)(LPMONTHDAYSTATE) lpDayStateArray;</p> <p>Q?7QMCM_SETFIRSTDAYOFWEEK   //讄W一?br>    wParam = 0;<br>    lParam = (LPARAM)(INT) iDay;</p> <p>Q?8QMCM_SETMAXSELCOUNT    //讄可以选择的最大天?br>    wParam = (WPARAM)(INT) iMax;<br>    lParam = 0;</p> <p>Q?9QMCM_SETMONTHDELTA   //讄滚动的月?br>    wParam = (WPARAM)(INT) iDelta;<br>    lParam = 0;</p> <p>Q?0QMCM_SETRANGE   //讄最大最的选择范围<br>    wParam = (WPARAM)(SHORT) fWhichLimit;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lprgSysTimeArray;</p> <p>(21)MCM_SETSELRANGE   //讄了一个月的日历控件到一个指定日期范围内选择<br>    wParam = 0;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lprgSysTimeArray;</p> <p><br>(22)MCM_SETTODAY    //讄今天<br>    wParam = 0;<br>    lParam = (LPARAM)(LPSYSTEMTIME) lpSysTime;</p> <p>Q?3QMCM_SETUNICODEFORMAT    //讄格式<br>    wParam = (WPARAM)(BOOL)fUnicode;<br>    lParam = 0;</p> <p>Q?4Q?MCM_GETCALENDARBORDER   //获得Ҏ<br></p> <img src ="http://www.shnenglu.com/Cass/aggbug/143928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Cass/" target="_blank">Yu</a> 2011-04-11 11:37 <a href="http://www.shnenglu.com/Cass/articles/143928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有了Q先q的 多线E?Q?/title><link>http://www.shnenglu.com/Cass/articles/143927.html</link><dc:creator>Yu</dc:creator><author>Yu</author><pubDate>Mon, 11 Apr 2011 03:20:00 GMT</pubDate><guid>http://www.shnenglu.com/Cass/articles/143927.html</guid><wfw:comment>http://www.shnenglu.com/Cass/comments/143927.html</wfw:comment><comments>http://www.shnenglu.com/Cass/articles/143927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Cass/comments/commentRss/143927.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Cass/services/trackbacks/143927.html</trackback:ping><description><![CDATA[<p><span style="FONT-FAMILY: Comic Sans MS">标题采用《WindowsE序设计》精彩的一条名aQ多么激动h心的时刻啊。多U程的意义不仅在于开工作业一费旉的工作,一个进E可以包含一个或多个应用E序域,而一个应用程序域又可以包含一个或多个U程。这样实际上q当于在进E和U程之间增加了一个新的安全边界。无论在同一个进E之内还是在不同的进E之_每个应用E序域之间都是相互无关的Q这些不同的应用E序域之间只能通过q程通讯来实现消息和对象的传递?br><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>使得不同d之间的协调操作与q行、数据的交互、资源的分配{问题更加易于解冟?/span></span><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>使得不同d之间的协调操作与q行、数据的交互、资源的分配{问题更加易于解冟?/span></span><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>使得不同d之间的协调操作与q行、数据的交互、资源的分配{问题更加易?/span></span><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/cass/Thread.gif" width=580 height=201><br><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>使得不同d之间的协调操作与q行、数据的交互、资源的分配{问题更加易于解冟?br>下面介绍ZWindows多线E的一些用法:<br>创徏Q?br>hThread = CreateThread (&security_attributesQ忽略NULLQ? dwStackSize(初始化堆栈默认O), ThreadProc(处理函数),pParamQ额外数据), dwFlagsQ挂LECREATE_SUSPENDENQ? &idThread(U程ID)) ;</span></span></span></p> <p><span style="FONT-FAMILY: Comic Sans MS"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>单的创徏ҎQ?br>hThread = _beginthread (ThreadProc, uiStackSize, pParam) ;  //创徏<br>void __cdecl ThreadProc (void * pParam) ;   //处理函数<br>_endthread () ;     //l束U程</span></span></span></p> <p><span style="FONT-FAMILY: Comic Sans MS"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>每个q程中访问界资源的那段代码UCؓ临界?br>CRITICAL_SECTION cs ;<br>InitializeCriticalSection (&cs) ;     //初始?br>EnterCriticalSection (&cs) ;     //q入临界?br>LeaveCriticalSection (&cs) ;      //d临界?br>DeleteCriticalSection (&cs) ;     //删除临界?/span></span></span></p> <p><span style="FONT-FAMILY: Comic Sans MS"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>PostMessage<br>该函数将一个消息放入(寄送)C指定H口创徏的线E相联系消息队列里,不等待线E处理消息就q回Q是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得?br>函数原型QB00L PostMessageQHWND hWndQUINT MsgQWPARAM wParamQLPARAM lParamQ?br>事g对象Q?br>Q?Q、hEvent = CreateEvent ( &sa, fManual, fInitial, pszName) ;<br>HANDLE CreateEvent(<br>LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属?br>BOOL bManualReset, // 复位方式<br>BOOL bInitialState, // 初始状?br>LPCTSTR lpName // 对象名称<br>);<br> bManualResetQ?br>  [输入]指定事件对象创建成手动复原q是自动复原。如果是TRUEQ那么必ȝResetEvent函数来手工将事g的状态复原到无信L态。如果设|ؓFALSEQ当事g被一个等待线E释放以后,pȝ会自动事件状态复原ؓ无信L?/span></span></span></p> <span style="FONT-FAMILY: Comic Sans MS"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span> <p><br>bInitialStateQ?br>  [输入]指定事g对象的初始状态。如果ؓTRUEQ初始状态ؓ有信L态;否则为无信号状态?/p> <p> </p> <p>Q?Q、SetEvent (hEvent) ;    //讄事g的状态的标记<br>Q?QResetEvent (hEvent) ;     //复位事g<br>Q?QWaitForSingleObject (hEvent, dwTimeOut) ;      //{待</span></span></span></p> <img src ="http://www.shnenglu.com/Cass/aggbug/143927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Cass/" target="_blank">Yu</a> 2011-04-11 11:20 <a href="http://www.shnenglu.com/Cass/articles/143927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MDI 多文?/title><link>http://www.shnenglu.com/Cass/articles/143923.html</link><dc:creator>Yu</dc:creator><author>Yu</author><pubDate>Mon, 11 Apr 2011 03:03:00 GMT</pubDate><guid>http://www.shnenglu.com/Cass/articles/143923.html</guid><wfw:comment>http://www.shnenglu.com/Cass/comments/143923.html</wfw:comment><comments>http://www.shnenglu.com/Cass/articles/143923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Cass/comments/commentRss/143923.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Cass/services/trackbacks/143923.html</trackback:ping><description><![CDATA[<p>虽说现在的应用程序普遍用标{Ş式,但是多文档依然作为文档编辑重要Ş式。例?ps 、vc6 {?br>介绍一些用法:<br>1、框架窗口:创徏一个客户区H口。类名:MDICLIENT<br>   文档H口Q创建:CreateWindowQ?..CLIENTCREATESTRUCTQ?br>typedef struct tagCLIENTCREATESTRUCT {  <br>    HANDLE hWindowMenu;       //要加入文档列表的子菜单的句柄Q文档列表菜?br>    UINT   idFirstChild;  //与文档列表中的第一个文档窗口相兌的菜单ID<br>} CLIENTCREATESTRUCT;</p> <p>2?br>typedef struct tagMDICREATESTRUCT { // mdic <br>    LPCTSTR szClass; <br>    LPCTSTR szTitle; <br>    HANDLE  hOwner; <br>    int     x; <br>    int     y; <br>    int     cx; <br>    int     cy; <br>    DWORD   style; <br>    LPARAM  lParam; <br>} MDICREATESTRUCT; </p> <p>要有一个显C文档列表的菜单<br>3、消息:<br>ȝ口:不处理的消息Qreurn DelFrameProc(hwnd,hwndClient,message,wParam,lParam);<br>子文档窗口:不处理的消息Q?return DefMDIChildProc (hwnd, message, wParam, lParam) ;<br>(1)<br>WM_MDICREATE      //应用E序通过发?WM_MDICREATE创徏一个文?br>wParam = 0;                                     // not used; must be zero <br>lParam = (LPARAM) (LPMDICREATESTRUCT) lpmdic;   // creation data <br>(2)<br>WM_MDIGETACTIVE   //客户区通过发送WM_MDIGETACTIVE获得zd子窗口的句柄<br>wParam = 0;                      // not used; must be zero <br>lParam = (LPBOOL) lpfMaximized;  // optional pointer to maximized state flag </p> <p>(3)<br>WM_QUERYENDSESSION     //其lParam参数可以区分是否关闭<br>nSource = (UINT) wParam;    // 未用<br>fLogOff = lParam    <br>q回true表示l结Qfalse表示未终l?/p> <p>Q?Q?br>WM_MDIDESTROY      //发送给客户区结束子文档<br>wParam = (WPARAM) (HWND) hwndChild; // handle to child to close <br>lParam = 0;   </p> <p><br>Q?Q?br>WM_MDITILE     //以^铺方式重新排列文档?br>wParam = (WPARAM) (UINT) fuTile; // tiling flag <br>lParam = 0; </p> <p>(6)<br>WM_MDICASCADE      //以层叠方式重新排列文?br>wParam = (WPARAM) (UINT) fuCascade;  // cascade flag <br>lParam = 0;  </p> <p>(7)<br>WM_MDIICONARRANGE    //重新排列所有最化的文?br>wParam = 0; // not used; must be zero <br>lParam = 0; // not used; must be zero</p> <p>(8)当窗口变成活动或非活动的Q都接收此此消息<br>WM_MDIACTIVATE   //ȝ口接收时Q得C个活动子H口<br>// Message sent to MDI client <br>wParam = (WPARAM) (HWND) hwndChildAct; // 讑֮zd子窗口的句柄 <br>lParam = 0;                            // not used; must be zero <br> //子文档窗口接收时Q?br>// Message received by MDI child <br>hwndChildDeact = (HWND) wParam;        // 失去zd的窗?<br>hwndChildAct = (HWND) lParam;          // 接受zd的窗?</p> <p><br>Q?Q?br>WM_MDISETMENU    //讄ȝ口的菜单?br>wParam = (WPARAM) (HMENU) hmenuFrame;  // handle to frame menu <br>lParam = (LPARAM) (HMENU) hmenuWindow; // handle to Window menu Q加入新文档列表的菜?br>Windows会在该菜单项上自动添加?/p> <p>Q?0Q注意:像WM_CHILDACTIVATE 、WM_GETMINMAXINFO 、WM_MENUCHAR 、WM_MOVE 、WM_SETFOCUS 、WM_SIZE 和WM_SYSCOMMAND。要传给DefMDIChildProc处理。故Q在q些消息后用breakQ而不return?/p> <p>Q?1Q不常用到的<br>WM_MDIRESTORE = $0223;  //E序 发送此消息lMDI客户H口让子H口从最大最化恢复到原来大?br>WM_MDINEXT = $0224;   //E序 发送此消息lMDI客户H口ȀzM一个或前一个窗?br>WM_MDIMAXIMIZE = $0225;   //E序发送此消息lMDI客户H口来最大化一个MDI子窗口;</p> <p><br>4、加速键的消息@?br>    while (GetMessage (&msg, NULL, 0, 0))<br>     {<br>          if (!TranslateMDISysAccel (hwndClient, &msg) &&<br>              !TranslateAccelerator (hwndFrame, hAccel, &msg))<br>          {<br>               TranslateMessage (&msg) ;<br>               DispatchMessage (&msg) ;<br>          }<br>     }<br><br>/////////才掌握,发现现在大多数公叔R弃用啦。可惜啊Q可惜啊?/p> <img src ="http://www.shnenglu.com/Cass/aggbug/143923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Cass/" target="_blank">Yu</a> 2011-04-11 11:03 <a href="http://www.shnenglu.com/Cass/articles/143923.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.shangzhew.cn" target="_blank">þ99Ʒþþ</a>| <a href="http://www.mayishenggou.cn" target="_blank">ݺɫþۺ_ </a>| <a href="http://www.hbdmw.cn" target="_blank">˾þþùۿëƬ</a>| <a href="http://www.gods2.cn" target="_blank">AëƬþ</a>| <a href="http://www.txslcc.cn" target="_blank">99ȾƷþֻоƷ</a>| <a href="http://www.jzyuan.cn" target="_blank">ҹƷþþþþӰ777</a>| <a href="http://www.xinhuahz.cn" target="_blank">ݺݾƷþþĻ</a>| <a href="http://www.bqb2.cn" target="_blank">Ʒþһ</a>| <a href="http://www.sh-richardmille.cn" target="_blank">ŷҹƷþþþþ˳</a>| <a href="http://www.ajemy.cn" target="_blank">պһþ</a>| <a href="http://www.fc27.cn" target="_blank">2021˾Ʒþ</a>| <a href="http://www.bxauomc.cn" target="_blank">ھƷþþþӰԺ˾</a>| <a href="http://www.y6smog.cn" target="_blank">Ʒþþþþù</a>| <a href="http://www.918gn.cn" target="_blank">ۺϾþùһ鶹</a>| <a href="http://www.r234.cn" target="_blank">Ʒþþþþù</a>| <a href="http://www.micgroup.cn" target="_blank">avԾþþþa</a>| <a href="http://www.mir716.cn" target="_blank">þùƷҰAV</a>| <a href="http://www.aizhei.cn" target="_blank">þþþĸ</a>| <a href="http://www.gsm777.cn" target="_blank">þɬۺ</a>| <a href="http://www.sc-cits.com.cn" target="_blank">þ99޸ۿҳ</a>| <a href="http://www.78cbg.cn" target="_blank">Ʒ99þþþþլС˵</a>| <a href="http://www.shufa520.cn" target="_blank">þۺ϶㼤þ</a>| <a href="http://www.uushipin.cn" target="_blank">þù߳׽ѹۿ</a>| <a href="http://www.f4home.cn" target="_blank">þ޾Ʒ벥</a>| <a href="http://www.jjj41.cn" target="_blank">ձƷþþþĻ</a>| <a href="http://www.xiaoruhua.cn" target="_blank">ۺɫ77777þ</a>| <a href="http://www.santoncc.cn" target="_blank">һþƵ</a>| <a href="http://www.jianluanwang.cn" target="_blank">þþ޾Ʒһ</a>| <a href="http://www.xixirt.cn" target="_blank">þۺĻ</a>| <a href="http://www.fjqcbks.cn" target="_blank">ƷŮͬþþþõӰԺ </a>| <a href="http://www.3344pltn.cn" target="_blank">þùƵ</a>| <a href="http://www.604664.cn" target="_blank">žžþþƷר</a>| <a href="http://www.xileshun.cn" target="_blank"> þۺϺݺۺϾþü </a>| <a href="http://www.himalayasmuseum.com.cn" target="_blank">ɫվ޷ľþò</a>| <a href="http://www.disidai.cn" target="_blank">޹ۺϾþ</a>| <a href="http://www.2008qb.cn" target="_blank">þӰۺ</a>| <a href="http://www.iptid.com.cn" target="_blank">þɬۺ</a>| <a href="http://www.hrbtwlh.cn" target="_blank">þþƷ2020</a>| <a href="http://www.enld.cn" target="_blank">þþŷղ </a>| <a href="http://www.nba592.cn" target="_blank">99þҹɫƷվ</a>| <a href="http://www.h21jc.cn" target="_blank">뾫ƷþɪӰ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>