锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久毛片免费看,超级碰久久免费公开视频,女同久久http://www.shnenglu.com/aaxron/category/15296.html璁板綍淇鐨勫嵃璁? zh-cnThu, 18 May 2017 07:06:27 GMTThu, 18 May 2017 07:06:27 GMT60MoveWindow() SetWindowPos()鐨勫尯鍒笌鑱旂郴http://www.shnenglu.com/aaxron/archive/2017/05/17/214944.html澶╀笅澶╀笅Wed, 17 May 2017 10:56:00 GMThttp://www.shnenglu.com/aaxron/archive/2017/05/17/214944.htmlhttp://www.shnenglu.com/aaxron/comments/214944.htmlhttp://www.shnenglu.com/aaxron/archive/2017/05/17/214944.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/214944.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/214944.htmlMoveWindow() SetWindowPos()鐨勫尯鍒笌鑱旂郴
杞嚜http://www.cnblogs.com/songliquan/p/3359002.html

鍏堢湅MoveWindow()鍑芥暟錛岀敤浜庢敼鍙樼獥鍙g殑浣嶇疆鍜屽昂瀵革紝瀵逛簬欏跺眰紿楀彛錛屾寜鐓у睆騫曞榻愪笌宸︿笂瑙掞紝瀵逛簬瀛愮獥鍙o紝鍒欏榻愪笌鐖剁獥鍙g殑宸︿笂瑙掋?br />
BOOL MoveWindow( HWND hWnd,
int x, int y, int nWidth, int nHeight,BOOL bRepaint = TRUE);
鍙傛暟hWnd琛ㄧず紿楀彛鍙ユ焺錛?br />鍙傛暟x,y琛ㄧず紿楀彛鐨勫乏涓婅璧風(fēng)偣錛?br />鍙傛暟nwidth錛宯Height 琛ㄧず紿楀彛楂樺害鍜屽搴︼紱
鏈鍚庝竴涓猙Repaint琛ㄧず鏄惁绔嬪嵆閲嶇粯銆備負(fù)true鏃剁郴緇熶細(xì)绔嬪嵆鍙戦乄M_PAINT鍒扮獥鍙g▼搴忥紙浼?xì)璋冪敤UpdateWindow()鍑芥暟錛夛紝涓篺alse鏃朵笉浼?xì)鍙戠敓鋼Q浣曠被鍨嬬殑閲嶇粯鎿嶄綔銆?br />
MoveWindow浼?xì)缁櫧H楀彛鍙戦乄M_WINDOWPOSCHANGING錛學(xué)M_WINDOWPOSCHANGED錛學(xué)M_MOVE錛學(xué)M_SIZE鍜學(xué)M_NCCALCSIZE娑堟伅銆?br />
鎺ヤ笅鏉ョ湅SetWindowPos(),榪欎釜鍑芥暟鍚屾牱鐢ㄦ潵瀹炵幇紿楀彛縐誨姩鎿嶄綔錛屽彧涓嶈繃鍔熻兘鏇村涓鐐廣?br />
BOOL SetWindowPos(HWND hWnd,
const CWnd* pWndInsertAfter, int x, int y,int cx, int cy, UINT nFlags);
絎竴涓弬鏁版槸紿楀彛鍙ユ焺錛?br />絎簩涓弬鏁版槸紿楀彛鐨刏 order錛屽氨鏄湁澶氫釜紿楀彛鏃訛紝鏈獥鍙f樉紺虹殑欏哄簭錛屾渶涓婇潰鎴栬呮渶涓嬮潰錛屽彲閫夊弬鏁版湁:HWND_BOTTOM,HWND_NOTOPMOST,HWND_TOP,HWND_TOPMOST.
HWND_BOTTOM錛氬皢紿楀彛緗簬Z搴忕殑搴曢儴銆傚鏋滃弬鏁癶Wnd鏍囪瘑浜?jiǎn)涓涓《灞傜獥鍙o紝鍒欑獥鍙eけ鍘婚《綰т綅緗紝騫朵笖琚疆鍦ㄥ叾浠栫獥鍙g殑搴曢儴銆?nbsp; 銆銆 
HWND_NOTOPMOST錛氬皢紿楀彛緗簬鎵鏈夐潪欏跺眰紿楀彛涔嬩笂錛堝嵆鍦ㄦ墍鏈夐《灞傜獥鍙d箣鍚庯級(jí)銆傚鏋滅獥鍙e凡緇忔槸闈為《灞傜獥鍙e垯璇ユ爣蹇椾笉璧蜂綔鐢ㄣ?nbsp; 銆銆 
HWND_TOP:灝嗙獥鍙g疆浜嶼搴忕殑欏墮儴銆?nbsp; 銆銆 
HWND_TOPMOST:灝嗙獥鍙g疆浜庢墍鏈夐潪欏跺眰紿楀彛涔嬩笂銆傚嵆浣跨獥鍙f湭琚縺媧葷獥鍙d篃灝嗕繚鎸侀《綰т綅緗?nbsp;
鎺ヤ笅鏉ュ洓涓弬鏁版槸紿楀彛鐨勪綅緗拰灝哄銆?br />鏈鍚庝竴涓弬鏁皀Flags鏄獥鍙f樉紺烘柟寮忕殑鏍囧織錛岃繖涓弬鏁板緢澶氾紝鍙互緇勫悎浣跨敤錛岃緇嗗涓嬶細(xì)
SWP_ASNCWINDOWPOS錛氬鏋滆皟鐢ㄨ繘紼嬩笉鎷ユ湁紿楀彛錛岀郴緇熶細(xì)鍚戞嫢鏈夌獥鍙g殑綰跨▼鍙戝嚭闇姹傘傝繖灝遍槻姝㈣皟鐢ㄧ嚎紼嬪湪鍏朵粬綰跨▼澶勭悊闇姹傜殑鏃跺欏彂鐢熸閿併?nbsp; 銆銆
SWP_DEFERERASE錛氶槻姝駭鐢焀M_SYNCPAINT娑堟伅銆?nbsp; 銆銆
SWP_DRAWFRAME錛氬湪紿楀彛鍛ㄥ洿鐢諱竴涓竟妗嗭紙瀹氫箟鍦ㄧ獥鍙g被鎻忚堪涓級(jí)銆?nbsp; 銆銆
SWP_FRAMECHANGED錛氱粰紿楀彛鍙戦乄M_NCCALCSIZE娑堟伅錛屽嵆浣跨獥鍙e昂瀵告病鏈夋敼鍙樹篃浼?xì)鍙戦佽娑堟伅銆傚鏋滄湭鎸囧畾榪欎釜鏍囧織錛屽彧鏈夊湪鏀瑰彉浜?jiǎn)绐楀彛灏哄鏃舵墠鍙戦乄M_NCCALCSIZE銆?nbsp;
SWP_HIDEWINDOW;闅愯棌紿楀彛銆?nbsp;
SWP_NOACTIVATE錛氫笉嬋媧葷獥鍙c傚鏋滄湭璁劇疆鏍囧織錛屽垯紿楀彛琚縺媧伙紝騫惰璁劇疆鍒板叾浠栨渶楂樼駭紿楀彛鎴栭潪鏈楂樼駭緇勭殑欏墮儴錛堟牴鎹弬鏁癶WndlnsertAfter璁劇疆錛夈?nbsp;
SWP_NOCOPYBITS錛氭竻闄ゅ鎴峰尯鐨勬墍鏈夊唴瀹廣傚鏋滄湭璁劇疆璇ユ爣蹇楋紝瀹㈡埛鍖虹殑鏈夋晥鍐呭琚繚瀛樺茍涓斿湪紿楀彛灝哄鏇存柊鍜岄噸瀹氫綅鍚庢嫹璐濆洖瀹㈡埛鍖恒?nbsp;
SWP_NOMOVE錛氱淮鎸佸綋鍓嶄綅緗紙蹇界暐X鍜孻鍙傛暟錛夈?nbsp; 銆銆
SWP_NOOWNERZORDER錛氫笉鏀瑰彉z搴忎腑鐨勬墍鏈夎呯獥鍙g殑浣嶇疆銆?nbsp;
SWP_NOREDRAW:涓嶉噸鐢繪敼鍙樼殑鍐呭銆傚鏋滆緗簡(jiǎn)榪欎釜鏍囧織錛屽垯涓嶅彂鐢熶換浣曢噸鐢誨姩浣溿傞傜敤浜庡鎴峰尯鍜岄潪瀹㈡埛鍖猴紙鍖呮嫭鏍囬鏍忓拰婊氬姩鏉★級(jí)鍜屼換浣曠敱浜庣獥鍥炵Щ鍔ㄨ岄湶鍑虹殑鐖剁獥鍙g殑鎵鏈夐儴鍒嗐傚鏋滆緗簡(jiǎn)榪欎釜鏍囧織錛屽簲鐢ㄧ▼搴忓繀欏繪槑紜湴浣跨獥鍙f棤鏁堝茍閲嶇敾紿楀彛鐨勪換浣曢儴鍒嗗拰鐖剁獥鍙i渶瑕侀噸鐢葷殑閮ㄥ垎銆?nbsp;
SWP_NOREPOSITION錛涗笌SWP_NOOWNERZORDER鏍囧織鐩稿悓銆?nbsp; 銆   SWP_NOSENDCHANGING錛氶槻姝㈢獥鍙f帴鏀禬M_WINDOWPOSCHANGING娑堟伅銆?nbsp;
SWP_NOSIZE錛氱淮鎸佸綋鍓嶅昂瀵革紙蹇界暐cx鍜孋y鍙傛暟錛夈?nbsp;
SWP_NOZORDER錛氱淮鎸佸綋鍓峑搴忥紙蹇界暐hWndlnsertAfter鍙傛暟錛夈?nbsp;
SWP_SHOWWINDOW錛氭樉紺虹獥鍙c?br />娉ㄦ剰浜嬮」錛?br />浣跨敤SetWindowPos()濡傛灉璁劇疆浜?jiǎn)SWP_SHOWWINDOWS鎴栬匰WP_HIDEWINDOW錛岄偅涔堢獥鍙e皢涓嶈兘琚Щ鍔ㄥ拰鏀瑰彉澶у皬錛屾垜浣跨敤鏃跺氨鏄緗簡(jiǎn)SWP_SHOWWINDOW,浠庤屽鑷翠笉鑳介噸緇樿儗鏅?br />
涓よ呯殑姣旇緝錛?br />涓よ呴兘鑳藉疄鐜扮Щ鍔ㄥ拰鏀瑰彉紿楀彛澶у皬銆?br />
MoveWindow()鍔熻兘姣旇緝鍗曚竴錛屽彧鑳界Щ鍔ㄥ拰鏀瑰彉紿楀彛澶у皬錛岃孲etWindowPos()鍙互璁劇疆鏇村鐨勫弬鏁幫紝瀹炵幇Zorder鍙?qiáng)鏄窘C烘柟寮忔爣蹇椼?br />
MoveWindow()鍙戦乄M_WINDOWPOSCHANGING錛學(xué)M_WINDOWPOSCHANGED錛學(xué)M_MOVE錛學(xué)M_SIZE鍜學(xué)M_NCCALCSIZE絳夋秷鎭埌紿楀彛錛孲etWindowPos()鍙彂閫乄M_WINDOWPOSCHANGED娑堟伅鍒扮獥鍙c傛墍浠ヨ濡傛灉闇瑕佸彂閫佹洿澶氭秷鎭椂榪樻槸浣跨敤MoveWindow()鐨勫ソ銆?/span>

澶╀笅 2017-05-17 18:56 鍙戣〃璇勮
]]>
Xtreme ToolKit 鏃ュ織鎺т歡http://www.shnenglu.com/aaxron/archive/2017/05/16/214936.html澶╀笅澶╀笅Tue, 16 May 2017 03:06:00 GMThttp://www.shnenglu.com/aaxron/archive/2017/05/16/214936.htmlhttp://www.shnenglu.com/aaxron/comments/214936.htmlhttp://www.shnenglu.com/aaxron/archive/2017/05/16/214936.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/214936.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/214936.html

/Files/aaxron/OppoTestX.rar

澶╀笅 2017-05-16 11:06 鍙戣〃璇勮
]]>
[杞琞VC涓父鐢ㄧ殑鏂囨。綾伙紝瑙嗗浘綾伙紝妗嗘灦綾伙紝搴旂敤紼嬪簭綾伙紝鑷畾涔夌被涓幏鍙栧叾瀹冨洓涓被鐨勬柟娉?http://www.shnenglu.com/aaxron/archive/2016/05/30/213608.html澶╀笅澶╀笅Mon, 30 May 2016 06:02:00 GMThttp://www.shnenglu.com/aaxron/archive/2016/05/30/213608.htmlhttp://www.shnenglu.com/aaxron/comments/213608.htmlhttp://www.shnenglu.com/aaxron/archive/2016/05/30/213608.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/213608.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/213608.html[杞琞VC涓父鐢ㄧ殑鏂囨。綾伙紝瑙嗗浘綾伙紝妗嗘灦綾伙紝搴旂敤紼嬪簭綾伙紝鑷畾涔夌被涓幏鍙栧叾瀹冨洓涓被鐨勬柟娉?nbsp;
A: 
GET App 
   AfxGetInstanceHandle() 
   AfxGetApp() 
GET Frame
->View->Document 
    SDI   AfxGetMainWnd()
->GetActiveView()->GetDocument() 
    MDI   AfxGetMainWnd()
->MDIGetActive()->GetActiveView()->GetDocument() 
GET Menu 
     CMenu 
*pMenu=AfxGetApp()->m_pMainWnd->GetMenu(); 
GET ToolBar錛孲tatusBar 
      (CMainFrame 
*)GetParent()->m_wndToolBar; 
      (CMainFrame 
*)GetParent()->m_wndStatusBar; 
      CStatusBar 
* pStatusBa=(CStatusBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR); 
      CToolBar 
* pToolBar=(CtoolBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR); 
Get View from Document 
      GetFirstViewPosition 鍜?nbsp;GetNextView 鍑芥暟寰楀埌鎸囬拡銆?nbsp;
鏈鍚庢彁閱? 
    鍦ㄦ彁鍙栧埌鍚勪釜鍙ユ焺涔嬪悗錛屽洜涓哄垵嬈℃彁鍙栫殑閮芥槸鏍囧噯綾誨彞鏌勶紝鎵浠ワ紝鍦ㄤ嬌鐢ㄦ椂瑕佹敞鎰忓皢鏍囧噯鍙ユ焺杞崲鎴愯嚜宸辯殑綾葷殑鍙ユ焺銆?br />    ((CMyApp
*)AfxGetApp())->XXXX錛堬級(jí)錛?/span>//榪欑殑xxxx()灝辨槸浣犲畾涔夌殑綾諱腑闂寸殑鎴愬憳銆?/span>

**********************************************************************************************************
1) 鍦╒iew涓幏寰桪oc鎸囬拡 
2) 鍦ˋpp涓幏寰桵ainFrame鎸囬拡 
3) 鍦╒iew涓幏寰桵ainFrame鎸囬拡 
4) 鑾峰緱View錛堝凡寤虹珛錛夋寚閽?nbsp;
5) 鑾峰緱褰撳墠鏂囨。鎸囬拡 
6) 鑾峰緱鐘舵佹爮涓庡伐鍏鋒爮鎸囬拡 
7) 鑾峰緱鐘舵佹爮涓庡伐鍏鋒爮鍙橀噺 
8) 鍦∕ainframe鑾峰緱鑿滃崟鎸囬拡 
9) 鍦ㄤ換浣曠被涓幏寰楀簲鐢ㄧ▼搴忕被 
10) 浠庢枃妗g被鍙栧緱瑙嗗浘綾葷殑鎸囬拡(1
11) 鍦ˋpp涓幏寰楁枃妗fā鏉挎寚閽?nbsp;
12) 浠庢枃妗fā鏉胯幏寰楁枃妗g被鎸囬拡 
13) 鍦ㄦ枃妗g被涓幏寰楁枃妗fā鏉挎寚閽?nbsp;
14) 浠庢枃妗g被鍙栧緱瑙嗗浘綾葷殑鎸囬拡(2
15) 浠庝竴涓鍥劇被鍙栧緱鍙︿竴瑙嗗浘綾葷殑鎸囬拡 

VC涓紪紼嬪浜庡垰鍒氬紑濮嬪涔?fàn)鐨勫悓瀛﹀Q屾渶澶х殑闅滅鍜岄棶棰樺氨鏄秷鎭満鍒跺拰鎸囬拡鑾峰彇涓庢搷浣溿傚叾瀹炶繖浜涘唴瀹瑰熀鏈笂鏄瘡鏈琕C瀛︿範(fàn)宸ュ叿涔︿笂蹇呰鐨勫唴瀹癸紝鑰屼笖閫氳繃MSDN寰堝闂閮借兘瑙e喅銆備笅闈㈡枃瀛椾富瑕佹槸涓漢鍦ㄧ紪紼嬩腑鎸囬拡浣跨敤鐨勪竴浜涗綋浼?xì)锛岃鐨勪笉褰撶殑鍦版柟璇锋寚姝c備竴鑸垜浠嬌鐢ㄧ殑妗嗘灦鏄疺C鎻愪緵鐨刉izard鐢熸垚鐨凪FC App Wizard(exe)妗嗘灦錛?nbsp;
鏃犺鏄鏂囨。榪樻槸鍗曟枃妗o紝閮藉瓨鍦ㄦ寚閽堣幏鍙栧拰鎿嶄綔闂銆備笅闈㈣繖鑺傚唴瀹逛富瑕佹槸涓鑸殑妗嗘灦錛岀劧鍚庡啀璁插綰跨▼涓殑鎸囬拡浣跨敤銆備嬌鐢ㄥ埌鐨勭被闇瑕佸寘鍚搷搴旂殑澶存枃浠躲傞鍏堜竴鑸幏寰楁湰綾?瑙嗭紝鏂囨。錛屽璇濇閮芥敮鎸?瀹炰緥鎸囬拡this錛岀敤this鐨勭洰鐨勶紝涓昏鍙互閫氳繃綾諱腑鐨勫嚱鏁板悜鍏朵粬綾繪垨鑰呭嚱鏁頒腑鍙戞寚閽堬紝浠ヤ究浜庡湪闈炴湰綾諱腑鎿嶄綔鍜屼嬌鐢ㄦ湰綾諱腑鐨?nbsp;
鍔熻兘銆?nbsp;

1錛?nbsp;鍦╒iew涓幏寰桪oc鎸囬拡 CYouSDIDoc *pDoc=GetDocument();涓涓鍙兘鏈変竴涓枃妗c?nbsp;
2) 鍦ˋpp涓幏寰桵ainFrame鎸囬拡 
CWinApp 涓殑 m_pMainWnd鍙橀噺灝辨槸MainFrame鐨勬寚閽?nbsp;
涔熷彲浠ワ細(xì) CMainFrame 
*pMain =(CMainFrame *)AfxGetMainWnd(); 
3) 鍦╒iew涓幏寰桵ainFrame鎸囬拡 CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd; 
4) 鑾峰緱View錛堝凡寤虹珛錛夋寚閽圕youView *pView=(CyouView *)pMain->GetActiveView(); 
5) 鑾峰緱褰撳墠鏂囨。鎸囬拡 CDocument * pCurrentDoc =(CFrameWnd *)m_pMainWnd->GetActiveDocument(); 
6) 鑾峰緱鐘舵佹爮涓庡伐鍏鋒爮鎸囬拡 CStatusBar * pStatusBar錛?CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR); 
CToolBar 
* pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR); 

7) 濡傛灉妗嗘灦涓姞鍏ュ伐鍏鋒爮鍜岀姸鎬佹爮鍙橀噺榪樺彲浠ヨ繖鏍?nbsp;
(CMainFrame 
*)GetParent()->m_wndToolBar; 
(CMainFrame 
*)GetParent()->m_wndStatusBar; 

8) 鍦∕ainframe鑾峰緱鑿滃崟鎸囬拡 
CMenu 
*pMenu=m_pMainWnd->GetMenu(); 

9) 鍦ㄤ換浣曠被涓幏寰楀簲鐢ㄧ▼搴忕被 
鐢∕FC鍏ㄥ眬鍑芥暟AfxGetApp()鑾峰緱銆?nbsp;

10) 浠庢枃妗g被鍙栧緱瑙嗗浘綾葷殑鎸囬拡 
CDocument綾繪彁渚涗簡(jiǎn)涓や釜鍑芥暟鐢ㄤ簬瑙嗗浘綾葷殑瀹氫綅錛?nbsp;
GetFirstViewPosition()鍜孏etNextView() 
virtual POSITION GetFirstViewPosition() const
virtual CView* GetNextView(POSITION& rPosition) const

娉ㄦ剰錛欸etNextView()鎷彿涓殑鍙傛暟鐢ㄧ殑鏄紩鐢ㄦ柟寮忥紝鍥犳鎵ц鍚庡煎彲鑳芥敼鍙樸?nbsp;
GetFirstViewPosition()鐢ㄤ簬榪斿洖絎竴涓鍥句綅緗紙榪斿洖鐨勫茍闈炶鍥劇被鎸囬拡錛岃屾槸涓涓狿OSITION綾誨瀷鍊鹼級(jí)錛孏etNextView()鏈変袱涓姛鑳斤細(xì)榪斿洖涓嬩竴涓鍥劇被鐨勬寚閽堜互鍙?qiáng)鐢ㄥ紩鐢ㄨ皟鐢ㄧ殑鏂瑰紡鏉ユ敼鍙樹紶鍏ョ殑POSITION綾誨瀷鍙傛暟鐨勫箋傚緢鏄庢樉錛屽湪Test紼嬪簭涓紝鍙湁涓涓鍥劇被錛屽洜姝ゅ彧闇灝嗚繖涓や釜鍑芥暟璋冪敤涓嬈″嵆鍙緱鍒癈TestView鐨勬寚閽堝涓嬶紙闇瀹氫箟涓涓狿OSITION緇撴瀯鍙橀噺鏉ヨ緟鍔╂搷浣滐級(jí)錛?nbsp;
CTestView
* pTestView; 
POSITION pos
=GetFirstViewPosition(); 
pTestView
=GetNextView(pos); 

榪欐牱錛屼究鍙埌浜?jiǎn)CTestView綾葷殑鎸囬拡pTestView.鎵ц瀹屽嚑鍙ュ悗錛屽彉閲弍os
=NULL,鍥犱負(fù)娌℃湁涓嬩竴涓鍥劇被錛岃嚜鐒朵篃娌℃湁涓嬩竴涓鍥劇被鐨凱OSITION.浣嗘槸榪欏嚑鏉¤鍙ュお綆鍗曪紝涓嶅叿鏈夊お寮虹殑閫氱敤鎬у拰瀹夊叏鐗瑰緛錛涘綋璞″墠闈㈣鐨勯偅鏍鳳紝褰撹鍦ㄥ涓鍥句負(fù)涓繑鍥炴煇涓寚瀹氱被鐨勬寚閽堟椂錛屾垜浠渶瑕侀亶鍘嗘墍鏈夎鍥劇被錛岀洿鍒版壘鍒版寚瀹氱被涓烘銆傚垽鏂竴涓被鎸囬拡鎸囧悜鐨勬槸鍚︽煇涓被鐨勫疄渚嬫椂錛屽彲鐢↖sKindOf()鎴愬憳鍑芥暟鏃惰媯(gè)鏌ワ紝濡傦細(xì) 
pView
->IsKindOf(RUNTIME_CLASS(CTestView)); 
鍗沖彲媯(gè)鏌View鎵鎸囨槸鍚︽槸CTestView綾匯?nbsp;

鏈変簡(jiǎn)浠ヤ笂鍩虹錛屾垜浠凡緇忓彲浠ヤ粠鏂囨。綾誨彇寰椾換浣曠被鐨勬寚閽堛備負(fù)浜?jiǎn)鏂逛究锛屾垜浠瑸畣鍏朵綔湄?fù)涓涓枃妗g被鐨勬垚鍛樺嚱鏁幫紝瀹冩湁涓涓弬鏁幫紝琛ㄧず瑕佽幏寰楀摢涓被鐨勬寚閽堛傚疄鐜板涓嬶細(xì) 
CView
* CTestDoc::GetView(CRuntimeClass* pClass) 

    CView
* pView; 
    POSITION pos
=GetFirstViewPosition(); 
    
while(pos!=NULL) {
      pView
=GetNextView(pos); 
      
if(!pView->IsKindOf(pClass)) 
        
break
    } 

    
if(!pView->IsKindOf(pClass)) { 
        AfxMessageBox(
"Connt Locate the View.\r\n"); 
        
return NULL; 
    } 
    
return pView; 


鍏朵腑鐢ㄤ簡(jiǎn)涓ゆ瑙嗗浘綾葷殑鎴愬憳鍑芥暟IsKindOf()鏉ュ垽鏂紝鏄洜涓洪鍑簑hile寰幆鏈変笁縐?nbsp;
鍙兘錛?nbsp;
1.pos涓篘ULL錛屽嵆宸茬粡涓嶅瓨鍦ㄤ笅涓涓鍥劇被渚涙搷浣滐紱 
2.pView宸茬鍚堣姹傘?nbsp;

1鍜?鍚屾槸婊¤凍銆傝繖鏄洜涓篏etNextView()鐨勫姛鑳芥槸灝嗗綋鍓嶈鍥炬寚閽堟敼鍙樻垚涓涓鍥劇殑浣嶇疆鍚屾椂榪斿洖褰撳墠瑙嗗浘鎸囬拡錛屽洜姝os鏄痯View鐨勪笅涓涓鍥劇被鐨凱OSITION,瀹屽叏鏈夊彲鑳芥棦鏄痯os
==NULL鍙堟槸pView絎﹀悎闇瑕併傚綋鎵闇鐨勮鍥炬槸鏈鍚庝竴涓鍥炬槸鏈鍚庝竴涓鍥劇被鏃跺氨濡傚紩銆傚洜姝ら渶閲囩敤涓ゆ鍒ゆ柇銆?nbsp;浣跨敤璇ュ嚱鏁板簲閬靛驚濡備笅鏍煎紡錛堜互鍙栧緱CTestView鎸囬拡涓轟緥錛夛細(xì) 
CTestView
* pTestView=(CTestView*)GetView(RUNTIME_CLASS(CTestView)); 
RUNTIME_CLASS鏄竴涓畯錛屽彲浠ョ畝鍗曞湴鐞嗚В瀹冪殑浣滅敤錛氬皢綾葷殑鍚嶅瓧杞寲涓?nbsp;
CRuntimeClass涓烘寚閽堛傝嚦浜庡己鍒剁被鍨嬭漿鎹篃鏄負(fù)浜?jiǎn)瀹夊叏鐗规ц冭檻鐨勶紝鍥犱負(fù)浠庡悓涓涓熀綾諱箣闂寸殑鎸囬拡綾誨瀷鏄簰鐩稿吋瀹圭殑銆傝繖縐嶅己鍒剁被鍨嬭漿鎹篃璁稿茍涓嶅繀瑕侊紝浣嗚兘閬垮厤涓浜涘彲鑳藉嚭鐜扮殑楹葷儲(chǔ)銆?nbsp;

3.浠庝竴涓鍥劇被鍙栧緱鍙︿竴瑙嗗浘綾葷殑鎸囬拡 緇煎悎1鍜?錛屽緢瀹規(guī)槗寰楀嚭瑙嗗浘綾諱箣闂翠簰鐩歌幏寰楁寚閽堢殑鏂規(guī)硶錛氬氨鏄敤鏂囨。綾諱綔涓漿錛屽厛鐢?鐨勬柟娉曞緱鍒版枃妗g被鐨勬寚閽堬紝鍐嶇敤2鐨勬柟娉曪紝浠ユ枃妗g被鐨勮鍥懼畾浣嶅嚱鏁板彇寰楀彟涓涓鍥劇被銆傚悓鏍鳳紝鍙互瀹炵幇鎴愪竴涓嚱鏁幫細(xì) 
錛堝亣璁捐浠嶤TestAView涓彇寰楁寚鍚戝叾瀹冭鍥劇被鐨勬寚閽堬級(jí) 
CView
* CTestAView::GetView(CRuntimeClass* pClass) 

CTestDoc
* pDoc=(CTestDoc*)GetDocument(); 
CView
* pView; 
POSITION pos
=pDoc->GetFirstViewPosition(); 
while(pos!=NULL){ 
pView
=pDoc->GetNextView(pos); 
if(!pView->IsKindOf(pClass)) 
break

if(!pView->IsKindOf(pClass)){ 
AfxMessageBox(
"Connt Locate the View."); 
return NULL; 

return pView; 

榪欎釜鍑芥暟鍜?涓殑GetView()鐩告瘮錛屼竴鏄浜?jiǎn)绗竴鍙ヤ互鍙栧緱鏂囨。綾繪寚閽堬紝浜屾槸鍦℅etFirstViewPosition()鍜孏etNextView()鍓嶅姞涓婁簡(jiǎn)鏂囨。綾繪寚閽堬紝浠ヨ〃紺哄畠浠槸鏂囨。 
綾繪垚鍛樺嚱鏁般傛湁浜?jiǎn)姝ゅ嚱鏁板Q涘綋瑕佷粠CTestAView涓彇寰桟TestBView鐨勬寚閽堟椂錛屽彧闇濡備笅錛欳TestBView
* pTestbView=(CTestView*)GetView(RUNTIME_CLASS(CTestBView)); 


11錛夊浜庡崟鏂囨。涓篃鍙互鍔犲叆澶氫釜鏂囨。妯℃澘錛屼絾鏄竴鑸殑寮鍙戝氨浣跨敤MDI鏂瑰紡寮鍙戝鏂囨。妯℃澘錛屽叾鏂規(guī)硶涓庝笂榪拌鍥劇殑鑾峰彇鏂規(guī)硶寰堟帴榪戯紝榪欓噷紼嶅仛瑙i噴錛屽鏋滀笉娓呮錛岃鏌ラ槄MSDN

鍙互鐢–WinApp::GetFirstDocTemplatePostion鑾峰緱搴旂敤紼嬪簭娉ㄥ唽鐨勭涓涓枃妗fā鏉?nbsp;
鐨勪綅緗紱鍒╃敤璇ュ兼潵璋冪敤CWinApp::GetNextDocTemplate鍑芥暟錛岃幏寰楃涓涓狢DocTemplate瀵硅薄鎸囬拡銆?nbsp;
POSITION GetFirstDocTemplate( ) 
const
CDocTemplate 
*GetNextDocTemplate( POSITION & pos ) const

絎簩涓嚱鏁拌繑鍥炵敱pos 鏍囪瘑鐨勬枃妗fā鏉褲侾OSITION鏄疢FC瀹氫箟鐨勪竴涓敤浜庤凱浠f垨瀵硅薄鎸囬拡媯(gè)绱㈢殑鍊箋傞氳繃榪欎袱涓嚱鏁幫紝搴旂敤紼嬪簭鍙互閬嶅巻鏁翠釜鏂囨。妯℃澘鍒楄〃銆傚鏋滆媯(gè)绱㈢殑鏂囨。妯℃澘鏄ā鏉垮垪琛ㄤ腑鐨勬渶鍚庝竴涓紝鍒檖os鍙傛暟琚疆涓篘ULL銆?nbsp;

12錛変竴涓枃妗fā鏉垮彲浠ユ湁澶氫釜鏂囨。錛屾瘡涓枃妗fā鏉塊兘淇濈暀騫剁淮鎶や簡(jiǎn)涓涓墍鏈夊搴旀枃妗g殑鎸囬拡鍒楄〃銆?nbsp;
鐢–DocTemplate::GetFirstDocPosition鍑芥暟鑾峰緱涓庢枃妗fā鏉跨浉鍏崇殑鏂囨。闆嗗悎涓涓涓枃妗g殑浣嶇疆錛屽茍鐢≒OSITION鍊間綔涓篊DocTemplate::GetNextDoc鐨勫弬鏁版潵閲嶅閬嶅巻涓庢ā鏉跨浉鍏崇殑鏂囨。鍒楄〃銆傚嚱鏁板師褰負(fù)錛?nbsp;
viaual POSITION GetFirstDocPosition( ) 
const = 0
visual CDocument 
*GetNextDoc(POSITION & rPos) const = 0
濡傛灉鍒楄〃涓虹┖錛屽垯rPos琚疆涓篘ULL. 

13錛夊湪鏂囨。涓彲浠ヨ皟鐢–Document::GetDocTemplate鑾峰緱鎸囧悜璇ユ枃妗fā鏉跨殑鎸囬拡銆?nbsp;
鍑芥暟鍘熷艦濡備笅錛?nbsp;CDocTemplate 
* GetDocTemplate ( ) const
濡傛灉璇ユ枃妗d笉灞炰簬鏂囨。妯℃澘綆$悊錛屽垯榪斿洖鍊間負(fù)NULL銆?nbsp;

14)涓涓枃妗e彲浠ユ湁澶氫釜瑙嗐傛瘡涓涓枃妗i兘淇濈暀騫剁淮鎶や竴涓墍鏈夌浉鍏寵鐨勫垪琛ㄣ?nbsp;
CDocument::AddView灝嗕竴涓榪炴帴鍒版枃妗d笂錛屽皢璇ヨ鍔犲叆鍒版枃妗g浉鑱旂郴鐨勮鐨勫垪琛ㄤ腑錛屽茍灝嗚鐨勬枃妗f寚閽堟寚鍚戣鏂囨。銆傚綋鏈塅ile
/New銆丗ile/Open銆乄indows/New鎴朩indow/Split鐨勫懡浠よ屽皢涓涓柊鍒涘緩鐨勮鐨勫璞¤繛鎺ュ埌鏂囨。涓婃椂錛?nbsp;MFC浼?xì)鑷姩璋冪敤璇ュ嚱鏁板Q屾鏋墮氳繃鏂囨。/瑙嗙殑緇撴瀯灝嗘枃妗e拰瑙嗚仈緋昏搗鏉ャ傚綋鐒?dòng)灱尳E嬪簭鍛樹篃鍙互鏍規(guī)嵁鑷繁鐨勯渶瑕佽皟鐢ㄨ鍑芥暟銆?nbsp;
Virtual POSITION GetFirstViewPosition( ) 
const
Virtual CView 
* GetNextView( POSITION &rPosition) cosnt; 

搴旂敤紼嬪簭鍙互璋冪敤CDocument::GetFirstViewPosition榪斿洖涓庤皟鐢ㄦ枃妗g浉鑱旂郴鐨勮鐨勫垪琛ㄤ腑鐨勭涓涓鐨勪綅緗紝騫惰皟鐢–Document::GetNextView榪斿洖鎸囧畾浣嶇疆鐨勮錛屽茍灝唕Positon鐨勫肩疆涓哄垪琛ㄤ腑涓嬩竴涓鐨凱OSITION鍊箋傚鏋滄壘鍒扮殑瑙嗕負(fù)鍒楄〃涓殑鏈鍚庝竴涓錛屽垯灝唕Position緗負(fù)NULL. 

15)浠庝竴涓鍥劇被鍙栧緱鍙︿竴瑙嗗浘綾葷殑鎸囬拡 
榪欎釜搴旂敤鍦ㄥ瑙嗙殑搴旂敤紼嬪簭涓緢澶氳錛屼竴鑸鏋滆嚜宸卞湪涓葷▼搴忔垨鑰呬富妗嗘灦涓仛濂藉彉閲忚鍙鳳紝涔熷彲浠ヨ幏寰楋紝榪樻湁姣旇緝閫氱敤鐨勫氨鏄敤鏂囨。綾諱綔涓漿錛屼互鏂囨。綾葷殑瑙嗗浘閬嶅巻 
瀹氫綅錛屽彇寰楀彟涓涓鍥劇被銆傝繖涓姛鑳戒粠鏈枃絎?0欏逛腑鍙互寰楀埌銆?nbsp;


澶╀笅 2016-05-30 14:02 鍙戣〃璇勮
]]>
CreateProcess+Pipe 浜や簰榪愯鍛戒護(hù)http://www.shnenglu.com/aaxron/archive/2016/05/27/213597.html澶╀笅澶╀笅Fri, 27 May 2016 09:13:00 GMThttp://www.shnenglu.com/aaxron/archive/2016/05/27/213597.htmlhttp://www.shnenglu.com/aaxron/comments/213597.htmlhttp://www.shnenglu.com/aaxron/archive/2016/05/27/213597.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/213597.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/213597.htmlBOOL CNeowayAndroidCheckToolView::PipeSendCmd(const HANDLE& handle,LPCTSTR cmd)
{
    CString _cmd(cmd);
    BOOL bRet;
    DWORD dwWrited;

    _cmd.Append(
"\r\n");    
    
return WriteFile(handle,_cmd,_cmd.GetLength(),&dwWrited,NULL);
}
BOOL CNeowayAndroidCheckToolView::PipeRead(
const HANDLE& handle,CString& result,DWORD dwMilliseconds)
{
    BOOL bRet 
= FALSE;
    CHAR buffer[
4100];
    DWORD dwReaded;

    result.Empty();
    
while(1)
    {
        Sleep(dwMilliseconds);
        bRet 
= PeekNamedPipe(handle,buffer,1,&dwReaded,NULL,NULL);
        
if (!bRet) goto _flag_exit;
        
if (dwReaded>0)
        {
            bRet 
= ReadFile(handle, buffer,4096&dwReaded, NULL);
            
if (!bRet) goto _flag_exit;
            buffer[dwReaded] 
= '\0';
            result 
+= buffer;
        }
else {
            
break;
        }
    }
_flag_exit:
    
return bRet;
}
BOOL CNeowayAndroidCheckToolView::TestGpio()
{
    CString init_cmd 
= Path::Combine( Path::GetAppDirectory(),"adb.exe shell");
    
//CString init_cmd = "cmd.exe";
    CString cmd;
    CString result;
    DWORD exit_code 
= -1;
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    HANDLE hStdOutRead
=NULL, hStdOutPipe=NULL;
    HANDLE hStdInWrite
=NULL, hStdInPipe=NULL;
    SECURITY_ATTRIBUTES saRead,saWrite;
    BOOL bRet;
    BOOL bSucceed;    
    DWORD dwReaded;
    std::vector
<CString> lines;

    saRead.nLength 
= sizeof(SECURITY_ATTRIBUTES);
    saRead.bInheritHandle 
= TRUE;
    saRead.lpSecurityDescriptor 
= NULL;
    saWrite 
= saRead;

    bRet 
= CreatePipe(&hStdOutRead, &hStdOutPipe, &saRead, 4096);
    
if (!bRet)
        
goto _flag_exit;
    bRet 
= CreatePipe(&hStdInPipe, &hStdInWrite, &saWrite, 4096);
    
if (!bRet)
        
goto _flag_exit;

    memset(
&si, 0sizeof(si));
    si.cb 
= sizeof(si);
    si.dwFlags 
= STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
    si.wShowWindow 
= SW_HIDE;
    si.hStdOutput 
= hStdOutPipe;
    si.hStdInput  
= hStdInPipe;

    bRet 
= CreateProcess(NULL, (LPSTR)(LPCTSTR)init_cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
    
if (!bRet) goto _flag_exit;
        

    CloseHandle(hStdOutPipe);hStdOutPipe 
= NULL;
    CloseHandle(hStdInPipe);hStdInPipe 
= NULL;

    bRet 
= PipeRead(hStdOutRead,result,50);
    
if (!bRet) goto _flag_exit;

    PipeSendCmd(hStdInWrite,
"cd sys/gpio_test");
    
if (!bRet) goto _exit_adb;

    bRet 
= PipeRead(hStdOutRead,result,50);
    
if (!bRet) goto _exit_adb;

    PipeSendCmd(hStdInWrite,
"echo \"1\" > start");
    
if (!bRet) goto _exit_adb;

    bRet 
= PipeRead(hStdOutRead,result,50);
    
if (!bRet) goto _exit_adb;

    PipeSendCmd(hStdInWrite,
"cat result");
    
if (!bRet) goto _exit_adb;

    bRet 
= PipeRead(hStdOutRead,result,50);
    
if (!bRet) goto _exit_adb;

    bRet 
= (result.Find("OK")>=0);
_exit_adb:
    
if (!PipeSendCmd(hStdInWrite,"exit")) {
        bRet 
= FALSE; goto _flag_exit;
    }

    WaitForSingleObject( pi.hProcess, 
5000);

    
if (!GetExitCodeProcess(pi.hProcess, &exit_code)) {
        bRet 
= FALSE; goto _flag_exit;
    }
    bRet 
= bRet && (exit_code==0);
_flag_exit:
    
if  (hStdOutRead!=NULL)
        CloseHandle(hStdOutRead);
    
if  (hStdOutPipe!=NULL)
        CloseHandle(hStdOutPipe);
    
if  (hStdInWrite!=NULL)
        CloseHandle(hStdInWrite);
    
if  (hStdInPipe!=NULL)
        CloseHandle(hStdInPipe);
    
return bRet;
}


澶╀笅 2016-05-27 17:13 鍙戣〃璇勮
]]>
MFC鍗曟枃妗g晫闈㈢殑寰皟http://www.shnenglu.com/aaxron/archive/2016/05/24/213576.html澶╀笅澶╀笅Tue, 24 May 2016 09:23:00 GMThttp://www.shnenglu.com/aaxron/archive/2016/05/24/213576.htmlhttp://www.shnenglu.com/aaxron/comments/213576.htmlhttp://www.shnenglu.com/aaxron/archive/2016/05/24/213576.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/213576.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/213576.html
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
 if( !CFrameWnd::PreCreateWindow(cs) )
  return FALSE;

 cs.style &= ~FWS_ADDTOTITLE;//灞忚斀“鏃犳爣棰?#8221;瀛楁牱
 cs.style &= ~WS_MAXIMIZEBOX;//灞忚斀灞忓箷鏈澶у寲
 
//cs.style &= ~WS_THICKFRAME;  //涓嶅彲鏀瑰彉澶у皬
 return TRUE;
}


//璋冩暣鐘舵佹爮澶у皬
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{    if (!m_wndStatusBar.Create(this))
    {
        TRACE0("鏈兘鍒涘緩鐘舵佹爮\n");
        return -1;      // 鏈兘鍒涘緩
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));

    m_wndStatusBar.SetPaneInfo(0,m_wndStatusBar.GetDlgCtrlID(),SBPS_NORMAL,230); //璋冩暣澶у皬
    
//.
}

//鍥哄畾MainFrame澶у皬
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
    POINT p = {365,400};
    lpMMI->ptMaxTrackSize = p;
    lpMMI->ptMinTrackSize = p;
    CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
// MainFrm.h  澧炲姞
public:
 POINT m_TrackSize;
 void SetAutoSize();

// MainFrm.cpp
void CMainFrame::SetAutoSize()
{
     CRect rc;
     GetWindowRect(&rc);
     m_TrackSize = CPoint(rc.Width(),rc.Height());
}

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
 if (m_TrackSize.x && m_TrackSize.x)
 {
  lpMMI->ptMinTrackSize = m_TrackSize;
  lpMMI->ptMaxTrackSize = m_TrackSize;
 }
 CXTPFrameWnd::OnGetMinMaxInfo(lpMMI);
}

// OppoTest6View.cpp
void COppoTest6View::OnInitialUpdate()
{
 CFormView::OnInitialUpdate();
 GetParentFrame()->RecalcLayout();
 ResizeParentToFit();
 
 CMainFrame* MainFrame = (CMainFrame*)GetParentFrame();
 MainFrame->SetAutoSize();
}

澶╀笅 2016-05-24 17:23 鍙戣〃璇勮
]]>
鍦╲c涓嬌鐢≒CREhttp://www.shnenglu.com/aaxron/archive/2016/03/02/212909.html澶╀笅澶╀笅Wed, 02 Mar 2016 02:04:00 GMThttp://www.shnenglu.com/aaxron/archive/2016/03/02/212909.htmlhttp://www.shnenglu.com/aaxron/comments/212909.htmlhttp://www.shnenglu.com/aaxron/archive/2016/03/02/212909.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/212909.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/212909.html鍦╲c涓嬌鐢≒CRE
1. PCRE綆浠?br />姝e垯琛ㄨ揪寮?regular expression)錛岄氬父綆鍐欎負(fù)regex銆乺egexp鎴朢E錛屼嬌鐢ㄥ崟涓瓧絎︿覆鏉ユ弿榪般佸尮閰嶄竴緋誨垪絎﹀悎鏌愪釜鍙ユ硶瑙勫垯鐨勫瓧絎︿覆銆?br />PCRE(Perl Compatible Regular Expressions)錛屾槸涓涓嚱鏁板簱錛岀敱Philip Hazel寮鍙戯紝璇ュ嚱鏁板簱浣跨敤涓嶱erl5涓鏍風(fēng)殑璇硶鍜岃涔夊疄鐜頒簡(jiǎn)姝e垯琛ㄨ揪寮忕殑妯″紡鍖歸厤鍔熻兘銆侾CRE鏄厤璐瑰紑婧愮殑錛屽畠鏄敱C璇█瀹炵幇銆傚緢澶氳憲鍚嶇殑寮婧愯蔣浠跺Apache銆丳HP銆並DE銆丯ginx 絳夐兘浣跨敤浜?jiǎn)PCRE銆傚畼鏂逛富欏?#8211;http://www.pcre.org錛岀洰鍓嶏紙2016.03錛夋渶鏂扮増鏈槸8.38銆?/span>

2 緙栬瘧 PCRE
PCRE鐨勪綔鑰匬hilip Hazel鏄湪linux涓婂伐浣滅殑錛屾墍浠ョ紪璇慞CRE鏈濂界殑鍔炴硶鑷劧鏄痗onfigure, make, make install涓夋鏇蹭簡(jiǎn)銆傚湪windows涓嬶紝 cygwin鎴栬匨inGW閮芥敮鎸佽繖涔堝仛銆?br />鍦╳indows涓嬬紪璇?nbsp;PCRE瑕佺敤CMake銆?br />鍏堜粠 http:
//www.cmake.org 涓婁笅杞芥渶鏂扮増鐨凜Make錛?/span>
鍦ㄨВ鍘嬬緝鍚庣殑PCRE鐩綍涓嬪緩涓瓙鐩綍build錛屾瘮濡傛垜鐨凞:\pcre-8.38\build銆?br />璁劇疆瑕佺紪璇戠殑婧愪唬鐮佺殑璺緞浠ュ強(qiáng)緙栬瘧濂界殑浜岃繘鍒舵枃浠跺瓨鏀劇殑璺緞
CMake 浼?xì)璇诲彇婧愪唬鐮佺洰褰曚笅鐨勬枃錃g CMakeLists.txt 錛岀劧鍚庡皢璇誨埌鐨勯厤緗互綰㈤鑹叉樉紺哄嚭鏉ワ紝姝ゆ椂鍙互鏍規(guī)嵁鎴戜滑鐨勯渶瑕侀傚綋鐨勯夋嫨鎴栧幓鎺変竴浜涢厤緗紝姣斿鍔犱笂 PCRE_SUPPORT_UTF錛屽幓鎺塒CRE_SUPPORT_JIT(涓嶉渶瑕佸祵鍏ュ紡鐨勪唬鐮?銆丳CRE_BUILD_PCRECPP(鎴戝彧鎯寵c褰㈠紡鐨勫簱)錛涜繕鍙互淇敼涓浜涢厤緗殑鍊鹼紝姣斿鎶奝CRE_NEWLINE浠嶭F鏀規(guī)垚CRLF銆傜劧鍚庡啀鐐逛竴涓?/span>"Configure”,鏈鍚庣偣"Generate”錛屼綘浼?xì)鍙戠幇鍦╞uild鐩綍閲岀敓鎴愪簡(jiǎn)涓緋誨垪鐨剉c6鐨勫伐紼嬫枃浠朵互鍙?qiáng)涓浜?h鏂囦歡鍜?c鏂囦歡銆?br />
3 鍦ㄥ伐紼嬩腑浣跨敤PCRE
鍖呭惈澶存枃浠?nbsp;#include “pcre.h”
閾炬帴闈?rùn)鎬佸簱 #pragma comment(lib,“pcre.lib”)
鍦ㄩ」鐩?#8221;棰勫鐞嗗櫒瀹氫箟“涓姞涓奝CRE_STATIC

紺轟緥浠g爜錛?br />#include 
"stdafx.h"
#define PCRE_STATIC
#include 
"pcrecpp.h"
#include 
<vector>
#include 
<iostream>
#include 
<string>
#pragma comment(lib,
"lib/pcrecppd.lib")
#pragma comment(lib,
"lib/pcred.lib")
using namespace std;
using namespace pcrecpp;

int Test1()
{
    
#define OVECCOUNT 30    /* should be a multiple of 3 */
    pcre            
*re; 
    
const char      *error;
    
int             erroffset;
    
int             ovector[OVECCOUNT];
    
int             rc, i;

    
char            src    [] = "111 <title>Hello World</title> 222";
    
char            pattern   [] = "<title>(.*)</title>";

    printf(
"String : %s\n", src);
    printf(
"Pattern: \"%s\"\n", pattern);


    re 
= pcre_compile(pattern, 0&error, &erroffset, NULL);
    
if (re == NULL) {
        printf(
"PCRE compilation failed at offset %d: %s\n", erroffset, error);
        
return 1;
    }

    rc 
= pcre_exec(re, NULL, src, strlen(src), 00, ovector, OVECCOUNT);
    
if (rc < 0) {
        
if (rc == PCRE_ERROR_NOMATCH) printf("Sorry, no match \n");
        
else    printf("Matching error %d\n", rc);
        free(re);
        
return 1;
    }

    printf(
"\nOK, has matched \n\n");

    
for (i = 0; i < rc; i++) {
        
char *substring_start = src + ovector[2*i];
        
int substring_length = ovector[2*i+1- ovector[2*i];
        printf(
"%2d: %.*s\n", i, substring_length, substring_start);
    }

    free(re);
    
return 0
}


int main()  
{  
    Test1();
    
return 0;
}  




澶╀笅 2016-03-02 10:04 鍙戣〃璇勮
]]>
WM_COMMAND錛圔N_CLICKED錛夊疄鐜?/title><link>http://www.shnenglu.com/aaxron/archive/2016/01/20/212690.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Wed, 20 Jan 2016 03:23:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2016/01/20/212690.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/212690.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2016/01/20/212690.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/212690.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/212690.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#include "stdafx.h"<br /><span style="color: #008000; ">//</span><span style="color: #008000; "> TestControl.c <br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">杞嚜http:</span><span style="color: #008000; ">//</span><span style="color: #008000; ">www.cnblogs.com/memset/archive/2013/05/16/3081082.html 錛岀◢鍔犱慨鏀?/span><span style="color: #008000; "><br /></span><br /><span style="color: #0000FF; ">#define</span> _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      <span style="color: #008000; ">//</span><span style="color: #008000; "> 鏌愪簺 CString 鏋勯犲嚱鏁板皢鏄樉寮忕殑</span><br />#include <atlbase.h><br />#include <atlstr.h><br /><br />#include <WindowsX.h><br /><br />LRESULT CALLBACK ControlWindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);<br /><br /><span style="color: #0000FF; ">void</span> RegisterControlClass(HINSTANCE hInstance)<br />{<br />    WNDCLASSEXW wce={0};<br /><br />    wce.cbSize = <span style="color: #0000FF; ">sizeof</span>(wce);<br />    wce.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);<br />    wce.hInstance = hInstance;<br />    wce.lpfnWndProc = ControlWindowProc;<br />    wce.lpszClassName = L"ControlClass";<br />    wce.style = CS_HREDRAW|CS_VREDRAW;<br /><br />    RegisterClassExW(&wce);<br /><br />}<br /><br /><br /><br />LRESULT CALLBACK ControlWindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)<br />{<br />    <span style="color: #0000FF; ">static</span> HBRUSH hbrBlack,hbrRed;<br />    <span style="color: #0000FF; ">switch</span>(uMsg)<br />    {<br />    <span style="color: #0000FF; ">case</span> WM_CREATE:<br />        {<br />            hbrBlack = CreateSolidBrush(#000000);<br />            hbrRed = CreateSolidBrush(#ff0000);<br /><br />            <span style="color: #0000FF; ">return</span> 0;<br />        }<br />    <span style="color: #0000FF; ">case</span> WM_PAINT:<br />        {<br />            PAINTSTRUCT ps;<br />            HDC hdc;<br />            hdc = BeginPaint(hWnd,&ps);<br />            SelectObject(hdc,hbrBlack);<br />            Rectangle(hdc,0,0,100,50);<br /><br />            {<br />                CString text;<br />                ::GetWindowText(hWnd,text.GetBuffer(100),100);<br />                text.ReleaseBuffer();<br />                TextOutW(hdc,10,10,text,text.GetLength());<br />            }<br /><br />            EndPaint(hWnd,&ps);<br />            <span style="color: #0000FF; ">return</span> 0;<br /><br />        }<br />    <span style="color: #0000FF; ">case</span> WM_LBUTTONDOWN:<br />        {<br />            HDC hdc;<br />            hdc = GetDC(hWnd);<br />            SelectObject(hdc,hbrRed);<br />            Rectangle(hdc,0,0,100,50);<br />            SetTextColor(hdc,#ff0000);<br />            {<br />                CString text;<br />                ::GetWindowText(hWnd,text.GetBuffer(100),100);<br />                text.ReleaseBuffer();<br />                TextOutW(hdc,10,10,text,text.GetLength());<br />            }<br />            ReleaseDC(hWnd,hdc);<br />            SetCapture(hWnd);<br />            <span style="color: #0000FF; ">return</span> 0;<br />        }<br />    <span style="color: #0000FF; ">case</span> WM_LBUTTONUP:<br />        {<br />            HDC hdc;<br />            hdc = GetDC(hWnd);<br />            SelectObject(hdc,hbrBlack);<br />            Rectangle(hdc,0,0,100,50);<br />            SetTextColor(hdc,#000000);<br />            {<br />                CString text;<br />                ::GetWindowText(hWnd,text.GetBuffer(100),100);<br />                text.ReleaseBuffer();<br />                TextOutW(hdc,10,10,text,text.GetLength());<br />            }<br />            ReleaseDC(hWnd,hdc);<br />        <br />            BOOL bRet =  (GetCapture()==hWnd);<br />            ReleaseCapture();<br /><br />            HWND parent = ::GetParent(hWnd);<br />            HMENU hMenu = ::GetMenu(hWnd);<br /><br />            <span style="color: #008000; ">//</span><span style="color: #008000; ">POINT pt = MAKEPOINTS(lParam);</span><span style="color: #008000; "><br /></span>            POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };<br />            RECT rect;<br />            ::GetClientRect(hWnd,&rect);<br />            bRet = bRet && ::PtInRect(&rect,pt);<br />            <span style="color: #0000FF; ">if</span> (bRet)<br />                ::SendMessage(parent,WM_COMMAND,(WPARAM)hMenu,NULL);<br />            <span style="color: #0000FF; ">return</span> 0;<br />        }<br />    <span style="color: #0000FF; ">case</span> WM_DESTROY:<br />        DeleteObject(hbrBlack);<br />        DeleteObject(hbrRed);<br />        <span style="color: #0000FF; ">return</span> 0;<br />    }<br />    <span style="color: #0000FF; ">return</span> DefWindowProcW(hWnd,uMsg,wParam,lParam);<br />}<br /><br /><br />LRESULT CALLBACK MainWindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)<br />{<br />    <span style="color: #0000FF; ">switch</span>(uMsg)<br />    {<br />    <span style="color: #0000FF; ">case</span> WM_CREATE:<br />        {<br />            HINSTANCE hInstance = GetModuleHandleW(NULL);<br /><br />            CreateWindowExW(0,L"Button",L"鎸夐敭",WS_CHILD|WS_VISIBLE,0,0,100,50,hWnd,(HMENU)101,hInstance,NULL);<br />            CreateWindowExW(0,L"ControlClass",L"鍝堝搱",WS_CHILD|WS_VISIBLE,200,200,100,50,hWnd,(HMENU)100,hInstance,NULL);<br />            CreateWindowExW(0,L"ControlClass",L"鍛靛懙",WS_CHILD|WS_VISIBLE,400,400,100,50,hWnd,(HMENU)102,hInstance,NULL);<br /><br />            <span style="color: #0000FF; ">return</span> 0;<br />        }<br />    <span style="color: #0000FF; ">case</span> WM_COMMAND:<br />        {<br />            <span style="color: #0000FF; ">int</span> wmId    = LOWORD(wParam);<br />            CString msg;<br />            msg.Format(L"hWmd:0x%08x,wmId:%d",hWnd,wmId);<br />            MessageBox(hWnd,msg,L"鎻愮ず",MB_OK|MB_ICONINFORMATION);<br />        }<br />        <span style="color: #0000FF; ">break</span>;<br />    <span style="color: #0000FF; ">case</span> WM_DESTROY:<br />        PostQuitMessage(0);<br />        <span style="color: #0000FF; ">return</span> 0;<br />    <span style="color: #0000FF; ">default</span>:<br />        <span style="color: #0000FF; ">break</span>;<br />    }<br />    <span style="color: #0000FF; ">return</span> DefWindowProcW(hWnd,uMsg,wParam,lParam);<br />}<br /><br /><span style="color: #0000FF; ">int</span> WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPWSTR lpCmdLine,<span style="color: #0000FF; ">int</span> nShowCmd)<br />{<br />    HWND hWnd;<br />    WNDCLASSEXW wce = {0};<br />    MSG msg;<br /><br />    RegisterControlClass(hInstance);<br /><br />    wce.cbSize = <span style="color: #0000FF; ">sizeof</span>(wce);<br />    wce.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);<br />    wce.hCursor = LoadCursor(NULL,IDC_ARROW);<br />    wce.hIcon = LoadIcon(NULL,IDI_APPLICATION);<br />    wce.hInstance = hInstance;<br />    wce.lpfnWndProc = MainWindowProc;<br />    wce.lpszClassName = L"MyWindowClass";<br />    wce.style = CS_HREDRAW|CS_VREDRAW;<br /><br />    RegisterClassExW(&wce);<br /><br />    hWnd = CreateWindowExW(0,L"MyWindowClass",L"嫻嬭瘯",WS_OVERLAPPEDWINDOW,<br />        CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);<br /><br />    UpdateWindow(hWnd);<br />    ShowWindow(hWnd,nShowCmd);<br /><br />    <span style="color: #0000FF; ">while</span>(GetMessageW(&msg,NULL,0,0))<br />    {<br />        TranslateMessage(&msg);<br />        DispatchMessageW(&msg);<br />    }   <br />    <span style="color: #0000FF; ">return</span> 0;<br />}</div><img src ="http://www.shnenglu.com/aaxron/aggbug/212690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2016-01-20 11:23 <a href="http://www.shnenglu.com/aaxron/archive/2016/01/20/212690.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>紿楀彛瀛愮被鍖栫殑涓鑸柟娉?/title><link>http://www.shnenglu.com/aaxron/archive/2015/08/10/211517.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Mon, 10 Aug 2015 02:02:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2015/08/10/211517.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/211517.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2015/08/10/211517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/211517.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/211517.html</trackback:ping><description><![CDATA[<div>瀹炵幇瀛愮被鍖栫殑涓鑸柟娉?/div><div>浠庝笂闈㈠彲浠ョ湅鍑猴紝瀛愮被鍖栦富瑕佷嬌鐢ㄥ嚑涓狝PI鍑芥暟錛岃繖鍑犱箮鏄墍鏈夊疄鐜板瓙綾誨寲鐩稿悓鐨勬柟娉曘傜浉鍏矨PI璇存槑濡備笅錛?/div><div>1銆?WINUSERAPI LONG WINAPI GetWindowLongA(HWND hWnd, int nIndex);</div><div>WINUSERAPI LONG WINAPI GetWindowLongW(HWND hWnd,int nIndex);</div><div>2銆?SetWindowLong 涓?CallWindowProc 鍑芥暟榪欎笉鍐嶅垪鍑烘潵浜?jiǎn)锛岄兘鏄_夊鏄撶殑錛?/div><div>浣跨敤 ComCtl32.dll version 6 瀹炵幇紿楀彛瀛愮被鍖?/div><div>Windows XP 甯︾殑ComCtl32.dll version 6 鎻愪緵浜?涓彲浠ヨ鍒涘緩瀛愮被鍖栨洿綆鍗曪紝騫朵笖鍙互娑堥櫎鍓嶉潰鎻愬埌鐨勭己闄風(fēng)殑鍑芥暟銆傝繖浜涙柊鐨勫嚱鏁板皝瑁呬簡(jiǎn)瀵瑰緇勫弬鑰冩暟鎹紙multiple sets of reference data錛夌殑綆$悊鎿嶄綔錛屼嬌寰楀紑鍙戣呰兘灝嗙簿鍔涢泦涓埌鍏蜂綋鐨勭▼搴忕壒鎬ц屼笉鏄瀛愮被鐨勭鐞嗕笂銆傝繖浜涙柊鐨勫嚱鏁頒負(fù)錛?/div><div>SetWindowSubclass</div><div>GetWindowSubclass</div><div>RemoveWindowSubclass</div><div>DefSubclassProc</div><div>涓嬮潰鏄榪欎簺鍑芥暟鐨勬弿榪般?/div><div>SetWindowSubclass</div><div>榪欎釜鍑芥暟鐢ㄦ潵瀛愮被鍖栦竴涓獥鍙c傛瘡涓瓙綾誨彲浠ョ敤p pfnSubclass 鍜?uIdSubclass 錛圫etWindowSubclass鐨勫弬鏁幫級(jí)鍞竴鏍囪瘑銆傚涓瓙綾誨彲浠ュ叡浜悓涓涓瓙綾昏繃紼嬶紝鑰岀敤鏍囪瘑錛圛D錛夋潵鍖哄垎銆傛敼鍙樺弬鑰冩暟鎹彲浠ユ彁渚涘啀涓嬈¤皟鐢⊿etWindowSubclass 鏉ュ疄鐜般備竴涓噸瑕佺殑浼樼偣鏄瘡涓涓瓙綾誨疄渚嬪彲浠ユ嫢鏈夎嚜宸辯殑鍙傝冩暟鎹?/div><div>瀛愮被榪囩▼鐨勫0鏄庡拰浼犵粺鐨勭獥鍙h繃紼嬫湁鐐圭粏寰殑宸埆錛屽畠澶氫簡(jiǎn)涓や釜鍙傛暟錛氬瓙綾籌D鍜屽弬鑰冩暟鎹傚弬鐪嬩笅闈㈣繖涓嚱鏁板0鏄庣殑鏈鍚庝袱涓弬鏁幫細(xì)</div><div>LRESULT CALLBACK MyWndProc (HWND hWnd, UINT msg,WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass,</div><div>DWORD_PTR dwRefData);</div><div>姣忔鏂扮殑紿楀彛榪囩▼鏀跺埌涓涓秷鎭椂錛屽畠鍚屾椂寰楀埌浜?jiǎn)涓涓瓙綾籌D鍜屽弬鑰冩暟鎹?/div><div>娉ㄦ剰錛氭墍鏈変綔涓哄弬鏁頒紶閫掔粰璇ュ嚱鏁扮殑瀛楃涓插潎涓篣nicode錛屼笉綆℃湁娌℃湁瀹氫箟Unicode緙栬瘧閫夐」銆?/div><div>GetWindowSubclass</div><div>璇ュ嚱鏁板彇鍥炰竴涓瓙綾葷殑淇℃伅銆傛瘮濡備綘鍙互鐢℅etWindowSubclass 鏉ヨ闂弬鑰冩暟鎹?/div><div>RemoveWindowSubclass</div><div>璇ュ嚱鏁扮Щ闄や竴涓瓙綾? RemoveWindowSubclass 鍜?SetWindowSubclass 鑱斿悎浣跨敤鍙互鍔ㄦ佹坊鍔犲拰鍒犻櫎瀛愮被.</div><div>DefSubclassProc</div><div>榪欎釜鍑芥暟璋冪敤瀛愮被閾句腑鐨勪笅涓涓鐞嗚呫傝繖涓嚱鏁板彲浠ヨ嚜琛屽彇寰楁紜殑ID鍜屽弬鑰冩暟鎹茍浼犻掔粰涓嬩竴涓獥鍙h繃紼嬨?/div><div>澶у閮界煡閬撴瘡涓獥鍙i兘鏈夐粯璁ょ殑紿楀彛鍑芥暟鏉ヨ繘琛屽紿楀彛娑堟伅鐨勫鐞?</div><div></div><div>OutputDebugString</div><div>SetProp()</div><div>SetWindowSubclass</div><div>BOOL SetWindowSubclass(          </div><div>    HWND hWnd,</div><div>    SUBCLASSPROC pfnSubclass,</div><div>    UINT_PTR uIdSubclass,</div><div>    DWORD_PTR dwRefData</div><div>);</div><div>SUBCLASSPROC</div><div>DefSubclassProc</div><div></div><div>LRESULT CALLBACK MyWndProc (HWND hWnd, UINT msg,WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass,DWORD_PTR dwRefData);</div><img src ="http://www.shnenglu.com/aaxron/aggbug/211517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2015-08-10 10:02 <a href="http://www.shnenglu.com/aaxron/archive/2015/08/10/211517.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>紿楀彛閿姣佺殑鐩稿叧鍑芥暟涓庢秷鎭?/title><link>http://www.shnenglu.com/aaxron/archive/2015/08/01/211447.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Sat, 01 Aug 2015 06:24:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2015/08/01/211447.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/211447.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2015/08/01/211447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/211447.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/211447.html</trackback:ping><description><![CDATA[<div>紿楀彛閿姣佺殑鐩稿叧鍑芥暟涓庢秷鎭?/div><div></div><div>DestroyWindow鍑芥暟</div><div>DestroyWindow閿姣佺獥鍙g殑姝g墝鍑芥暟銆?/div><div></div><div>DestroyWindows鐨凪SDN璇存槑濡備笅錛?/div><div></div><div>The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it. The function also destroys the window's menu, flushes the thread message queue, destroys timers, removes clipboard ownership, and breaks the clipboard viewer chain (if the window is at the top of the viewer chain).</div><div></div><div>If the specified window is a parent or owner window, DestroyWindow automatically destroys the associated child or owned windows when it destroys the parent or owner window. The function first destroys child or owned windows, and then it destroys the parent or owner window.</div><div></div><div>DestroyWindow also destroys modeless dialog boxes created by the CreateDialog function.</div><div></div><div>A thread cannot use DestroyWindow to destroy a window created by a different thread.</div><div></div><div>If the window being destroyed is a child window that does not have the WS_EX_NOPARENTNOTIFY style, a WM_PARENTNOTIFY message is sent to the parent.</div><div></div><div>DestroyWindow鐨勫鐞嗚繃紼嬫葷粨瑕佺偣濡備笅錛?nbsp;</div><div>1. 鍚戠埗紿楀彛鍙戦乄M_PARENTNOTIFY娑堟伅錛堜粎褰撶獥鍙e叿鏈塛S_EX_NOPARENTNOTIFY鏍峰紡錛夛紱 </div><div>2. 鍚戠獥鍙e彂閫乄M_DESTROY娑堟伅錛?nbsp;</div><div>3. 浣跨獥鍙h漿鍏ラ潪媧誨姩鐘舵侊紝縐婚櫎閿洏鐒︾偣錛?nbsp;</div><div>4. 閿姣佸瓙紿楀彛錛堝簲璇ユ槸閫氳繃閫掑綊璋冪敤DestroyWindow瀹屾垚錛夛紱 </div><div>5. 閿姣佺洰鏍囩獥鍙h祫婧愶細(xì)閿姣佽彍鍗曪紝娓呯┖綰跨▼鐨勬秷鎭槦鍒楋紝閿姣佷笌紿楀彛榪囩▼鐩稿叧鐨勫畾鏃跺櫒錛岃В闄ょ獥鍙e鍓創(chuàng)鏉跨殑鎷ユ湁鏉冿紝鎵撴柇鍓創(chuàng)鏉垮櫒鐨勬煡鐪嬮摼錛?nbsp;</div><div>6. 鍚戠獥鍙e彂閫乄M_NCDESTROY娑堟伅錛?/div><div></div><div>涓婅堪鏉$洰澶ц嚧浠庡墠寰鍚庢墽琛岋紙1銆?銆?鐨勯『搴忎笉涓瀹氾紝5銆?鐨勯『搴忎笉涓瀹氾級(jí)銆備緷鎹槸錛?nbsp;</div><div>1. 鏍規(guī)嵁WM_PARENTNOTIFY璇存槑錛氶攢姣佺獥鍙f椂錛岀郴緇熷湪浠諱綍閿姣佺獥鍙g殑鎿嶄綔鎵ц鍓嶅彂閫乄M_PARENTNOTIFY鑷崇埗紿楀彛錛?nbsp;</div><div>2. 鏍規(guī)嵁WM_DESTROY璇存槑錛氭娑堟伅鍏堣鍙戦佽嚦鐩爣紿楀彛錛岀劧鍚庡彂閫佺粰鐩爣紿楀彛鐨勬墍鏈夊瓙紿楀彛錛屽鐞嗘娑堟伅鏃訛紝鍙互鍋囧畾鎵鏈夊瓙紿楀彛榪樺瓨鍦ㄧ潃錛?nbsp;</div><div>3. 鏍規(guī)嵁DestroyWindow璇存槑錛氬嚱鏁板厛閿姣佸瓙紿楀彛鍙?qiáng)鎵鎷ユ湁鐨勭獥鍙o紝鐒跺悗閿姣佺洰鏍囩獥鍙o紱 </div><div>4. 鏍規(guī)嵁WM_NCDESTROY璇存槑錛氫笌WM_DESTROY鐩稿弽鐨勬槸錛屾娑堟伅鍦ㄦ墍鏈夊瓙紿楀彛閿姣佷箣鍚庡彂閫侊紱 娌℃湁鍘葷湅姹囩紪浠g爜錛屽彧鏄牴鎹悇涓狹SDN璇存槑鏉ュぇ鑷存帹嫻嬬殑錛屽熀鏈鐢ㄤ簡(jiǎn)鍚с?/div><div></div><div>鏍規(guī)嵁MSDN璇存槑錛屼笉鑳藉湪闈炲垱寤虹嚎紼嬩笂璋冪敤DestroyWindow錛涜嫢瑕佸湪鍏跺畠綰跨▼涓婂叧闂獥鍙o紝涓嶅彲浠ョ洿鎺ヨ皟鐢―estroyWindow錛堥敊璇?鎷掔粷璁塊棶"錛夛紝涔熶笉鍙互鍙彂閫乄M_DESTROY錛屽洜涓篋estroyWindow鎵嶈兘瀹屾暣鐨勫叧闂獥鍙o紝W(xué)M_DESTROY娑堟伅鍙槸鍏抽棴嫻佺▼鐨勪竴閮ㄥ垎錛岀敋鑷蟲槸鏈"鏃犵敤"鐨勪竴閮ㄥ垎--WM_DESTROY鍙槸鐢ㄦ埛鍝嶅簲鐨勬帴鍙o紝鑰岀湡姝f竻鐞嗙獥鍙g殑宸ヤ綔鐢盌estroyWindow鐨勫叾瀹冮儴鍒嗗畬鎴愩?nbsp;</div><div>瑕佸湪鍏跺畠綰跨▼涓婂叧闂獥鍙o紝鍙互鍚戠獥鍙e彂閫乄M_CLOSE娑堟伅錛岃嫢紿楀彛榪囩▼鏈湪WM_CLOSE鐨勫鐞嗕腑鍙栨秷鍏抽棴鎿嶄綔錛屽垯DefWindowProc浼?xì)榛樿璋冪敤DestroyWindow錛堝郊鏃惰嚜鐒舵槸鍦ㄧ獥鍙g殑鍒涘緩綰跨▼涓婏級(jí)銆?/div><div></div><div>WM_CLOSE娑堟伅</div><div>WM_CLOSE鐨凪SDN璇存槑濡備笅錛?/div><div></div><div>An application can prompt the user for confirmation, prior to destroying a window, by processing the WM_CLOSE message and calling the </div><div>DestroyWindow function only if the user confirms the choice.</div><div></div><div>By default, the DefWindowProc function calls the DestroyWindow function to destroy the window.</div><div></div><div>WM_CLOSE娑堟伅鎻愪緵鍙栨秷鍏抽棴紿楀彛鎿嶄綔鐨勬帴鍙o紝涔熷彲浠ヤ綔涓虹獥鍙e叧闂殑鍏寵仈澶勭悊鐨勭粺涓鍏ュ彛銆傜偣鍑葷獥鍙e彸涓婅鐨勫叧闂寜閽皢瀵艱嚧紿楀彛鏀跺埌WM_CLOSE娑堟伅錛屼竴鑸儏鍐典笅錛岃彍鍗曚腑鐨凟xit欏圭殑澶勭悊浠g爜涓篃搴斿悜紿楀彛鍙戦乄M_CLOSE娑堟伅錛岃繖鏍峰彲浠ヤ嬌鏃犺浣曠鏂瑰紡瑙﹀彂鐨勭獥鍙e叧闂搷浣滐紝鍏剁▼搴忔祦鍧囦細(xì)嫻佸叆WM_CLOSE娑堟伅鐨勫鐞嗚繃紼嬨傚湪WM_CLOSE涓彲浠ュ紼嬪簭鐘舵佽繘琛岀‘璁わ紝鑷姩鎴栫敱鐢ㄦ埛紜鏄惁鍙栨秷鍏抽棴鎿嶄綔銆?nbsp;</div><div>涓庢帴涓嬫潵鐨勫叾瀹冩秷鎭浉姣旓紝W(xué)M_CLOSE鐨勭壒孌婁箣澶勫湪浜庡畠鍙戠敓鍦ㄩ攢姣佽繃紼嬪惎鍔ㄤ箣鍓嶃傜敤鎴峰鐞嗗畬W(xué)M_CLOSE娑堟伅鍚庯紝濡傛湭鍙栨秷錛屽垯DefWindowProc灝嗚皟鐢―estroyWindow鏉ュ叧闂獥鍙o紝涓鏃﹁繘鍏estroyWindow錛屽垯鍏抽棴榪囩▼灝嗕笉鍙嗚漿銆?/div><div></div><div>WM_DESTROY娑堟伅</div><div>WM_DESTROY鐨凪SDN璇存槑濡備笅錛?/div><div></div><div>The WM_DESTROY message is sent when a window is being destroyed. It is sent to the window procedure of the window being destroyed after the window is removed from the screen.</div><div></div><div>This message is sent first to the window being destroyed and then to the child windows (if any) as they are destroyed. During the processing of the message, it can be assumed that all child windows still exist.</div><div></div><div>A window receives this message through its WindowProc function.</div><div></div><div>If the window being destroyed is part of the clipboard viewer chain (set by calling the SetClipboardViewer function), the window must remove itself from the chain by processing the ChangeClipboardChain function before returning from the WM_DESTROY message.</div><div></div><div>鏈鍚庝竴鍙ュ煎緱娉ㄦ剰錛屼笉榪囧鍓創(chuàng)鏉挎秹鐚庝笉澶氾紝鏆備笖涓嶇┒銆?/div><div></div><div>WM_PARENTNOTIFY娑堟伅</div><div>WM_PARENTNOTIFY鐨凪SDN璇存槑濡備笅錛?/div><div></div><div>The WM_PARENTNOTIFY message is sent to the parent of a child window when the child window is created or destroyed, or when the user clicks a mouse button while the cursor is over the child window. When the child window is being created, the system sends WM_PARENTNOTIFY just before the CreateWindow or CreateWindowEx function that creates the window returns. When the child window is being destroyed, the system sends the message before any processing to destroy the window takes place.</div><div></div><div>A window receives this message through its WindowProc function.</div><div></div><div>WM_NCDESTROY娑堟伅</div><div>WM_NCDESTROY鐨凪SDN璇存槑濡備笅錛?/div><div></div><div>The WM_NCDESTROY message informs a window that its nonclient area is being destroyed. The DestroyWindow function sends the WM_NCDESTROY message to the window following the WM_DESTROY message. WM_DESTROY is used to free the allocated memory object associated with the window. The WM_NCDESTROY message is sent after the child windows have been destroyed. In contrast, WM_DESTROY is sent before the child windows are destroyed. A window receives this message through its WindowProc function. This message frees any memory internally allocated for the window.</div><div></div><div>鍏充簬WM_DESTROY涓嶹M_NCDESTROY錛屼粠鍚勭璇存槑鍙互鐪嬪嚭錛屼竴涓ぇ綰﹀厖褰撳叧闂搷浣滃惎鍔ㄦ椂鐨勯氱煡鎺ュ彛錛屼竴涓ぇ綰﹀厖褰撳叧闂搷浣滃畬鎴愭椂鐨勯氱煡鎺ュ彛銆傝繖涔熸槸鎴戣涓哄湪DestroyWindow鐨勫鐞嗘祦紼嬩腑錛岀6鏉″湪絎?鏉′箣鍚庣殑鍘熷洜銆?nbsp;</div><div>鍙﹀錛岃鏄庝腑鏈変釜鍊煎緱涓鎻愮殑鍦版柟鍦ㄤ簬錛歐M_DESTROY鐢ㄤ簬閲婃斁鍏寵仈鍒幫紙associated to錛夌獥鍙g殑宸插垎閰嶅唴瀛樺璞★紝W(xué)M_NCDESTROY鐢ㄤ簬閲婃斁鍐呴儴涓虹獥鍙e垎閰嶇殑錛坕nternally allocated for錛夊唴瀛樸?鍙互鎯寵薄錛屽悗鑰呭簲褰撴寚紿楀彛鐨勫唴鏍告暟鎹紝浣嗗墠鑰呭垯鏈夊悇縐嶅彲鑳斤紝鑿滃崟璧勬簮錛烥DI璧勬簮錛熷紓鎴栨槸瀛愮獥鍙h祫婧愶紵榪欎釜灝變笉濂借浜?jiǎn)銆?鑰屼笖錛屾牴鎹繖涓ゅ彞璇濈殑琛ㄨ堪錛屼技涔庤繖涓や釜娓呯悊鎿嶄綔鏄湪娑堟伅鐨勫鐞嗚繃紼嬩腑鍙戠敓鐨勶紝鐒惰屾樉鐒跺張涓嶆槸鐢辯敤鎴鋒潵瀹屾垚鐨勫伐浣滐紝閭d箞灝卞簲褰撴槸鍦―efWindowProc涓畬鎴愮殑浜?jiǎn)銆備負(fù)浠涔堜笉鐩存帴鎷垮埌Destroywindow涓潵鎵ц鍛紵</div><div></div><div>ActiveX鎺т歡鐨勯攢姣?/div><div>閿姣佹帶浠剁殑鏈濂芥柟娉曟槸閿姣佸涓葷獥鍙c傚彲浠ラ氳繃璋冪敤 CWindow::DestroyWindow 鎴?DestroyWindow API 鏄懼紡鍦拌繘琛岄攢姣侊紝鎴栬呰瀹夸富紿楀彛鐨勭埗綰х獥鍙g殑姣佸潖瀵艱嚧鍏舵浜★紝浠庤岄殣寮忓湴榪涜閿姣併傝繖浜涙柟娉曠殑浠諱綍涓縐嶉兘灝嗗畨鍏ㄥ湴閿姣佸瘎瀹跨殑鎺т歡銆傝娉ㄦ剰錛孋AxWindow 瀵硅薄鐨勬瘉鍧?涓嶄細(xì)"瀵艱嚧鍩虹"AtlAxWin7"紿楀彛鐨勬瘉鍧忋?nbsp;</div><div>鏉ヨ嚜錛歨ttp://technet.microsoft.com/zh-cn/query/cc468138</div><img src ="http://www.shnenglu.com/aaxron/aggbug/211447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2015-08-01 14:24 <a href="http://www.shnenglu.com/aaxron/archive/2015/08/01/211447.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>IniFileGetValue,IniFileSetValuehttp://www.shnenglu.com/aaxron/archive/2015/07/10/211216.html澶╀笅澶╀笅Fri, 10 Jul 2015 09:25:00 GMThttp://www.shnenglu.com/aaxron/archive/2015/07/10/211216.htmlhttp://www.shnenglu.com/aaxron/comments/211216.htmlhttp://www.shnenglu.com/aaxron/archive/2015/07/10/211216.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/211216.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/211216.htmlstatic CString GetAppDirectory()
{
    CString sPath;
    GetModuleFileName(NULL,sPath.GetBuffer(MAX_PATH+1),MAX_PATH);
    //GetCurrentDirectory(MAX_PATH,sPath.GetBuffer(MAX_PATH+1));

    sPath.ReleaseBuffer ();
    int nPos;
    nPos=sPath.ReverseFind ('\\');
    sPath=sPath.Left(nPos+1);
    return sPath;
}

static CString IniFileGetValue(const CString& strFileName,const CString& strKeyPath,const CString& strDefault="")
{
    CStringArray strKeys;
    CString strValue;
    int last_pos = 0;
    int pos;
    int new_pos;
    CString strKey;
    while (1)
    {
        pos = strKeyPath.Find("/",last_pos);
        new_pos = pos;
        if (pos==-1)
            new_pos = strKeyPath.GetLength();
        strKey   = strKeyPath.Mid(last_pos,new_pos - last_pos);
        last_pos = pos+1;
        if (!strKey.IsEmpty())
            strKeys.Add(strKey);
        if (pos==-1)
            break;
    }
    if (strKeys.GetSize()!=2)
        return strDefault;
    GetPrivateProfileString(strKeys[0],strKeys[1],0,strValue.GetBuffer(4096),4095,strFileName);
    strValue.ReleaseBuffer();
    if (strValue.IsEmpty())
        return strDefault;
    return strValue;
}

static BOOL IniFileSetValue(const CString& strFileName,const CString& strKeyPath,const CString& strValue)
{
    CStringArray strKeys;
    int last_pos = 0;
    int pos;
    int new_pos;
    CString strKey;
    while (1)
    {
        pos = strKeyPath.Find("/",last_pos);
        new_pos = pos;
        if (pos==-1)
            new_pos = strKeyPath.GetLength();
        strKey   = strKeyPath.Mid(last_pos,new_pos - last_pos);
        last_pos = pos+1;
        if (!strKey.IsEmpty())
            strKeys.Add(strKey);
        if (pos==-1)
            break;
    }
    if (strKeys.GetSize()!=2)
        return FALSE;
    
    return WritePrivateProfileString(strKeys[0],strKeys[1],strValue,strFileName);
}

澶╀笅 2015-07-10 17:25 鍙戣〃璇勮
]]>
Win32娣誨姞鑷畾涔夋秷鎭?/title><link>http://www.shnenglu.com/aaxron/archive/2014/07/04/207508.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Fri, 04 Jul 2014 00:33:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2014/07/04/207508.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/207508.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2014/07/04/207508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/207508.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/207508.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">1銆佹敞鍐屾秷鎭?/span><span style="color: #008000"><br /></span><span style="color: #000000">UINT32 MSG_SUBTHREAD_CMD </span><span style="color: #000000">=</span><span style="color: #000000"> ::RegisterWindowMessage(</span><span style="color: #000000">"</span><span style="color: #000000">MSG_SUBTHREAD_CMD</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">2銆佹坊鍔犳秷鎭鐞嗗嚱鏁?/span><span style="color: #008000"><br /></span><span style="color: #000000">BEGIN_MESSAGE_MAP(CApplicationService1Dlg, CDialogEx)<br />    ON_WM_PAINT()<br />    ON_WM_QUERYDRAGICON()<br />    ON_BN_CLICKED(ID_BTN_SERVICE_RUN, </span><span style="color: #000000">&</span><span style="color: #000000">CApplicationService1Dlg::OnBnClickedBtnServiceRun)<br />    ON_REGISTERED_MESSAGE(MSG_SUBTHREAD_CMD,</span><span style="color: #000000">&</span><span style="color: #000000">CApplicationService1Dlg::OnMsgSubThreadCmd)<br />END_MESSAGE_MAP()<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">2.1 娑堟伅澶勭悊鍑芥暟</span><span style="color: #008000"><br /></span><span style="color: #000000">LRESULT CApplicationService1Dlg::OnMsgSubThreadCmd(WPARAM wParam, LPARAM lParam)<br />{<br /><br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">3.鍙戦佹秷鎭?/span><span style="color: #008000"><br /></span><span style="color: #000000">LRESULT result </span><span style="color: #000000">=</span><span style="color: #000000"> ::SendMessage(AfxGetApp()</span><span style="color: #000000">-></span><span style="color: #000000">GetMainWnd()</span><span style="color: #000000">-></span><span style="color: #000000">GetSafeHwnd(),MSG_SUBTHREAD_CMD,(WPARAM)</span><span style="color: #000000">&</span><span style="color: #000000">request,(LPARAM)</span><span style="color: #000000">&</span><span style="color: #000000">response);<br />TRACE(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,result);</span></div> <img src ="http://www.shnenglu.com/aaxron/aggbug/207508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2014-07-04 08:33 <a href="http://www.shnenglu.com/aaxron/archive/2014/07/04/207508.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Windows 娓呴櫎緗戠粶瀵嗙爜http://www.shnenglu.com/aaxron/archive/2014/04/09/206511.html澶╀笅澶╀笅Wed, 09 Apr 2014 01:21:00 GMThttp://www.shnenglu.com/aaxron/archive/2014/04/09/206511.htmlhttp://www.shnenglu.com/aaxron/comments/206511.htmlhttp://www.shnenglu.com/aaxron/archive/2014/04/09/206511.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/206511.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/206511.htmlnet use * /d /y

澶╀笅 2014-04-09 09:21 鍙戣〃璇勮
]]>
璋冭瘯VC鐨勬帶鍒跺彴紼嬪簭錛屾彁紺烘壘涓嶅埌mmvcr70.dll,mmvcp70.dll絳夈傘傘?/title><link>http://www.shnenglu.com/aaxron/archive/2013/12/12/204748.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Thu, 12 Dec 2013 07:29:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2013/12/12/204748.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/204748.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2013/12/12/204748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/204748.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/204748.html</trackback:ping><description><![CDATA[<div><span style="font-size: 12px;">璋冭瘯VC鐨勬帶鍒跺彴紼嬪簭錛屾彁紺烘壘涓嶅埌mmvcr70.dll,mmvcp70.dll絳夈傘傘?/span></div><div><span style="font-size: 12px;">“鎵句笉鍒癱oredll.dll”?</span></div><div><span style="font-size: 12px;">dll紓佺洏application嫻嬭瘯緙栬瘧鍣╯ystem</span></div><div><span style="font-size: 12px;"> 閲嶈緋葷粺鍚庡張閲嶈浜?jiǎn)VS2008  鍐欎簡(jiǎn)涓涓獁in32 console application鐨刪elloworld鍋氭祴璇曪紝緇撴灉鎻愮ず“鎵句笉鍒癱oredll.dll”錛屼笅杞藉埌璇ll鍒皊ystem32涓嬶紝鍙堟彁紺烘壘涓嶅埌mmvcr70.dll,mmvcp70.dll銆傚叏閮ㄤ笅杞藉悗鍐嶆緙栬瘧錛屾彁紺?#8220;鏃犳硶瀹氫綅搴忔暟浜?..涓?#8221;銆?/span></div><div><span style="font-size: 12px;">    鍒濇鍒嗘瀽涓篸ll搴撶増鏈棶棰橈紝浣嗚嫤浜庢壘涓嶅埌姝g‘鐨勭増鏈傚湪鍙︿竴鍙版満鍣ㄤ笂鎷瘋礉鏃跺彂鐜拌鏈哄櫒涔熸病鏈変笂榪癉LL鏂囦歡銆備絾鐢ㄨ鏈哄櫒鏂板緩宸ョ▼嫻嬭瘯閫氳繃錛屾晠鍒嗘瀽閿欒搴旇鏄嚭浜庡伐紼嬭緗垨搴撹礬寰勭瓑澶勩傚悗鍦↗AVAEYE涓婃壘鍒拌В鍐蟲柟妗堬紝鍦ㄩ」鐩?灞炴?娓呭崟宸ュ叿涓皢浣跨敤FAT32瑙e喅鍔炴硶鏀逛負(fù)“鏄?#8221;錛岄噸鏂扮敓鎴愶紝嫻嬭瘯閫氳繃銆?/span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">    鏈緇堟壘鍑洪棶棰樼殑鍘熷洜搴旇鍦ㄤ簬紓佺洏鏍煎紡錛屾垜鐨凾EST宸ョ▼鏄緩绔嬪湪FAT32鏍煎紡鐨勭洏涓紝榪欓噷搴旇灞炰簬VS2008鐨勪竴涓狟UG錛屽嵆瀹夎鍦‵AT32鏍煎紡紓佺洏涓嬫垨宸ョ▼璺緞鍦‵AT32鏍煎紡紓佺洏涓嬫椂錛岀紪璇戝櫒鍗充細(xì)鎶ヤ笂榪伴敊璇?/span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">Project/Properties/Manifest Tool/General/Use FAT32 Work-around => Yes</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">"閾炬帴鍣?/"娓呭崟鏂囦歡"/"鐢熸垚娓呭崟"閫?鏄?</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")</span></div><div><span style="font-size: 12px;"><br /></span></div><div style="font-family: Tahoma; font-size: 11px;"></div><img src ="http://www.shnenglu.com/aaxron/aggbug/204748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2013-12-12 15:29 <a href="http://www.shnenglu.com/aaxron/archive/2013/12/12/204748.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Win32璁懼涓婁笅鏂?Device Contexts)http://www.shnenglu.com/aaxron/archive/2013/06/04/200786.html澶╀笅澶╀笅Tue, 04 Jun 2013 01:08:00 GMThttp://www.shnenglu.com/aaxron/archive/2013/06/04/200786.htmlhttp://www.shnenglu.com/aaxron/comments/200786.htmlhttp://www.shnenglu.com/aaxron/archive/2013/06/04/200786.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/200786.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/200786.html
璁懼涓婁笅鏂?璁懼鍐呭)
Device Contexts
A device context is a structure that defines a set of graphic objects and their associated attributes, as well as the graphic modes that affect output. The graphic objects include a pen for line drawing, a brush for painting and filling, a bitmap for copying or scrolling parts of the screen, a palette for defining the set of available colors, a region for clipping and other operations, and a path for painting and drawing operations. The remainder of this section is divided into the following three areas. 

About Device Contexts
Device independence is one of the chief features of Microsoft Windows. Applications can draw and print output on a variety of devices. The software that supports this device independence is contained in two dynamic-link libraries. The first, Gdi.dll, is referred to as the graphics device interface (GDI); the second is referred to as a device driver. The name of the second depends on the device where the application draws output. For example, if the application draws output in the client area of its window on a VGA display, this library is Vga.dll; if the application prints output on an Epson FX-80 printer, this library is Epson9.dll. 

An application must inform GDI to load a particular device driver and, once the driver is loaded, to prepare the device for drawing operations (such as selecting a line color and width, a brush pattern and color, a font typeface, a clipping region, and so on). These tasks are accomplished by creating and maintaining a device context (DC). A DC is a structure that defines a set of graphic objects and their associated attributes, and the graphic modes that affect output. The graphic objects include a pen for line drawing, a brush for painting and filling, a bitmap for copying or scrolling parts of the screen, a palette for defining the set of available colors, a region for clipping and other operations, and a path for painting and drawing operations. Unlike most of the structures, an application never has direct access to the DC; instead, it operates on the structure indirectly by calling various functions. 

This overview provides information on the following topics: 

Graphic Objects 
Graphic Modes 
Device Context Types 
Device Context Operations 
ICM-Enabled Device Context Functions 
An important concept is the layout of a DC or a window, which describes the order in which GDI objects and text are revealed (either left-to-right or right-to-left). For more information, see "Window Layout and Mirroring" in Window Features and the GetLayout and SetLayout functions. 

Device Context Types
There are four types of DCs: display, printer, memory (or compatible), and information. Each type serves a specific purpose, as described in the following table. 

Device context Description 
Display Supports drawing operations on a video display. 
Printer Supports drawing operations on a printer or plotter. 
Memory Supports drawing operations on a bitmap. 
Information Supports the retrieval of device data. 

璁懼涓婁笅鏂囨槸windows緙栫▼涓渶閲嶈鐨勬蹇典箣涓銆倃idnows涓嬬殑鎵鏈夌粯鍥鵑兘鏄氳繃璁懼涓婁笅鏂囪繘琛岀殑銆?nbsp;
璁懼涓婁笅鏂囨槸涓縐嶅寘鍚湁鍏蟲煇涓澶囷紙濡傛樉紺哄櫒鎴栨墦鍗版満錛夌殑緇樺埗灞炴т俊鎭殑 Windows 鏁版嵁緇撴瀯銆傛墍鏈夌粯鍒惰皟鐢ㄩ兘閫氳繃璁懼涓婁笅鏂囧璞¤繘琛岋紝榪欎簺瀵硅薄灝佽浜?jiǎn)鐢ㄤ簬缁樺埗绾挎潯銆佸艦鐘跺拰鏂囨湰鐨?Windows API銆傝澶囦笂涓嬫枃鍏佽鍦?Windows 涓繘琛屼笌璁懼鏃犲叧鐨勭粯鍒躲傝澶囦笂涓嬫枃鍙敤浜庣粯鍒跺埌灞忓箷銆佹墦鍗版満鎴栬呭浘鍏冩枃浠躲?/div>

璁懼涓婁笅鏂囷紙Device Context錛塂C 
DC瀹為檯涓婃槸GDI鍐呴儴淇濆瓨鐨勬暟鎹粨鏋勩?/div>
DC涓庣壒瀹氱殑鏄劇ず璁懼錛堝鏄劇ず鍣ㄦ垨鎵撳嵃鏈猴級(jí)鐩稿叧銆?/div>
瀵逛簬鏄劇ず鍣紝DC鎬繪槸涓庢樉紺哄櫒涓婄殑鐗瑰畾瑙嗙獥鐩稿叧銆?/div>
DC涓殑鏈変簺鍊兼槸鍥懼艦銆屽睘鎬с嶏紝榪欎簺灞炴у畾涔変簡(jiǎn)GDI緇樺浘鍑芥暟宸ヤ綔鐨勭粏鑺傘?/div>
渚嬪錛屽鏂糡extOut錛孌C鐨勫睘鎬х‘瀹氫簡(jiǎn)鏂囧瓧鐨勯鑹層佹枃瀛楃殑鑳屾櫙鑹層亁鍧愭爣鍜寉鍧愭爣鏄犲皠鍒拌紿楃殑鏄劇ず鍖哄煙鐨勬柟寮忥紝浠ュ強(qiáng)鏄劇ず鏂囧瓧鏃禬indows浣跨敤鐨勫瓧浣撱?/div>
MSDN鐨勮В閲? 涓涓狣C鏄竴涓粨鏋勶紝瀹冨畾涔変簡(jiǎn)涓緋誨垪鍥懼艦瀵硅薄鐨勯泦鍚堜互鍙?qiáng)瀹冧滑鐩稿叧鐨勫睘鎬э紝浠ュ強(qiáng)褰卞搷杈撳嚭鏁堟灉鐨勪竴浜涘浘褰㈡ā寮忋傝繖浜涘浘褰㈠璞″寘鎷竴涓敾綰跨殑絎旓紝涓涓~鍏呭拰painting鐨勭敾鍒鳳紝涓涓敤鏉ュ悜灞忓箷鎷瘋礉鐨勪綅鍥撅紝涓涓畾涔変簡(jiǎn)涓緋誨垪棰滆壊闆嗗悎鐨勮皟鑹叉澘錛屼竴涓敤鏉ュ壀瑁佺瓑鎿嶄綔鐨勫尯鍩燂紝涓涓仛painting鍜宒rawing鎿嶄綔鐨勮礬寰勩?/div>

璁懼涓婁笅鏂?/div>
褰撴?zhèn)ㄦ儧_湪涓涓浘褰㈣緭鍑?guó)櫘惧锛堣濡傚睆骞曟垨鑰呮墦鍗版満錛変笂緇樺浘鏃訛紝鎮(zhèn)ㄩ鍏堝繀欏昏幏寰椾竴涓澶囦笂涓嬫枃錛堟垨鑰匘C錛夌殑鍙ユ焺銆傚皢鍙ユ焺浼犲洖緇欑▼搴忔椂錛學(xué)indows灝辯粰浜?jiǎn)鎮(zhèn)ㄤ娇鐢ㄨ畱证囩殑鏉冮檺銆傜劧鍚庢?zhèn)ㄥ湪GDI鍑芥暟涓皢榪欎釜鍙ユ焺浣滀負(fù)涓涓弬鏁幫紝鍚慦indows鏍囪瘑鎮(zhèn)ㄦ兂鍦ㄥ叾涓婅繘琛岀粯鍥劇殑璁懼銆?/div>

璁懼涓婁笅鏂囦腑鍖呭惈璁稿紜畾GDI鍑芥暟濡備綍鍦ㄨ澶囦笂宸ヤ綔鐨勭洰鍓嶃屽睘鎬с嶏紝榪欎簺灞炴у厑璁鎬紶閫掔粰GDI鍑芥暟鐨勫弬鏁板彧鍖呭惈璧峰鍧愭爣鎴栬呭昂瀵鎬俊鎭紝鑰屼笉蹇呭寘鍚玏indows鍦ㄨ澶囦笂鏄劇ず瀵硅薄鏃墮渶瑕佺殑鎵鏈夊叾瀹冧俊鎭備緥濡傦紝鍛煎彨TextOut鏃訛紝鎮(zhèn)ㄥ彧闇瑕佸湪鍑芥暟涓粰鍑?guó)櫘惧涓婁笅鏂囧彞鏌勩佽搗濮嬪潗鏍囥佹枃瀛楀拰鏂囧瓧鐨勯暱搴︺傛?zhèn)ㄤ笉蹇呮寚瀹氬瓧浣撱佹枃瀛楅鑹層佹枃瀛楀悗闈㈢殑鑳屾櫙鑹插僵浠ュ強(qiáng)瀛楃闂磋窛錛屽洜涓鴻繖浜涘睘鎬ч兘鏄澶囦笂涓嬫枃鐨勪竴閮ㄥ垎銆傚綋鎮(zhèn)ㄦ兂鏀瑰彉榪欎簺灞炴т箣涓鏃訛紝鎮(zhèn)ㄥ懠鍙竴涓彲浠ユ敼鍙樿澶囦笂涓嬫枃涓睘鎬х殑鍑芥暟錛屼互鍚庨拡瀵硅璁懼涓婁笅鏂囩殑TextOut鍛煎彨鏉ヤ嬌鐢ㄦ敼鍙樺悗鐨勫睘鎬с?/div>
鍙栧緱璁懼涓婁笅鏂囧彞鏌?/div>

Windows鎻愪緵浜?jiǎn)鍑牽U嶅彇寰楄澶囦笂涓嬫枃鍙ユ焺鐨勬柟娉曘傚鏋滃湪澶勭悊涓涓秷鎭椂鍙栧緱浜?jiǎn)璁惧涓婁笅鏂囧彞鏌勫Q屽簲璇ュ湪閫鍑虹獥鍙e嚱鏁頒箣鍓嶉噴鏀懼畠錛堟垨鑰呭垹闄ゅ畠錛夈備竴鏃﹂噴鏀句簡(jiǎn)鍙ユ焺錛屽畠?yōu)兏嶅啀鏈夋晥浜?jiǎn)銆傚浜庢墦鍗版満璁懼涓婁笅鏂囧彞鏌勶紝瑙勫垯灝辨病鏈夎繖涔堜弗鏍箋傚湪絎崄涓夌珷浼?xì)璁ㄨ鎵撳嵃銆?/div>
鏈甯哥敤鐨勫彇寰楀茍閲婃斁璁懼涓婁笅鏂囧彞鏌勭殑鏂規(guī)硶鏄紝鍦ㄥ鐞哤M_PAINT娑堟伅鏃訛紝浣跨敤BeginPaint鍜孍ndPaint鍛煎彨錛?/div>
hdc = BeginPaint (hwnd, &ps) ;
//do something
EndPaint (hwnd, &ps) ;

Windows紼嬪簭榪樺彲浠ュ湪澶勭悊闈濿M_PAINT娑堟伅鏃跺彇寰楄澶囦笂涓嬫枃鍙ユ焺錛?/div>
hdc = GetDC (hwnd) ;
//do something
ReleaseDC (hwnd, hdc) ;
        
Windows紼嬪簭榪樺彲浠ュ彇寰楅傜敤浜庢暣涓獥鍙o紙鑰屼笉浠呴檺浜庣獥鍙g殑鏄劇ず鍖哄煙錛夌殑璁懼涓婁笅鏂囧彞鏌勶細(xì)
hdc = GetWindowDC (hwnd) ;
//do something
ReleaseDC (hwnd, hdc) ;
        
榪欎釜璁懼涓婁笅鏂囬櫎浜?jiǎn)鏄窘C哄尯鍩熶箣澶栵紝榪樺寘鎷獥鍙g殑鏍囬鍒椼佽彍鍗曘佹粴鍔ㄦ潯鍜屾鏋訛紙frame錛夈侴etWindowDC鍑芥暟寰堝皯浣跨敤錛屽鏋滄兂灝濊瘯鐢ㄤ竴鐢ㄥ畠錛屽垯蹇呴』鎷︽埅澶勭悊WM_NCPAINT娑堟伅錛學(xué)indows浣跨敤璇ユ秷鎭湪紿楀彛鐨勯潪鏄劇ず鍖哄煙涓婄粯鍥俱?/div>
BeginPaint銆丟etDC鍜孏etWindowDC鑾峰緱鐨勮澶囦笂涓嬫枃閮戒笌瑙嗚鏄劇ず鍣ㄤ笂鐨勬煇涓壒瀹氱獥鍙g浉鍏熾傚彇寰楄澶囦笂涓嬫枃鍙ユ焺鐨勫彟涓涓洿閫氱敤鐨勫嚱鏁版槸CreateDC錛?/div>
hdc = CreateDC (pszDriver, pszDevice, pszOutput, pData) ;
//do something
DeleteDC (hdc) ;


璁懼涓婁笅鏂囧氨鏄竴涓獁indows瀵硅薄,鍗矰C鐨勫彞鏌勶紝鑰寃indows鍒欐槸涓縐嶅浘褰㈢幆澧冿紝鍏跺浘褰㈢郴緇熶護(hù)浜洪毦浠ヨ嚜淇″湴鐏墊椿鍜屽己澶с傝屽疄璐ㄤ笂錛寃idnows涓嬬殑鎵鏈夌粯鍥鵑兘鏄氳繃璁懼涓婁笅鏂囪繘琛岀殑錛岃屼笉鏄洿鎺ュ紿楀彛鍜岃澶囨湰韜繘琛屻?/div>

浣滀負(fù)windows鐨勫璞★紝璁懼涓婁笅鏂囧疄闄呬笂鏄竴縐峸indows鍐呴儴鐨勬暟鎹粨鏋勩?/div>
璁懼涓婁笅鏂囧悓鏍峰叿鏈夌潃瀹冭嚜韜殑灞炴э紝鍙槸灞炴ф瘮杈冨鑰屽凡錛屽涓嬭〃∶

璁懼涓婁笅鏂囧睘鎬?span style="white-space: pre" class="Apple-tab-span"> 灞炴ч粯璁ゅ?/div>
鑳屾櫙鑹?background color)  鐧借壊(white)
鑳屾櫙妯″紡(background mode)  涓嶉忔槑(opaque)
浣嶅浘(bitmap) 鏃?none)
鍒峰瓙(brush) 鐧借壊鍒峰瓙(white brush)
鍒峰瓙璧風(fēng)偣(brush origin)  0,0
鍓垏鍖?clipping region)  鏁翠釜紿楀彛鎴栬澶囪〃闈?entire window or device surface)
璋冭壊鏉?color palette)  榛樿璋冭壊鏉?default palette)
鐢葷瑪浣嶇疆(pen position)  0,0
緇樺浘妯″紡(drawing mode)  r2_copypen
瀛椾綋(font)  緋葷粺瀛椾綋
瀛楅棿璺?intercharater spacing)  0
褰卞皠妯″紡(mapping mode)  mm_text
鐢葷瑪(pen)  榛戣壊(black)
澶氳竟褰㈠~鍏呮ā寮?mapping mode)  alternate
浼哥緝妯″紡(stretching mode)  blackonwhite
鏂囨湰鑹?text color)  榛戣壊(black)
瑙嗗彛璧風(fēng)偣(viewport origin)  0,0
瑙嗗彛鑼冨洿(viewport extents)  1,1
紿楀彛璧風(fēng)偣(window origin)  0,0
紿楀彛鑼冨洿(window extents)  1,1



澶╀笅 2013-06-04 09:08 鍙戣〃璇勮
]]>linux鍒嗘瀽鍛戒護(hù)琛屽弬鏁癵etopthttp://www.shnenglu.com/aaxron/archive/2013/04/16/199484.html澶╀笅澶╀笅Tue, 16 Apr 2013 07:40:00 GMThttp://www.shnenglu.com/aaxron/archive/2013/04/16/199484.htmlhttp://www.shnenglu.com/aaxron/comments/199484.htmlhttp://www.shnenglu.com/aaxron/archive/2013/04/16/199484.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/199484.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/199484.htmlgetopt
getopt錛堝垎鏋愬懡浠よ鍙傛暟錛?br />鐩稿叧鍑芥暟
琛ㄥご鏂囦歡
#include<unistd.h>
瀹氫箟鍑芥暟:
int getopt(int argc,char * const argv[ ],const char * optstring);
extern char *optarg;
extern int optind, opterr, optopt;
鍑芥暟璇存槑 getopt()鐢ㄦ潵鍒嗘瀽鍛戒護(hù)琛屽弬鏁般傚弬鏁癮rgc鍜宎rgv鏄敱main()浼犻掔殑鍙傛暟涓暟鍜屽唴瀹廣?br />鍙傛暟optstring涓洪夐」瀛楃涓詫紝鍛婄煡 getopt()鍙互澶勭悊鍝釜閫夐」浠ュ強(qiáng)鍝釜閫夐」闇瑕佸弬鏁幫紝濡傛灉閫夐」瀛楃涓查噷鐨勫瓧姣嶅悗鎺ョ潃鍐掑彿“:”錛屽垯琛ㄧず榪樻湁鐩稿叧鐨勫弬鏁幫紝
鍏ㄥ煙鍙橀噺optarg 鍗充細(xì)鎸囧悜姝ら澶栧弬鏁般傚鏋滃湪澶勭悊鏈熼棿閬囧埌浜?jiǎn)涓嵔W﹀悎optstring鎸囧畾鐨勫叾浠栭夐」getopt()灝嗘樉紺轟竴涓敊璇秷鎭紝騫跺皢鍏ㄥ煙鍙橀噺optarg璁句負(fù)“?”瀛楃錛屽鏋滀笉甯屾湜getopt()鎵撳嵃鍑洪敊淇℃伅錛屽垯鍙灝嗗叏鍩熷彉閲弌pterr璁句負(fù)0鍗沖彲銆?br />getopt() 鎵璁劇疆鐨勫叏灞鍙橀噺鍖呮嫭錛?br />optarg——鎸囧悜褰撳墠閫夐」鍙傛暟錛堝鏋滄湁錛夌殑鎸囬拡銆?nbsp;
optind——鍐嶆璋冪敤 getopt() 鏃剁殑涓嬩竴涓?nbsp;argv 鎸囬拡鐨勭儲(chǔ)寮曘?nbsp;
optopt——鏈鍚庝竴涓凡鐭ラ夐」銆?br />琛ュ厖璇存槑涓媜ptstring涓殑鎸囧畾鐨勫唴瀹圭殑鎰忎箟錛堜緥濡俫etopt(argc, argv, "ab:c:de::");
1.鍗曚釜瀛楃錛岃〃紺洪夐」錛岋紙濡備笂渚嬩腑鐨刟bcde鍚勪負(fù)涓涓夐」錛?br />2.鍗曚釜瀛楃鍚庢帴涓涓啋鍙鳳細(xì)琛ㄧず璇ラ夐」鍚庡繀欏昏窡涓涓弬鏁般傚弬鏁扮揣璺熷湪閫夐」鍚庢垨鑰呬互絀烘牸闅斿紑銆傝鍙傛暟鐨勬寚閽堣祴緇檕ptarg銆傦紙濡備笂渚嬩腑鐨刡:c:錛?br />3 鍗曚釜瀛楃鍚庤窡涓や釜鍐掑彿錛岃〃紺鴻閫夐」鍚庡繀欏昏窡涓涓弬鏁般傚弬鏁板繀欏葷揣璺熷湪閫夐」鍚庝笉鑳戒互絀烘牸闅斿紑銆傝鍙傛暟鐨勬寚閽堣祴緇檕ptarg銆?濡備笂渚嬩腑鐨別::)


澶╀笅 2013-04-16 15:40 鍙戣〃璇勮
]]>win32涓嬩嬌鐢╣etopt,浠巕t涓紕浜?jiǎn)涓猤etop.chttp://www.shnenglu.com/aaxron/archive/2013/04/16/199482.html澶╀笅澶╀笅Tue, 16 Apr 2013 07:24:00 GMThttp://www.shnenglu.com/aaxron/archive/2013/04/16/199482.htmlhttp://www.shnenglu.com/aaxron/comments/199482.htmlhttp://www.shnenglu.com/aaxron/archive/2013/04/16/199482.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/199482.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/199482.html//getopt.h
#pragma once
#ifdef __cplusplus
extern "C" {
#endif

extern int opterr;        /* if error message should be printed */
extern int optind;        /* index into parent argv vector */
extern int optopt;            /* character checked for validity */
extern int optreset;        /* reset getopt */
extern char    *optarg;        /* argument associated with option */
int getopt(int argc, char * const argv[], const char *optstring);

#ifdef __cplusplus
}    
#endif

getopt.c 浠巕t涓紕鐨?涓琛岄兘娌℃敼

//getopt.c 浠巕t涓紕鐨?涓琛岄兘娌℃敼

/* $Id: getopt.c,v 1.2 2005/07/07 16:34:06 dron Exp $ */

/*
 * Copyright (c) 1987, 1993, 1994
 *    The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 
*/

#if 0
static char sccsid[] = "@(#)getopt.c    8.3 (Berkeley) 4/27/95";
__RCSID("$NetBSD: getopt.c,v 1.26 2003/08/07 16:43:40 agc Exp $");
#endif

#include <stdio.h>
#include <string.h>

int    opterr = 1,        /* if error message should be printed */
    optind = 1,        /* index into parent argv vector */
    optopt,            /* character checked for validity */
    optreset;        /* reset getopt */
char    *optarg;        /* argument associated with option */

#define    BADCH    (int)'?'
#define    BADARG    (int)':'
#define    EMSG    ""

/*
 * getopt --
 *    Parse argc/argv argument vector.
 
*/
int getopt(int argc, char * const argv[], const char *optstring)
{
    static char *place = EMSG;        /* option letter processing */
    char *oli;                /* option letter list index */

    if (optreset || *place == 0) {        /* update scanning pointer */
        optreset = 0;
        place = argv[optind];
        if (optind >= argc || *place++ != '-') {
            /* Argument is absent or is not an option */
            place = EMSG;
            return (-1);
        }
        optopt = *place++;
        if (optopt == '-' && *place == 0) {
            /* "--" => end of options */
            ++optind;
            place = EMSG;
            return (-1);
        }
        if (optopt == 0) {
            /* Solitary '-', treat as a '-' option
               if the program (eg su) is looking for it. 
*/
            place = EMSG;
            if (strchr(optstring, '-') == NULL)
                return -1;
            optopt = '-';
        }
    } else
        optopt = *place++;

    /* See if option letter is one the caller wanted */
    if (optopt == ':' || (oli = strchr(optstring, optopt)) == NULL) {
        if (*place == 0)
            ++optind;
        if (opterr && *optstring != ':')
            (void)fprintf(stderr,
                                      "unknown option -- %c\n", optopt);
        return (BADCH);
    }

    /* Does this option need an argument? */
    if (oli[1] != ':') {
        /* don't need argument */
        optarg = NULL;
        if (*place == 0)
            ++optind;
    } else {
        /* Option-argument is either the rest of this argument or the
           entire next argument. 
*/
        if (*place)
            optarg = place;
        else if (argc > ++optind)
            optarg = argv[optind];
        else {
            /* option-argument absent */
            place = EMSG;
            if (*optstring == ':')
                return (BADARG);
            if (opterr)
                (void)fprintf(stderr,
                                        "option requires an argument -- %c\n",
                                        optopt);
            return (BADCH);
        }
        place = EMSG;
        ++optind;
    }
    return (optopt);            /* return option letter */
}

gnu getopt鐨勪嬌鐢?
//main.c
#include<stdio.h>
#ifdef WIN32
    #include "getopt.h"
#else
    #include<unistd.h>
#endif

int main(int argc,char **argv)
{
    int ch;
    opterr = 1;
    while((ch = getopt(argc,argv,"a:bcde"))!= -1)
    {
        switch(ch)
        {
            case 'a': printf("option a:'%s'\n",optarg); break;
            case 'b': printf("option b :b\n"); break;
            default:  printf("other option :%c\n",ch);
        }
    }

    printf("optopt +%c\n",optopt);
    //system("pause");
    return 0;

}


澶╀笅 2013-04-16 15:24 鍙戣〃璇勮
]]>MFC鐨凜FileDialog鐨勪嬌鐢?/title><link>http://www.shnenglu.com/aaxron/archive/2013/03/08/198294.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Fri, 08 Mar 2013 07:04:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2013/03/08/198294.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/198294.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2013/03/08/198294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/198294.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/198294.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">淇濆瓨鏂囦歡,鎸囧畾鐩稿簲鐨勬墿灞曞悕</span><span style="color: #008000"><br /></span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000"> szFilter[] </span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">鎸囩汗妯℃澘鏂囦歡(*.dat)|*.dat|</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> pszExt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">.dat</span><span style="color: #000000">"</span><span style="color: #000000">;<br />DWORD dwFlag </span><span style="color: #000000">=</span><span style="color: #000000"> OFN_HIDEREADONLY </span><span style="color: #000000">|</span><span style="color: #000000"> OFN_OVERWRITEPROMPT </span><span style="color: #000000">|</span><span style="color: #000000"> OFN_EXTENSIONDIFFERENT;<br />CFileDialog dlg(FALSE,pszExt,NULL,dwFlag,szFilter);<br /></span><span style="color: #0000ff">if</span><span style="color: #000000"> (dlg.DoModal()</span><span style="color: #000000">!=</span><span style="color: #000000">IDOK)<br />{<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />}<br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">鎵撳紑鏂囦歡</span><span style="color: #008000"><br /></span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000"> szFilter[] </span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">utf-8緙栫爜鐨勬枃鏈枃浠?*.txt)|*.txt|</span><span style="color: #000000">"</span><span style="color: #000000">;<br />CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY </span><span style="color: #000000">|</span><span style="color: #000000"> OFN_OVERWRITEPROMPT,szFilter);<br /></span><span style="color: #0000ff">if</span><span style="color: #000000"> (dlg.DoModal()</span><span style="color: #000000">!=</span><span style="color: #000000">IDOK)<br />{<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />}<br /></span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/198294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2013-03-08 15:04 <a href="http://www.shnenglu.com/aaxron/archive/2013/03/08/198294.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VC鍒ゆ柇鐩綍鏄惁瀛樺湪鍙?qiáng)閬嶅巻鐩綍鎸囧畾鐨勬枃錃g.http://www.shnenglu.com/aaxron/archive/2013/01/10/197177.html澶╀笅澶╀笅Thu, 10 Jan 2013 10:22:00 GMThttp://www.shnenglu.com/aaxron/archive/2013/01/10/197177.htmlhttp://www.shnenglu.com/aaxron/comments/197177.htmlhttp://www.shnenglu.com/aaxron/archive/2013/01/10/197177.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/197177.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/197177.html// MakePhotoLog.cpp : Defines the entry point for the console application.

#include 
"stdafx.h"

#pragma pack(
1)
typedef 
struct __tag_file_info
{
    DWORD    length;    
//鏂囦歡闀垮害
    DWORD    crc32;    //鏆傛湭浣跨敤
    char    name[38];//鏂囦歡鍚?/span>
    char    res[4];     
} file_info;            
//Total = 50
#pragma pack()

long GetLocalFileSize(const char* szFileName)
{
    
struct stat f_stat;
    
if (stat(szFileName, &f_stat) == -1) {
        
return -1;
    }
    
return (long)f_stat.st_size;
}

BOOL IsDirectory(CString strPath) 
{     
    WIN32_FIND_DATA wfd;     
    HANDLE hFind 
= FindFirstFile(strPath, &wfd);     
    BOOL bRet 
= ((hFind!=INVALID_HANDLE_VALUE) &&  (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY));
    FindClose(hFind);     
    
return bRet; 
}



int main(int argc, char *argv[])
{
    WIN32_FIND_DATA wfd;
    HANDLE hFind;
    CString strPath;
    CString strFileName;
    CString strFind;
    CString strJpgFile;

    
if (argc<2)
    {
        printf(
"Usage:%s <photo-log path>\r\n",argv[0]);
        
return -1;
    }

    strPath 
= argv[1];
    
if (!IsDirectory(strPath))
    {
        printf(
"\"%s\" not found\r\n",argv[1]);
        
return -1;
    }
    
    PathAddBackslash(strPath.GetBuffer(strPath.GetLength()
+2));
    strPath.ReleaseBuffer();


    strFileName     
= strPath;
    strFileName 
+= "photo_log.dat";
    
    FILE
* fp = fopen("photo_log.dat","w+b");
    
if (fp==NULL)
    {
        printf(
"open \"%s\" error \r\n",(LPCTSTR)strFileName);
        
return -1;
    }

    strFind 
= strPath + "*.jpg";
    hFind 
= FindFirstFile(strFind, &wfd);
    
if (hFind == INVALID_HANDLE_VALUE) 
    {
        printf (
"Invalid File Handle. GetLastError reports %d\n", GetLastError ());
        
return -1;
    }
    
    BOOL bRet 
= TRUE;
    file_info fi;
    
int nSucced = 0;
    
while(bRet)
    {
        strJpgFile 
= strPath + wfd.cFileName;
        
if (strlen(wfd.cFileName)>32)
        {
            
continue;
        }
        memset(
&fi,0,sizeof(fi));
        fi.length 
= wfd.nFileSizeLow;
        strcpy(fi.name,wfd.cFileName);

        
if (fwrite(&fi,1,sizeof(fi),fp) == sizeof(fi))
        {
            nSucced
++;
            printf(
"%d. make photo-log(%s) succed\r\n", nSucced,(LPCTSTR)strJpgFile );
        }
        
else{
            printf(
"make photo-log(%s) failed\r\n", (LPCTSTR)strJpgFile );
            
break;
        }

        bRet 
= FindNextFile(hFind,&wfd);
    }
    printf(
"make photo-log(%d) succed\r\n",nSucced);
    FindClose(hFind);
    
if (fp!=NULL)
    {
        fclose(fp);
    }
    
return 0;
}





澶╀笅 2013-01-10 18:22 鍙戣〃璇勮
]]>緇忓吀win32 SDK 紼嬪簭http://www.shnenglu.com/aaxron/archive/2012/08/30/188701.html澶╀笅澶╀笅Thu, 30 Aug 2012 00:54:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/08/30/188701.htmlhttp://www.shnenglu.com/aaxron/comments/188701.htmlhttp://www.shnenglu.com/aaxron/archive/2012/08/30/188701.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/188701.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/188701.html#include <windows.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit

#include <atlbase.h>
#include <atlstr.h>

#define MAX_LOADSTRING 100

HINSTANCE hInst;                                // current instance
TCHAR szTitle[MAX_LOADSTRING] = "Test Windows Message";                    // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING] = "MyTestWindows";            // the main window class name

HWND main_hWnd;
HWND btn_hwnd;
DWORD btn_style = WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|WS_CHILD;
int times = 0;
// Forward declarations of functions included in this code module:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);

#define MY_BUTTON_ID (1001)


int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    
    MSG msg;

    MyRegisterClass(hInstance);

    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }

    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (msg.hwnd == main_hWnd)
        {
            ATLTRACE("%04u,[Loop Main]MSG:0x%04X,HWND:0x%06x \r\n",times++,msg.message,msg.hwnd);
        }
        if (msg.hwnd==btn_hwnd)
        {
            ATLTRACE("%04u,[Loop Button]MSG:0x%04X,HWND:0x%06x \r\n",times++,msg.message,msg.hwnd);
        }
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int) msg.wParam;
}



ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style            = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    //wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN05));
    wcex.hIcon            = NULL;
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    //wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_WIN05);
    wcex.lpszMenuName    = NULL;
    wcex.lpszClassName    = szWindowClass;
    //wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
    wcex.hIconSm        = NULL;

    return RegisterClassEx(&wcex);
}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{


   hInst = hInstance; 

   main_hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, 300, 200, NULL, NULL, hInstance, NULL);

   if (!main_hWnd)
   {
      return FALSE;
   }

   ShowWindow(main_hWnd, nCmdShow);
   UpdateWindow(main_hWnd);

   return TRUE;
}


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    ATLTRACE("%04u,[Main WndProc]MSG:0x%04X,HWND:0x%06x \r\n",times++,message,hWnd);
    switch (message)
    {
    case WM_CREATE:
        {
            //ATLTRACE("Main HWND:0x%06x \r\n",main_hWnd);
            
//ATLTRACE("WndProc HWND:0x%06x \r\n",hWnd);
            btn_hwnd = CreateWindowEx(0,"BUTTON","My button",btn_style,10,10,100,50,hWnd,(HMENU)(UINT_PTR)MY_BUTTON_ID,hInst,NULL);
            //ATLTRACE("Button HWND:0x%06x \r\n",btn_hwnd);
        }

        break;
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case 1001:
            
            //MessageBox(hWnd,"abc","bcd",MB_OK);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}


澶╀笅 2012-08-30 08:54 鍙戣〃璇勮
]]>vc2010 tr1 regexp 灝忚瘯http://www.shnenglu.com/aaxron/archive/2012/05/15/174968.html澶╀笅澶╀笅Tue, 15 May 2012 06:00:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/05/15/174968.htmlhttp://www.shnenglu.com/aaxron/comments/174968.htmlhttp://www.shnenglu.com/aaxron/archive/2012/05/15/174968.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/174968.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/174968.html#include "stdafx.h"
#include 
<regex>
#include 
<iostream>
#include 
<string>
#include 
<map>
using namespace std;

int main(int argc, char* argv[])
{

    
// 姝e垯鏇挎崲
    puts("//c++ 0x regex_replace()");
    
string str = "Hello 333world";
    tr1::regex rx(
"\\d+world");
    
string replacement = "planet";
    
string str2 = tr1::regex_replace(str, rx, replacement);
    cout 
<< "result:" << str2 << endl;
    
    
// map + auto
    puts("\r\n//map + auto");
    map
<stringstring> m;
    m[
"aaa"= "a111111";
    m[
"bbb"= "b22222";
    m[
"ccc"= "c33333";
    
for(auto i = m.begin(); i != m.end(); i++
    {
        cout 
<< i->first << i->second << endl;
    }
    
    
// c++ 0x regex_match()
    puts("\r\n//c++ 0x regex_match() ");
    
const regex p("(\\w+) \\w+ (\\d+) \\w+ (\\d+).*");
    
char *= "aaa bbb 333 eee 555";
    cmatch re;
    
bool ret = regex_match(s, re, p);
    
//if (ret)
    {
        
string t;
        
for(auto i = re.begin(); i != re.end(); i++)
        {
            t 
= i->first;
            t 
= t.substr(0, i->second - i->first);
            cout 
<< t << endl;
        }
    }
    
// c++ 0x regex_search()
    puts("\r\n//c++ 0x regex_search()");
    
char *s2 = "hello world. 123";
    regex p2(
"\\d+", tr1::regex_constants::icase);
    cmatch re2;
    regex_search(s2, re2, p2);
    cout 
<< "Matched \""  << re2.str()     
    << "\" after \"" << re2.prefix()     
    
<< "\" at offset: " << re2.position()     
    << " with length: " << re2.length()
    
<< endl; 
    
    
    cout 
<< tr1::regex r"(Hello "world")"


    getchar();

    
return 0;
}



澶╀笅 2012-05-15 14:00 鍙戣〃璇勮
]]>涓嶅甫緙撳瓨鐨処/O鍜屾爣鍑咺/Ohttp://www.shnenglu.com/aaxron/archive/2012/05/10/174468.html澶╀笅澶╀笅Thu, 10 May 2012 08:53:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/05/10/174468.htmlhttp://www.shnenglu.com/aaxron/comments/174468.htmlhttp://www.shnenglu.com/aaxron/archive/2012/05/10/174468.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/174468.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/174468.html涓嶅甫緙撳瓨鐨処/O鍜屾爣鍑咺/O

棣栧厛璇磋涓嶅甫緙撳瓨鐨処
/O錛孶NIX鐨勬枃浠禝/O read銆亀rite鏄笉甯︾紦瀛樼殑銆備笉甯︾紦瀛樻槸鎸囨瘡涓猺ead銆亀rite閮借皟鐢ㄥ唴鏍哥殑涓涓郴緇熻皟鐢紝瀹冧滑鏄疨OSIX.1鐨勭粍鎴愰儴鍒嗐?br />浜岃呯殑鍘熷瀷涓猴細(xì)
ssize_t read( 
int fd, void* buf, size_t nbytes );    // 鑻ユ垚鍔熻繑鍥炶鍒扮殑瀛楄妭鏁?/span>
ssize_t write( int fd, const void* buf, size_t nbytes );    // 鑻ユ垚鍔熻繑鍥炲凡鍐欑殑瀛楄妭鏁?/span>

娉ㄦ剰錛屼笂闈㈢殑buf涓嶆槸鎸噐ead銆亀rite甯︾紦瀛橈紝鑰屾槸褰搑ead鏃剁敤鏉ュ瓨鏀捐鍑虹殑瀛楄妭錛寃rite鏃跺瓨鏀懼緟鍐欑殑瀛楄妭銆傚浜巖ead錛宯bytes琛ㄧず姣忔鏈澶氳鐨勫瓧鑺傛暟銆備絾榪欎釜鍧楃殑澶у皬灝嗗獎(jiǎng)鍝岻
/O鐨勬晥鐜囷紝鍏跺煎拰鍏蜂綋緋葷粺鏈夊叧銆?br />
琛ュ厖涓涓嬶紝涓嶅甫緙撳瓨鐨処
/O瀵規(guī)枃浠舵弿榪扮鎿嶄綔錛屼笅闈㈠甫緙撳瓨鐨処/O鏄拡瀵規(guī)祦鐨勩?br />
鏍囧噯I
/O搴撳氨鏄甫緙撳瓨鐨処/O錛屽畠鐢盇NSI C鏍囧噯璇存槑銆傚綋鐒?dòng)灱屾爣鍑咺/O鏈緇堥兘浼?xì)璋冪敤涓婇潰鐨処/O渚嬬▼銆傛爣鍑咺/O搴撲唬鏇跨敤鎴峰鐞嗗緢澶氱粏鑺傦紝姣斿緙撳瓨鍒嗛厤銆佷互浼樺寲闀垮害鎵цI/O絳夈?br />
鏍囧噯I
/O鎻愪緵緙撳瓨鐨勭洰鐨勫氨鏄噺灝戣皟鐢╮ead鍜寃rite鐨勬鏁幫紝瀹冨姣忎釜I/O嫻佽嚜鍔ㄨ繘琛岀紦瀛樼鐞嗭紙鏍囧噯I/O鍑芥暟閫氬父璋冪敤malloc鏉ュ垎閰嶇紦瀛橈級(jí)銆傚畠鎻愪緵浜?jiǎn)涓壙U嶇被鍨嬬殑緙撳瓨錛?br />
1) 鍏ㄧ紦瀛樸傚綋濉弧鏍囧噯I/O緙撳瓨鍚庢墠鎵цI/O鎿嶄綔銆傜鐩樹笂鐨勬枃浠墮氬父鏄叏緙撳瓨鐨勩?br />
2) 琛岀紦瀛樸傚綋杈撳叆杈撳嚭閬囧埌鏂拌絎︽垨緙撳瓨婊℃椂錛屾墠鐢辨爣鍑咺/O搴撴墽琛屽疄闄匢/O鎿嶄綔銆俿tdin銆乻tdout閫氬父鏄緙撳瓨鐨勩?br />
3) 鏃犵紦瀛樸傜浉褰撲簬read銆亀rite浜?jiǎn)銆俿tderr閫氬父鏄棤緙撳瓨鐨勶紝鍥犱負(fù)瀹冨繀欏誨敖蹇緭鍑恒?br />
涓鑸岃█錛岀敱緋葷粺閫夋嫨緙撳瓨鐨勯暱搴︼紝騫惰嚜鍔ㄥ垎閰嶃傛爣鍑咺
/O搴撳湪鍏抽棴嫻佺殑鏃跺欒嚜鍔ㄩ噴鏀劇紦瀛樸?br />
鍦ㄦ爣鍑咺
/O搴撲腑錛屼竴涓晥鐜囦笉楂樼殑涓嶈凍涔嬪鏄渶瑕佸鍒剁殑鏁版嵁閲忋傚綋姣忔浣跨敤琛屽嚱鏁癴gets鍜宖puts鏃訛紝閫氬父闇瑕佸鍒朵袱嬈℃暟鎹細(xì)涓嬈℃槸鍦ㄥ唴鏍稿拰鏍囧噯I/O緙撳瓨涔嬮棿錛堝綋璋冪敤read鍜寃rite鏃訛級(jí)錛岀浜屾鏄湪鏍囧噯I/O緙撳瓨錛堥氬父緋葷粺鍒嗛厤鍜岀鐞嗭級(jí)鍜岀敤鎴風(fēng)▼搴忎腑鐨勮緙撳瓨錛坒gets鐨勫弬鏁板氨闇瑕佷竴涓敤鎴瘋緙撳瓨鎸囬拡錛変箣闂淬?br />
涓嶇涓婇潰璁茬殑鍒板簳鎳傛病鎳傦紝璁頒綇涓鐐癸細(xì)

浣跨敤鏍囧噯I
/O渚嬬▼鐨勪竴涓紭鐐規(guī)槸鏃犻渶鑰冭檻緙撳瓨鍙?qiáng)鏈浣矷/O闀垮害鐨勯夋嫨錛屽茍涓斿畠騫朵笉姣旂洿鎺ヨ皟鐢╮ead銆亀rite鎱㈠灝戙?br />
甯︾紦瀛樼殑鏂囦歡鎿嶄綔鏄爣鍑咰 搴撶殑瀹炵幇錛岀涓嬈¤皟鐢ㄥ甫緙撳瓨鐨勬枃浠舵搷浣滃嚱鏁版椂鏍囧噯搴撲細(xì)鑷姩鍒嗛厤鍐呭瓨騫朵笖璇誨嚭涓孌靛浐瀹氬ぇ灝忕殑鍐呭瀛樺偍鍦ㄧ紦瀛樹腑銆傛墍浠ヤ互鍚庢瘡嬈$殑璇誨啓鎿嶄綔騫朵笉鏄拡瀵圭‖鐩樹笂鐨勬枃浠剁洿鎺ヨ繘琛岀殑錛岃屾槸閽堝鍐呭瓨涓殑緙撳瓨鐨勩備綍鏃朵粠紜洏涓鍙栨枃浠舵垨鑰呭悜紜洏涓啓鍏ユ枃浠舵湁鏍囧噯搴撶殑鏈哄埗鎺у埗銆備笉甯︾紦瀛樼殑鏂囦歡鎿嶄綔閫氬父閮芥槸緋葷粺鎻愪緵鐨勭郴緇熻皟鐢紝鏇村姞浣庣駭錛岀洿鎺ヤ粠紜洏涓鍙栧拰鍐欏叆鏂囦歡錛岀敱浜嶪O鐡墮鐨勫師鍥狅紝閫熷害騫朵笉濡傛剰錛岃屼笖鍘熷瓙鎿嶄綔闇瑕佺▼搴忓憳鑷繁淇濊瘉錛屼絾浣跨敤寰楀綋鐨勮瘽鏁堢巼騫朵笉宸?br />鍙﹀鏍囧噯搴撲腑鐨勫甫緙撳瓨鏂囦歡IO 鏄皟鐢ㄧ郴緇熸彁渚涚殑涓嶅甫緙撳瓨I(yè)O瀹炵幇鐨勩?br />
“鏈涓嶅甫緙撳啿鎸囩殑鏄瘡涓猺ead鍜寃rite閮借皟鐢ㄥ唴鏍鎬腑鐨勪竴涓郴緇熻皟鐢ㄣ傛墍鏈夌殑紓佺洏I(yè)
/O閮借緇忚繃鍐呮牳鐨勫潡緙撳啿錛堜篃縐板唴鏍哥殑緙撳啿鍖洪珮閫熺紦瀛橈級(jí)錛屽敮涓渚嬪鐨勬槸瀵瑰師濮嬬鐩樿澶囩殑I/O銆傛棦鐒秗ead鎴杦rite鐨勬暟鎹兘瑕佽鍐呮牳緙撳啿錛岄偅涔堟湳璇?#8220;涓嶅甫緙撳啿鐨処/O“鎸囩殑鏄湪鐢ㄦ埛鐨勮繘紼嬩腑瀵硅繖涓や釜鍑芥暟涓嶄細(xì)鑷姩緙撳啿錛屾瘡嬈ead鎴杦rite灝辮榪涜涓嬈$郴緇熻皟鐢ㄣ?#8220;

--------鎽樿嚜<unix鐜緙栫▼>


澶╀笅 2012-05-10 16:53 鍙戣〃璇勮
]]>windows璺緞鎿嶄綔API鍑芥暟http://www.shnenglu.com/aaxron/archive/2012/05/02/173495.html澶╀笅澶╀笅Wed, 02 May 2012 10:04:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/05/02/173495.htmlhttp://www.shnenglu.com/aaxron/comments/173495.htmlhttp://www.shnenglu.com/aaxron/archive/2012/05/02/173495.html#Feedback1http://www.shnenglu.com/aaxron/comments/commentRss/173495.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/173495.html闃呰鍏ㄦ枃

澶╀笅 2012-05-02 18:04 鍙戣〃璇勮
]]>
CRC32綆楁硶錛堟煡琛ㄦ硶錛変唬鐮?/title><link>http://www.shnenglu.com/aaxron/archive/2012/04/18/171890.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Wed, 18 Apr 2012 10:02:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/04/18/171890.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/171890.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/04/18/171890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/171890.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/171890.html</trackback:ping><description><![CDATA[<div> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include </span><span style="color: #000000"><</span><span style="color: #000000">windows.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">stdio.h</span><span style="color: #000000">></span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> PrintCrcTable()<br />{<br />    </span><span style="color: #008000">//</span><span style="color: #008000">Poly = 0xedb88320 WinRAR Poly</span><span style="color: #008000"><br /></span><span style="color: #000000">    DWORD Val;<br />    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (DWORD i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> </span><span style="color: #000000">256</span><span style="color: #000000">; i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />    {<br />        Val </span><span style="color: #000000">=</span><span style="color: #000000"> i;<br />        </span><span style="color: #0000ff">for</span><span style="color: #000000"> (DWORD k </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; k </span><span style="color: #000000"><</span><span style="color: #000000"> </span><span style="color: #000000">8</span><span style="color: #000000">; k</span><span style="color: #000000">++</span><span style="color: #000000">)<br />        {<br />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (Val </span><span style="color: #000000">&</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">)<br />                Val </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0xedb88320L</span><span style="color: #000000"> </span><span style="color: #000000">^</span><span style="color: #000000"> (Val </span><span style="color: #000000">>></span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">);<br />            </span><span style="color: #0000ff">else</span><span style="color: #000000"><br />                Val </span><span style="color: #000000">=</span><span style="color: #000000"> Val </span><span style="color: #000000">>></span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />        }<br />        printf (</span><span style="color: #000000">"</span><span style="color: #000000">0x%08x, </span><span style="color: #000000">"</span><span style="color: #000000">, Val);<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">0</span><span style="color: #000000"> </span><span style="color: #000000">==</span><span style="color: #000000"> ((i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">%</span><span style="color: #000000">6</span><span style="color: #000000">))<br />            printf (</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    }<br />}<br /><br /><br /><br /></span><span style="color: #0000ff">const</span><span style="color: #000000"> DWORD Crc32Table[] </span><span style="color: #000000">=</span><span style="color: #000000"><br />{<br />    </span><span style="color: #000000">0x00000000</span><span style="color: #000000">, </span><span style="color: #000000">0x77073096</span><span style="color: #000000">, </span><span style="color: #000000">0xee0e612c</span><span style="color: #000000">, </span><span style="color: #000000">0x990951ba</span><span style="color: #000000">, </span><span style="color: #000000">0x076dc419</span><span style="color: #000000">, </span><span style="color: #000000">0x706af48f</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xe963a535</span><span style="color: #000000">, </span><span style="color: #000000">0x9e6495a3</span><span style="color: #000000">, </span><span style="color: #000000">0x0edb8832</span><span style="color: #000000">, </span><span style="color: #000000">0x79dcb8a4</span><span style="color: #000000">, </span><span style="color: #000000">0xe0d5e91e</span><span style="color: #000000">, </span><span style="color: #000000">0x97d2d988</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x09b64c2b</span><span style="color: #000000">, </span><span style="color: #000000">0x7eb17cbd</span><span style="color: #000000">, </span><span style="color: #000000">0xe7b82d07</span><span style="color: #000000">, </span><span style="color: #000000">0x90bf1d91</span><span style="color: #000000">, </span><span style="color: #000000">0x1db71064</span><span style="color: #000000">, </span><span style="color: #000000">0x6ab020f2</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xf3b97148</span><span style="color: #000000">, </span><span style="color: #000000">0x84be41de</span><span style="color: #000000">, </span><span style="color: #000000">0x1adad47d</span><span style="color: #000000">, </span><span style="color: #000000">0x6ddde4eb</span><span style="color: #000000">, </span><span style="color: #000000">0xf4d4b551</span><span style="color: #000000">, </span><span style="color: #000000">0x83d385c7</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x136c9856</span><span style="color: #000000">, </span><span style="color: #000000">0x646ba8c0</span><span style="color: #000000">, </span><span style="color: #000000">0xfd62f97a</span><span style="color: #000000">, </span><span style="color: #000000">0x8a65c9ec</span><span style="color: #000000">, </span><span style="color: #000000">0x14015c4f</span><span style="color: #000000">, </span><span style="color: #000000">0x63066cd9</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xfa0f3d63</span><span style="color: #000000">, </span><span style="color: #000000">0x8d080df5</span><span style="color: #000000">, </span><span style="color: #000000">0x3b6e20c8</span><span style="color: #000000">, </span><span style="color: #000000">0x4c69105e</span><span style="color: #000000">, </span><span style="color: #000000">0xd56041e4</span><span style="color: #000000">, </span><span style="color: #000000">0xa2677172</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x3c03e4d1</span><span style="color: #000000">, </span><span style="color: #000000">0x4b04d447</span><span style="color: #000000">, </span><span style="color: #000000">0xd20d85fd</span><span style="color: #000000">, </span><span style="color: #000000">0xa50ab56b</span><span style="color: #000000">, </span><span style="color: #000000">0x35b5a8fa</span><span style="color: #000000">, </span><span style="color: #000000">0x42b2986c</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xdbbbc9d6</span><span style="color: #000000">, </span><span style="color: #000000">0xacbcf940</span><span style="color: #000000">, </span><span style="color: #000000">0x32d86ce3</span><span style="color: #000000">, </span><span style="color: #000000">0x45df5c75</span><span style="color: #000000">, </span><span style="color: #000000">0xdcd60dcf</span><span style="color: #000000">, </span><span style="color: #000000">0xabd13d59</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x26d930ac</span><span style="color: #000000">, </span><span style="color: #000000">0x51de003a</span><span style="color: #000000">, </span><span style="color: #000000">0xc8d75180</span><span style="color: #000000">, </span><span style="color: #000000">0xbfd06116</span><span style="color: #000000">, </span><span style="color: #000000">0x21b4f4b5</span><span style="color: #000000">, </span><span style="color: #000000">0x56b3c423</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xcfba9599</span><span style="color: #000000">, </span><span style="color: #000000">0xb8bda50f</span><span style="color: #000000">, </span><span style="color: #000000">0x2802b89e</span><span style="color: #000000">, </span><span style="color: #000000">0x5f058808</span><span style="color: #000000">, </span><span style="color: #000000">0xc60cd9b2</span><span style="color: #000000">, </span><span style="color: #000000">0xb10be924</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x2f6f7c87</span><span style="color: #000000">, </span><span style="color: #000000">0x58684c11</span><span style="color: #000000">, </span><span style="color: #000000">0xc1611dab</span><span style="color: #000000">, </span><span style="color: #000000">0xb6662d3d</span><span style="color: #000000">, </span><span style="color: #000000">0x76dc4190</span><span style="color: #000000">, </span><span style="color: #000000">0x01db7106</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x98d220bc</span><span style="color: #000000">, </span><span style="color: #000000">0xefd5102a</span><span style="color: #000000">, </span><span style="color: #000000">0x71b18589</span><span style="color: #000000">, </span><span style="color: #000000">0x06b6b51f</span><span style="color: #000000">, </span><span style="color: #000000">0x9fbfe4a5</span><span style="color: #000000">, </span><span style="color: #000000">0xe8b8d433</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x7807c9a2</span><span style="color: #000000">, </span><span style="color: #000000">0x0f00f934</span><span style="color: #000000">, </span><span style="color: #000000">0x9609a88e</span><span style="color: #000000">, </span><span style="color: #000000">0xe10e9818</span><span style="color: #000000">, </span><span style="color: #000000">0x7f6a0dbb</span><span style="color: #000000">, </span><span style="color: #000000">0x086d3d2d</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x91646c97</span><span style="color: #000000">, </span><span style="color: #000000">0xe6635c01</span><span style="color: #000000">, </span><span style="color: #000000">0x6b6b51f4</span><span style="color: #000000">, </span><span style="color: #000000">0x1c6c6162</span><span style="color: #000000">, </span><span style="color: #000000">0x856530d8</span><span style="color: #000000">, </span><span style="color: #000000">0xf262004e</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x6c0695ed</span><span style="color: #000000">, </span><span style="color: #000000">0x1b01a57b</span><span style="color: #000000">, </span><span style="color: #000000">0x8208f4c1</span><span style="color: #000000">, </span><span style="color: #000000">0xf50fc457</span><span style="color: #000000">, </span><span style="color: #000000">0x65b0d9c6</span><span style="color: #000000">, </span><span style="color: #000000">0x12b7e950</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x8bbeb8ea</span><span style="color: #000000">, </span><span style="color: #000000">0xfcb9887c</span><span style="color: #000000">, </span><span style="color: #000000">0x62dd1ddf</span><span style="color: #000000">, </span><span style="color: #000000">0x15da2d49</span><span style="color: #000000">, </span><span style="color: #000000">0x8cd37cf3</span><span style="color: #000000">, </span><span style="color: #000000">0xfbd44c65</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x4db26158</span><span style="color: #000000">, </span><span style="color: #000000">0x3ab551ce</span><span style="color: #000000">, </span><span style="color: #000000">0xa3bc0074</span><span style="color: #000000">, </span><span style="color: #000000">0xd4bb30e2</span><span style="color: #000000">, </span><span style="color: #000000">0x4adfa541</span><span style="color: #000000">, </span><span style="color: #000000">0x3dd895d7</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xa4d1c46d</span><span style="color: #000000">, </span><span style="color: #000000">0xd3d6f4fb</span><span style="color: #000000">, </span><span style="color: #000000">0x4369e96a</span><span style="color: #000000">, </span><span style="color: #000000">0x346ed9fc</span><span style="color: #000000">, </span><span style="color: #000000">0xad678846</span><span style="color: #000000">, </span><span style="color: #000000">0xda60b8d0</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x44042d73</span><span style="color: #000000">, </span><span style="color: #000000">0x33031de5</span><span style="color: #000000">, </span><span style="color: #000000">0xaa0a4c5f</span><span style="color: #000000">, </span><span style="color: #000000">0xdd0d7cc9</span><span style="color: #000000">, </span><span style="color: #000000">0x5005713c</span><span style="color: #000000">, </span><span style="color: #000000">0x270241aa</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xbe0b1010</span><span style="color: #000000">, </span><span style="color: #000000">0xc90c2086</span><span style="color: #000000">, </span><span style="color: #000000">0x5768b525</span><span style="color: #000000">, </span><span style="color: #000000">0x206f85b3</span><span style="color: #000000">, </span><span style="color: #000000">0xb966d409</span><span style="color: #000000">, </span><span style="color: #000000">0xce61e49f</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x5edef90e</span><span style="color: #000000">, </span><span style="color: #000000">0x29d9c998</span><span style="color: #000000">, </span><span style="color: #000000">0xb0d09822</span><span style="color: #000000">, </span><span style="color: #000000">0xc7d7a8b4</span><span style="color: #000000">, </span><span style="color: #000000">0x59b33d17</span><span style="color: #000000">, </span><span style="color: #000000">0x2eb40d81</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xb7bd5c3b</span><span style="color: #000000">, </span><span style="color: #000000">0xc0ba6cad</span><span style="color: #000000">, </span><span style="color: #000000">0xedb88320</span><span style="color: #000000">, </span><span style="color: #000000">0x9abfb3b6</span><span style="color: #000000">, </span><span style="color: #000000">0x03b6e20c</span><span style="color: #000000">, </span><span style="color: #000000">0x74b1d29a</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xead54739</span><span style="color: #000000">, </span><span style="color: #000000">0x9dd277af</span><span style="color: #000000">, </span><span style="color: #000000">0x04db2615</span><span style="color: #000000">, </span><span style="color: #000000">0x73dc1683</span><span style="color: #000000">, </span><span style="color: #000000">0xe3630b12</span><span style="color: #000000">, </span><span style="color: #000000">0x94643b84</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x0d6d6a3e</span><span style="color: #000000">, </span><span style="color: #000000">0x7a6a5aa8</span><span style="color: #000000">, </span><span style="color: #000000">0xe40ecf0b</span><span style="color: #000000">, </span><span style="color: #000000">0x9309ff9d</span><span style="color: #000000">, </span><span style="color: #000000">0x0a00ae27</span><span style="color: #000000">, </span><span style="color: #000000">0x7d079eb1</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xf00f9344</span><span style="color: #000000">, </span><span style="color: #000000">0x8708a3d2</span><span style="color: #000000">, </span><span style="color: #000000">0x1e01f268</span><span style="color: #000000">, </span><span style="color: #000000">0x6906c2fe</span><span style="color: #000000">, </span><span style="color: #000000">0xf762575d</span><span style="color: #000000">, </span><span style="color: #000000">0x806567cb</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x196c3671</span><span style="color: #000000">, </span><span style="color: #000000">0x6e6b06e7</span><span style="color: #000000">, </span><span style="color: #000000">0xfed41b76</span><span style="color: #000000">, </span><span style="color: #000000">0x89d32be0</span><span style="color: #000000">, </span><span style="color: #000000">0x10da7a5a</span><span style="color: #000000">, </span><span style="color: #000000">0x67dd4acc</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xf9b9df6f</span><span style="color: #000000">, </span><span style="color: #000000">0x8ebeeff9</span><span style="color: #000000">, </span><span style="color: #000000">0x17b7be43</span><span style="color: #000000">, </span><span style="color: #000000">0x60b08ed5</span><span style="color: #000000">, </span><span style="color: #000000">0xd6d6a3e8</span><span style="color: #000000">, </span><span style="color: #000000">0xa1d1937e</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x38d8c2c4</span><span style="color: #000000">, </span><span style="color: #000000">0x4fdff252</span><span style="color: #000000">, </span><span style="color: #000000">0xd1bb67f1</span><span style="color: #000000">, </span><span style="color: #000000">0xa6bc5767</span><span style="color: #000000">, </span><span style="color: #000000">0x3fb506dd</span><span style="color: #000000">, </span><span style="color: #000000">0x48b2364b</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xd80d2bda</span><span style="color: #000000">, </span><span style="color: #000000">0xaf0a1b4c</span><span style="color: #000000">, </span><span style="color: #000000">0x36034af6</span><span style="color: #000000">, </span><span style="color: #000000">0x41047a60</span><span style="color: #000000">, </span><span style="color: #000000">0xdf60efc3</span><span style="color: #000000">, </span><span style="color: #000000">0xa867df55</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x316e8eef</span><span style="color: #000000">, </span><span style="color: #000000">0x4669be79</span><span style="color: #000000">, </span><span style="color: #000000">0xcb61b38c</span><span style="color: #000000">, </span><span style="color: #000000">0xbc66831a</span><span style="color: #000000">, </span><span style="color: #000000">0x256fd2a0</span><span style="color: #000000">, </span><span style="color: #000000">0x5268e236</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xcc0c7795</span><span style="color: #000000">, </span><span style="color: #000000">0xbb0b4703</span><span style="color: #000000">, </span><span style="color: #000000">0x220216b9</span><span style="color: #000000">, </span><span style="color: #000000">0x5505262f</span><span style="color: #000000">, </span><span style="color: #000000">0xc5ba3bbe</span><span style="color: #000000">, </span><span style="color: #000000">0xb2bd0b28</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x2bb45a92</span><span style="color: #000000">, </span><span style="color: #000000">0x5cb36a04</span><span style="color: #000000">, </span><span style="color: #000000">0xc2d7ffa7</span><span style="color: #000000">, </span><span style="color: #000000">0xb5d0cf31</span><span style="color: #000000">, </span><span style="color: #000000">0x2cd99e8b</span><span style="color: #000000">, </span><span style="color: #000000">0x5bdeae1d</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x9b64c2b0</span><span style="color: #000000">, </span><span style="color: #000000">0xec63f226</span><span style="color: #000000">, </span><span style="color: #000000">0x756aa39c</span><span style="color: #000000">, </span><span style="color: #000000">0x026d930a</span><span style="color: #000000">, </span><span style="color: #000000">0x9c0906a9</span><span style="color: #000000">, </span><span style="color: #000000">0xeb0e363f</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x72076785</span><span style="color: #000000">, </span><span style="color: #000000">0x05005713</span><span style="color: #000000">, </span><span style="color: #000000">0x95bf4a82</span><span style="color: #000000">, </span><span style="color: #000000">0xe2b87a14</span><span style="color: #000000">, </span><span style="color: #000000">0x7bb12bae</span><span style="color: #000000">, </span><span style="color: #000000">0x0cb61b38</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x92d28e9b</span><span style="color: #000000">, </span><span style="color: #000000">0xe5d5be0d</span><span style="color: #000000">, </span><span style="color: #000000">0x7cdcefb7</span><span style="color: #000000">, </span><span style="color: #000000">0x0bdbdf21</span><span style="color: #000000">, </span><span style="color: #000000">0x86d3d2d4</span><span style="color: #000000">, </span><span style="color: #000000">0xf1d4e242</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x68ddb3f8</span><span style="color: #000000">, </span><span style="color: #000000">0x1fda836e</span><span style="color: #000000">, </span><span style="color: #000000">0x81be16cd</span><span style="color: #000000">, </span><span style="color: #000000">0xf6b9265b</span><span style="color: #000000">, </span><span style="color: #000000">0x6fb077e1</span><span style="color: #000000">, </span><span style="color: #000000">0x18b74777</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x88085ae6</span><span style="color: #000000">, </span><span style="color: #000000">0xff0f6a70</span><span style="color: #000000">, </span><span style="color: #000000">0x66063bca</span><span style="color: #000000">, </span><span style="color: #000000">0x11010b5c</span><span style="color: #000000">, </span><span style="color: #000000">0x8f659eff</span><span style="color: #000000">, </span><span style="color: #000000">0xf862ae69</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x616bffd3</span><span style="color: #000000">, </span><span style="color: #000000">0x166ccf45</span><span style="color: #000000">, </span><span style="color: #000000">0xa00ae278</span><span style="color: #000000">, </span><span style="color: #000000">0xd70dd2ee</span><span style="color: #000000">, </span><span style="color: #000000">0x4e048354</span><span style="color: #000000">, </span><span style="color: #000000">0x3903b3c2</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xa7672661</span><span style="color: #000000">, </span><span style="color: #000000">0xd06016f7</span><span style="color: #000000">, </span><span style="color: #000000">0x4969474d</span><span style="color: #000000">, </span><span style="color: #000000">0x3e6e77db</span><span style="color: #000000">, </span><span style="color: #000000">0xaed16a4a</span><span style="color: #000000">, </span><span style="color: #000000">0xd9d65adc</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x40df0b66</span><span style="color: #000000">, </span><span style="color: #000000">0x37d83bf0</span><span style="color: #000000">, </span><span style="color: #000000">0xa9bcae53</span><span style="color: #000000">, </span><span style="color: #000000">0xdebb9ec5</span><span style="color: #000000">, </span><span style="color: #000000">0x47b2cf7f</span><span style="color: #000000">, </span><span style="color: #000000">0x30b5ffe9</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xbdbdf21c</span><span style="color: #000000">, </span><span style="color: #000000">0xcabac28a</span><span style="color: #000000">, </span><span style="color: #000000">0x53b39330</span><span style="color: #000000">, </span><span style="color: #000000">0x24b4a3a6</span><span style="color: #000000">, </span><span style="color: #000000">0xbad03605</span><span style="color: #000000">, </span><span style="color: #000000">0xcdd70693</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0x54de5729</span><span style="color: #000000">, </span><span style="color: #000000">0x23d967bf</span><span style="color: #000000">, </span><span style="color: #000000">0xb3667a2e</span><span style="color: #000000">, </span><span style="color: #000000">0xc4614ab8</span><span style="color: #000000">, </span><span style="color: #000000">0x5d681b02</span><span style="color: #000000">, </span><span style="color: #000000">0x2a6f2b94</span><span style="color: #000000">,<br />    </span><span style="color: #000000">0xb40bbe37</span><span style="color: #000000">, </span><span style="color: #000000">0xc30c8ea1</span><span style="color: #000000">, </span><span style="color: #000000">0x5a05df1b</span><span style="color: #000000">, </span><span style="color: #000000">0x2d02ef8d</span><span style="color: #000000"><br />};<br /><br />DWORD GenerateCrc32(DWORD PartialCrc,PUCHAR  Buffer,DWORD   Length)<br />{<br />    DWORD crc;<br />    DWORD i;<br /><br />    </span><span style="color: #008000">//</span><span style="color: #008000"> Generate the CRC32 checksum.</span><span style="color: #008000"><br /></span><span style="color: #000000">    crc </span><span style="color: #000000">=</span><span style="color: #000000"> PartialCrc </span><span style="color: #000000">^</span><span style="color: #000000"> </span><span style="color: #000000">0xffffffffL</span><span style="color: #000000">;<br /><br />    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> Length; i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />    {<br />        crc </span><span style="color: #000000">=</span><span style="color: #000000"> Crc32Table[(crc </span><span style="color: #000000">^</span><span style="color: #000000"> Buffer[i]) </span><span style="color: #000000">&</span><span style="color: #000000"> </span><span style="color: #000000">0xff</span><span style="color: #000000">] </span><span style="color: #000000">^</span><span style="color: #000000"> (crc </span><span style="color: #000000">>></span><span style="color: #000000"> </span><span style="color: #000000">8</span><span style="color: #000000">);<br />    }<br /><br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> (crc </span><span style="color: #000000">^</span><span style="color: #000000"> </span><span style="color: #000000">0xffffffffL</span><span style="color: #000000">);<br />}<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">嫻嬭瘯紼嬪簭</span><span style="color: #008000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">int</span><span style="color: #000000"> argc,</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> argv[])<br />{<br />    </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> szFileName </span><span style="color: #000000">=</span><span style="color: #000000"> NULL;<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (argc</span><span style="color: #000000"><</span><span style="color: #000000">2</span><span style="color: #000000">)<br />    {<br />        printf(</span><span style="color: #000000">"</span><span style="color: #000000">Usage:%s <filename> \r\n</span><span style="color: #000000">"</span><span style="color: #000000">,argv[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br />    }<br />    szFileName </span><span style="color: #000000">=</span><span style="color: #000000"> argv[</span><span style="color: #000000">1</span><span style="color: #000000">];<br />    FILE </span><span style="color: #000000">*</span><span style="color: #000000">fp </span><span style="color: #000000">=</span><span style="color: #000000"> fopen(szFileName,</span><span style="color: #000000">"</span><span style="color: #000000">rb</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000">(NULL </span><span style="color: #000000">==</span><span style="color: #000000"> fp) <br />    {<br />        printf(</span><span style="color: #000000">"</span><span style="color: #000000">Open %s error:%d \r\n</span><span style="color: #000000">"</span><span style="color: #000000">,szFileName);<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    }<br /><br />    DWORD crc32 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    BYTE c </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #000000">1</span><span style="color: #000000"> </span><span style="color: #000000">==</span><span style="color: #000000"> fread(</span><span style="color: #000000">&</span><span style="color: #000000">c,</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">,fp))<br />        crc32 </span><span style="color: #000000">=</span><span style="color: #000000"> GenerateCrc32(crc32,</span><span style="color: #000000">&</span><span style="color: #000000">c,</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><br />    fclose(fp);<br /><br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">CRC32 = 0x%08X</span><span style="color: #000000">"</span><span style="color: #000000">, crc32);<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />}</span></div></div><img src ="http://www.shnenglu.com/aaxron/aggbug/171890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-04-18 18:02 <a href="http://www.shnenglu.com/aaxron/archive/2012/04/18/171890.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏉′歡緙栬瘧瀹忓皬緇?http://www.shnenglu.com/aaxron/archive/2012/04/18/171838.html澶╀笅澶╀笅Wed, 18 Apr 2012 02:41:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/04/18/171838.htmlhttp://www.shnenglu.com/aaxron/comments/171838.htmlhttp://www.shnenglu.com/aaxron/archive/2012/04/18/171838.html#Feedback1http://www.shnenglu.com/aaxron/comments/commentRss/171838.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/171838.html緙栫爜鐨勬椂鍊欑粡甯歌鐢ㄥ埌鏉′歡緙栬瘧錛屾瘡嬈¢兘鍒扮綉涓婂幓鏌ユ瘮杈冩氮璐規(guī)椂闂達(dá)紝浠婂ぉ鎬葷粨涓涓嬩互澶囧悗鐢?br />
    緙栬瘧鍣?br />         GCC
        #ifdef __GNUC__
            #if __GNUC__ >= 3 // GCC3.0浠ヤ笂
        Visual C++
        #ifdef _MSC_VER錛堥潪VC緙栬瘧鍣ㄥ緢澶氬湴鏂逛篃鏈夊畾涔夛級(jí)
            #if _MSC_VER >=1000 // VC++4.0浠ヤ笂
            #if _MSC_VER >=1100 // VC++5.0浠ヤ笂
            #if _MSC_VER >=1200 // VC++6.0浠ヤ笂
            #if _MSC_VER >=1300 // VC2003浠ヤ笂
            #if _MSC_VER >=1400 // VC2005浠ヤ笂
        Borland C++
        #ifdef __BORLANDC__
    UNIX
        UNIX
        #ifdef __unix
        or
        #ifdef __unix__
        Linux
        #ifdef __linux
        or
        #ifdef __linux__
        FreeBSD
        #ifdef __FreeBSD__
        NetBSD
        #ifdef __NetBSD__
    Windows
        32bit
        #ifdef _WIN32錛堟垨鑰匴IN32錛?br />         64bit
        #ifdef _WIN64
        GUI  App
        #ifdef _WINDOWS 
        CUI  App
        #ifdef _CONSOLE
        Windows鐨刅er … WINVER
        ※ PC鏈篧indows錛?5/98/Me/NT/2000/XP/Vista錛夊拰W(xué)indows CE閮藉畾涔変簡(jiǎn)
            #if (WINVER >= 0x030a) // Windows 3.1浠ヤ笂
            #if (WINVER >= 0x0400) // Windows 95/NT4.0浠ヤ笂
            #if (WINVER >= 0x0410) // Windows 98浠ヤ笂
            #if (WINVER >= 0x0500) // Windows Me/2000浠ヤ笂
            #if (WINVER >= 0x0501) // Windows XP浠ヤ笂
            #if (WINVER >= 0x0600) // Windows Vista浠ヤ笂
        Windows 95/98/Me鐨刅er … _WIN32_WINDOWS
            MFC App銆丳C鏈轟笂錛圵indows CE娌℃湁瀹氫箟錛?br />             #ifdef _WIN32_WINDOWS
            #if (_WIN32_WINDOWS >= 0x0400) // Windows 95浠ヤ笂
            #if (_WIN32_WINDOWS >= 0x0410) // Windows 98浠ヤ笂
            #if (_WIN32_WINDOWS >= 0x0500) // Windows Me浠ヤ笂
        Windows NT鐨刅er … _WIN32_WINNT
            #if (_WIN32_WINNT >= 0x0500) // Windows 2000浠ヤ笂
            #if (_WIN32_WINNT >= 0x0501) // Windows XP浠ヤ笂
            #if (_WIN32_WINNT >= 0x0600) // Windows Vista浠ヤ笂
        Windows CE錛圥ocketPC錛?br />         #ifdef _WIN32_WCE
        Windows CE … WINCEOSVER
        Windows CE
        WCE_IF
        Internet Explorer鐨刅er … _WIN32_IE 
    Cygwin
        Cygwin
        #ifdef __CYGWIN__
        32bit鐗圕ygwin錛堢幇鍦ㄥソ鍍忚繕娌℃湁64bit鐗堬級(jí)
        #ifdef __CYGWIN32__
        MinGW錛?mno-cygwin鎸囧畾錛?br />         #ifdef __MINGW32__

杞細(xì)http://blog.csdn.net/immcss/article/details/3881827



澶╀笅 2012-04-18 10:41 鍙戣〃璇勮
]]>UTF-8瀛楃涓?/title><link>http://www.shnenglu.com/aaxron/archive/2012/03/27/169116.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Tue, 27 Mar 2012 03:30:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/03/27/169116.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/169116.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/03/27/169116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/169116.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/169116.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#include <atlbase.h><br /> <span style="color: #0000FF; ">int</span> main()<br /> {<br />     <span style="color: #0000FF; ">char</span>* pszOctText = "\344\270\273\346\234\272\345\220\215"; <span style="color: #008000; ">//</span><span style="color: #008000; ">"涓繪満鍚? , 8榪涘埗鏍煎紡,UTF-8緙栫爜</span><span style="color: #008000; "><br /></span>     <span style="color: #0000FF; ">char</span>* pszHexText = "\xe5\x8d\xa1\xe5\x8f\xb7";               <span style="color: #008000; ">//</span><span style="color: #008000; ">"鍗″彿" ,   16榪涘埗鏍煎紡,UTF-8緙栫爜</span><span style="color: #008000; "><br /></span>     <span style="color: #0000FF; ">char</span> *pszUnicodeText="\u73b0\u4ee3\u8857\u666f";           <span style="color: #008000; ">//</span><span style="color: #008000; ">鐜頒唬琛楁櫙,Unicode character</span><span style="color: #008000; "><br /></span> <br />     CString strText1 = CA2W(pszOctText,CP_UTF8);<br />     CString strText2 = CA2W(pszHexText,CP_UTF8);<br /> <br />     <span style="color: #008000; ">//</span><span style="color: #008000; ">MessageBox(NULL,strText2,strText1,MB_OK);</span><span style="color: #008000; "><br /></span> <br />     puts(CW2A(strText1));<br />     puts(CW2A(strText2,CP_ACP));<br />     puts(pszUnicodeText);<br /> <br />     system("pause");<br />     <span style="color: #0000FF; ">return</span> 0;<br /> }</div><img src ="http://www.shnenglu.com/aaxron/aggbug/169116.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-03-27 11:30 <a href="http://www.shnenglu.com/aaxron/archive/2012/03/27/169116.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綆鍗曠殑CInfoTip綾?/title><link>http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Sat, 18 Feb 2012 09:36:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/165921.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/165921.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/165921.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">file:InfoTip.h</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">#pragma once<br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">atlwin.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> CInfoTip : <br />    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> ATL::CWindowImpl</span><span style="color: #000000; "><</span><span style="color: #000000; ">CInfoTip</span><span style="color: #000000; ">></span><span style="color: #000000; "> <br />{ <br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">: <br />    DECLARE_WND_CLASS_EX(NULL, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, COLOR_3DFACE) <br /><br />    LPCTSTR m_lpstrInfo; <br /><br />    </span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> { m_nToolTipID </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1313</span><span style="color: #000000; "> }; <br />    WTL::CToolTipCtrl m_tooltip; <br /><br /><br />    CInfoTip():m_lpstrInfo(NULL) <br />    { } <br /><br />    </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> Init(HWND hWnd, LPCTSTR lpstrName) <br />    { <br />        ATLASSERT(::IsWindow(hWnd)); <br />        SubclassWindow(hWnd); <br /><br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Set tooltip </span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        m_tooltip.Create(m_hWnd); <br />        ATLASSERT(m_tooltip.IsWindow()); <br />        RECT rect; <br />        GetClientRect(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">rect); <br />        CToolInfo ti(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">, m_hWnd, m_nToolTipID, </span><span style="color: #000000; ">&</span><span style="color: #000000; ">rect, NULL); <br />        m_tooltip.AddTool(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">ti); <br /><br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> set text </span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        m_lpstrInfo </span><span style="color: #000000; ">=</span><span style="color: #000000; "> lpstrName; <br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(m_lpstrInfo </span><span style="color: #000000; ">==</span><span style="color: #000000; "> NULL) <br />            </span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">; <br /><br />        m_tooltip.UpdateTipText(m_lpstrInfo, m_hWnd, m_nToolTipID); <br />        m_tooltip.Activate(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">); <br />    } <br /><br />    BEGIN_MSG_MAP(CInfoTip) <br />        MESSAGE_RANGE_HANDLER(WM_MOUSEFIRST, WM_MOUSELAST,OnMouseMessage) <br />    END_MSG_MAP() <br /><br />    LRESULT OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL</span><span style="color: #000000; ">&</span><span style="color: #000000; "> bHandled) <br />    { <br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(m_tooltip.IsWindow()) <br />        { <br />            MSG msg </span><span style="color: #000000; ">=</span><span style="color: #000000; "> { m_hWnd, uMsg, wParam, lParam }; <br />            m_tooltip.RelayEvent(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">msg); <br />        } <br />        bHandled </span><span style="color: #000000; ">=</span><span style="color: #000000; "> FALSE; <br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; <br />    } <br />}; <br /><br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">浣跨敤:</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br />    CInfoTip m_InfoTipEdit;<br />    m_InfoTipEdit.Init(   GetDlgItem(   IDOK   ),   </span><span style="color: #000000; ">"</span><span style="color: #000000; ">杈撳叆瀵嗙爜 </span><span style="color: #000000; ">"</span><span style="color: #000000; ">     ); </span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/165921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-02-18 17:36 <a href="http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>How to move a dialog which does not have a caption(闈炴爣棰樻爮縐誨姩瀵硅瘽妗?http://www.shnenglu.com/aaxron/archive/2012/02/16/165724.html澶╀笅澶╀笅Thu, 16 Feb 2012 02:24:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/02/16/165724.htmlhttp://www.shnenglu.com/aaxron/comments/165724.htmlhttp://www.shnenglu.com/aaxron/archive/2012/02/16/165724.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/165724.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/165724.html
How to move a dialog which does not have a caption
Introduction
This article is aimed at beginners, and presents two ways to move a dialog which does not have a caption by dragging its client area.
1. WM_SYSCOMMAND message
Sending the WM_SYSCOMMAND message starts the move operation. Add the following code to handle the mouse down event:
BEGIN_MSG_MAP(CMainDlg)
    
//...
    MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
END_MSG_MAP()

LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
{
    SendMessage(WM_SYSCOMMAND, SC_MOVE
|HTCAPTION);
    
return 0;
}


2. WM_NCHITTEST message
The idea is to handle the WM_NCHITTEST message to return HTCAPTION instead of HTCLIENT when the mouse is in the client area, to trick Windows to start moving the dialog.
BEGIN_MSG_MAP(CMainDlg)
    
//...
    MESSAGE_HANDLER(WM_NCHITTEST, OnNcHitTest)
END_MSG_MAP()

LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
{
    
if (::DefWindowProc(m_hWnd, uMsg, wParam, lParam) == 
        HTCLIENT 
&& ::GetAsyncKeyState(MK_LBUTTON) < 0)
      
return HTCAPTION;

    
return 0;
}

//For MFC
//Devil for ever supplied the MFC solution that is shown below (thanks!). The idea is the same - to handle the WM_NCHITTEST message.
UINT OnNcHitTest(CPoint point)
{
    UINT nHit 
= CDialog::OnNcHitTest(point);
    
return (nHit == HTCLIENT ? HTCAPTION : nHit);
}


澶╀笅 2012-02-16 10:24 鍙戣〃璇勮
]]>Win32SDK:GetModuleHandlehttp://www.shnenglu.com/aaxron/archive/2012/02/15/165648.html澶╀笅澶╀笅Wed, 15 Feb 2012 01:49:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/02/15/165648.htmlhttp://www.shnenglu.com/aaxron/comments/165648.htmlhttp://www.shnenglu.com/aaxron/archive/2012/02/15/165648.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/165648.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/165648.html
褰撲竴涓枃浠惰鏄犲皠鍒拌皟鐢ㄨ繘紼嬬殑鍦板潃絀洪棿鏃訛紝GetModuleHandle鍑芥暟寰楀埌鍏朵腑鏌愪竴妯″潡鐨勫彞鏌勩?nbsp;
浣跨敤GetModuleHandle鍑芥暟鏍煎紡錛?/div>
HMODULE WINAPI GetModuleHandle( __in LPCTSTR lpModuleName );
 
鍙傛暟 lpModuleName錛?/div>
[in]鐢ㄦ寚閽堟寚鍚戜竴涓寘鍚ā鍧楀悕浠ULL瀛楃緇撳熬鐨勪覆錛屾ā鍧楁槸.dll鎴?exe鏂囦歡銆?/div>
褰撴寚瀹氫竴涓礬寰勬椂錛岀‘瀹氳鐢ㄥ弽鏂滅嚎錛圽錛夛紝鑰屼笉鏄枩綰匡紙/錛夈傝繖涓ā鍧楀悕灝嗗拰褰撳墠鏄犲皠鍒拌皟鐢ㄨ繘紼嬪湴鍧絀洪棿鐨勬ā鍧楀悕榪涜鐙珛鍦版瘮杈冦? 
鍋囧榪欎釜鍙傛暟鏄疦ULL錛屽嚱鏁板皢榪斿洖鍒涘緩璋冪敤榪涚▼錛?exe鏂囦歡錛夌殑鏂囦歡鐨勫彞鏌勩傘
榪斿洖鍊鹼細(xì) 
濡傛灉鍑芥暟璋冪敤鎴愬姛錛岃繑鍥炲兼槸鏌愪竴妯″潡鐨勫彞鏌勩?濡傛灉鍑芥暟璋冪敤澶辮觸錛岃繑鍥濶ULL銆傝寰楃煡鏇村鐨勫嚭閿欎俊鎭紝璋冪敤GetLastError銆傘


澶╀笅 2012-02-15 09:49 鍙戣〃璇勮
]]>WTL::CFileDialoghttp://www.shnenglu.com/aaxron/archive/2012/02/13/165467.html澶╀笅澶╀笅Mon, 13 Feb 2012 03:09:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/02/13/165467.htmlhttp://www.shnenglu.com/aaxron/comments/165467.htmlhttp://www.shnenglu.com/aaxron/archive/2012/02/13/165467.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/165467.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/165467.html//MFC
CFileDialog dlg(TRUE,NULL,NULL,NULL,"鏁版嵁鏂囨。(*.dat)|*.dat|妯℃澘鏂囦歡(*.fpmb)|*.fpmb||"); 

//WTL  
WTL::CFileDialog dlg(TRUE,NULL,NULL,NULL,"鏁版嵁鏂囨。(*.dat)\0*.dat\0妯℃澘鏂囦歡(*.fpmb)\0*.fpmb\0\0");

鍏朵腑鏂囦歡榪囨護(hù)鍣?MFC浠?/span>|鍒嗛殧,鑰學(xué)TL浠0鍒嗛殧.

WTL::CFileDialog dlg(TRUE,0,0,OFN_EXPLORER,_T("Pictures (*.bmp;*.jpg;*.png)\0*.bmp;*.jpg;*.png\0All files (*.*)\0 *.*\0"),*this);




澶╀笅 2012-02-13 11:09 鍙戣〃璇勮
]]>鎹曡幏鎺у埗鍙扮瓑寮傚父http://www.shnenglu.com/aaxron/archive/2012/02/07/165082.html澶╀笅澶╀笅Tue, 07 Feb 2012 03:02:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/02/07/165082.htmlhttp://www.shnenglu.com/aaxron/comments/165082.htmlhttp://www.shnenglu.com/aaxron/archive/2012/02/07/165082.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/165082.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/165082.html#define WIN32_LEAN_AND_MEAN   
#include 
<windows.h>
#include 
<tchar.h>
#include 
<iostream>
#include 
<signal.h>


BOOL WINAPI ConsoleHandler(DWORD dwCtrlType );
                           
                          

int main(int argc, char *argv[])
{
    
if (SetConsoleCtrlHandler( (PHANDLER_ROUTINE)ConsoleHandler,TRUE)==FALSE)
    {
        
// unable to install handler 
        
// display message to the user
        printf("Unable to install handler!\n");
        
return -1;
    }


    
while(true)
    {

    }
}

BOOL WINAPI ConsoleHandler(DWORD CEvent)
{
    
char mesg[128];

    
switch(CEvent)
    {
    
case CTRL_C_EVENT:
        MessageBox(NULL,
            _T(
"CTRL+C received!"),_T("CEvent"),MB_OK);
        
break;
    
//case CTRL_BREAK_EVENT:
    
//    MessageBox(NULL,
    
//        _T("CTRL+BREAK received!"),_T("CEvent"),MB_OK);
    
//    break;
    
//case CTRL_CLOSE_EVENT:
    
//    MessageBox(NULL,
    
//        _T("Program being closed!"),_T("CEvent"),MB_OK);
    
//    break;
    
//case CTRL_LOGOFF_EVENT:
    
//    MessageBox(NULL,
    
//        _T("User is logging off!"),_T("CEvent"),MB_OK);
    
//    break;
    
//case CTRL_SHUTDOWN_EVENT:
    
//    MessageBox(NULL,
    
//        _T("User is logging off!"),_T("CEvent"),MB_OK);
    
//    break;
    }
    
return TRUE;
}


澶╀笅 2012-02-07 11:02 鍙戣〃璇勮
]]>
国产精品久久精品| 一本久久综合亚洲鲁鲁五月天| 免费国产99久久久香蕉| 久久狠狠一本精品综合网| 最新久久免费视频| 好久久免费视频高清| 理论片午午伦夜理片久久 | 亚洲精品乱码久久久久久自慰| 久久精品国产网红主播| 久久精品国产一区二区三区不卡| 97久久国产综合精品女不卡| 情人伊人久久综合亚洲| 国产香蕉久久精品综合网| 久久99精品久久久久久| 无码人妻久久一区二区三区蜜桃| 久久精品国产免费| av色综合久久天堂av色综合在| 国产日韩欧美久久| 久久不见久久见免费视频7| 亚洲国产香蕉人人爽成AV片久久| AV无码久久久久不卡网站下载| 亚洲美日韩Av中文字幕无码久久久妻妇| 精品久久人妻av中文字幕| 亚洲精品成人网久久久久久| 色综合合久久天天综合绕视看| 亚洲综合熟女久久久30p| 久久综合精品国产一区二区三区| 国产精品99久久精品| 亚洲精品无码久久久久sm| 色99久久久久高潮综合影院| 亚洲狠狠综合久久| av无码久久久久不卡免费网站| 亚洲午夜久久久久妓女影院 | 99久久免费只有精品国产| 色婷婷综合久久久久中文一区二区 | 91精品国产综合久久香蕉 | 四虎国产精品免费久久5151 | 国色天香久久久久久久小说| 久久人搡人人玩人妻精品首页| 久久这里只精品国产99热| 久久精品国产亚洲av麻豆色欲|