锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲午夜久久久影院,国内精品久久久久影院优,国产成人精品久久http://www.shnenglu.com/lhking/czh-cnWed, 07 May 2025 05:49:07 GMTWed, 07 May 2025 05:49:07 GMT60Using memset(), memcpy(), and memmove() in Chttp://www.shnenglu.com/lhking/archive/2010/08/31/125375.htmllhkinglhkingTue, 31 Aug 2010 03:06:00 GMThttp://www.shnenglu.com/lhking/archive/2010/08/31/125375.htmlhttp://www.shnenglu.com/lhking/comments/125375.htmlhttp://www.shnenglu.com/lhking/archive/2010/08/31/125375.html#Feedback0http://www.shnenglu.com/lhking/comments/commentRss/125375.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/125375.htmlThe article is from http://www.java-samples.com/showtutorial.php?tutorialid=591

To set all the bytes in a block of memory to a particular value, use memset(). The function prototype is

void * memset(void *dest, int c, size_t count);

The argument dest points to the block of memory. c is the value to set, and count is the number of bytes, starting at dest, to be set. Note that while c is a type int, it is treated as a type char. In other words, only the low-order byte is used, and you can specify values of c only in the range 0 through 255.

Use memset() to initialize a block of memory to a specified value. Because this function can use only a type char as the initialization value, it is not useful for working with blocks of data types other than type char, except when you want to initialize to 0. In other words, it wouldn't be efficient to use memset() to initialize an array of type int to the value 99, but you could initialize all array elements to the value 0. memset() will be demonstrated in program below.

The memcpy() Function

memcpy() copies bytes of data between memory blocks, sometimes called buffers. This function doesn't care about the type of data being copied--it simply makes an exact byte-for-byte copy. The function prototype is

void *memcpy(void *dest, void *src, size_t count);

The arguments dest and src point to the destination and source memory blocks, respectively. count specifies the number of bytes to be copied. The return value is dest. If the two blocks of memory overlap, the function might not operate properly--some of the data in src might be overwritten before being copied. Use the memmove() function, discussed next, to handle overlapping memory blocks. memcpy() will be demonstrated in program below.

The memmove() Function

memmove() is very much like memcpy(), copying a specified number of bytes from one memory block to another. It's more flexible, however, because it can handle overlapping memory blocks properly. Because memmove() can do everything memcpy() can do with the added flexibility of dealing with overlapping blocks, you rarely, if ever, should have a reason to use memcpy(). The prototype is

void *memmove(void *dest, void *src, size_t count);

dest and src point to the destination and source memory blocks, and count specifies the number of bytes to be copied. The return value is dest. If the blocks overlap, this function ensures that the source data in the overlapped region is copied before being overwritten. Sample program below demonstrates memset(), memcpy(), and memmove().

A demonstration of memset(), memcpy(), and memmove().

1: /* Demonstrating memset(), memcpy(), and memmove(). */
2:
3: #include <stdio.h>
4: #include <string.h>
4:
5: char message1[60] = "Four score and seven years ago ...";
6: char message2[60] = "abcdefghijklmnopqrstuvwxyz";
7: char temp[60];
8:
9: main()
10: {
11:    printf("\nmessage1[] before memset():\t%s", message1);
12:    memset(message1 + 5, `@', 10);
13:    printf("\nmessage1[] after memset():\t%s", message1);
14:
15:    strcpy(temp, message2);
16:    printf("\n\nOriginal message: %s", temp);
17:    memcpy(temp + 4, temp + 16, 10);
18:    printf("\nAfter memcpy() without overlap:\t%s", temp);
19:    strcpy(temp, message2);
20:    memcpy(temp + 6, temp + 4, 10);
21:    printf("\nAfter memcpy() with overlap:\t%s", temp);
22:
23:    strcpy(temp, message2);
24:    printf("\n\nOriginal message: %s", temp);
25:    memmove(temp + 4, temp + 16, 10);
26:    printf("\nAfter memmove() without overlap:\t%s", temp);
27:    strcpy(temp, message2);
28:    memmove(temp + 6, temp + 4, 10);
29:    printf("\nAfter memmove() with overlap:\t%s\n", temp);
30:
31: }
message1[] before memset():     Four score and seven years ago ...
message1[] after memset():      Four @@@@@@@@@@seven years ago ...
Original message: abcdefghijklmnopqrstuvwxyz
After memcpy() without overlap: abcdqrstuvwxyzopqrstuvwxyz
After memcpy() with overlap:    abcdefefefefefefqrstuvwxyz
Original message: abcdefghijklmnopqrstuvwxyz
After memmove() without overlap:        abcdqrstuvwxyzopqrstuvwxyz
After memmove() with overlap:   abcdefefghijklmnqrstuvwxyz

ANALYSIS: The operation of memset() is straightforward. Note how the pointer notation message1 + 5 is used to specify that memset() is to start setting characters at the sixth character in message1[] (remember, arrays are zero-based). As a result, the 6th through 15th characters in message1[] have been changed to @.

When source and destination do not overlap, memcpy() works fine. The 10 characters of temp[] starting at position 17 (the letters q through z) have been copied to positions 5 though 14, where the letters e though n were originally located. If, however, the source and destination overlap, things are different. When the function tries to copy 10 characters starting at position 4 to position 6, an overlap of 8 positions occurs. You might expect the letters e through n to be copied over the letters g through p. Instead, the letters e and f are repeated five times.

If there's no overlap, memmove() works just like memcpy(). With overlap, however, memmove() copies the original source characters to the destination.



lhking 2010-08-31 11:06 鍙戣〃璇勮
]]>
Vc++6.0欏圭洰榪佸埌vs2005 搴旇娉ㄦ剰鐨勯棶棰?/title><link>http://www.shnenglu.com/lhking/archive/2010/06/26/118751.html</link><dc:creator>lhking</dc:creator><author>lhking</author><pubDate>Sat, 26 Jun 2010 01:22:00 GMT</pubDate><guid>http://www.shnenglu.com/lhking/archive/2010/06/26/118751.html</guid><wfw:comment>http://www.shnenglu.com/lhking/comments/118751.html</wfw:comment><comments>http://www.shnenglu.com/lhking/archive/2010/06/26/118751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lhking/comments/commentRss/118751.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lhking/services/trackbacks/118751.html</trackback:ping><description><![CDATA[<p>Vc++6.0欏圭洰榪佸埌vs2005 搴旇娉ㄦ剰鐨勯棶棰?br><a >www.firnow.com</a>    鏃墮棿 錛?2010-06-06  浣滆咃細浣氬悕   緙栬緫錛氬9鏋濋洩緋?鐐瑰嚮錛?nbsp; 1176 [ 璇勮 ]<br>-<br>-<br>緇煎悎 璧勬簮 鐢靛瓙涔?紺懼尯   1.濡傛灉MessageBox("aa") 鎶ラ敊錛屽皢鍏惰鏀規垚 MessageBox(_TEXT("aa")).鎴戝枩嬈㈢敤MessageBox鏉ヨ皟璇曠▼搴忥紝灝ゅ叾鏄湪鍐欒剼鏈椂錛屽綋浣犱笉鐭ラ亾紼嬪簭鏈夋病鏈夋墽琛岃鏉¤鍙ワ紝浠ュ強鎵ц瀹岃鏉¤鍙ュ悗鏌愪釜鍙橀噺鐨勫煎彂鐢熶簡浠涔堝彉鍖栵紝鍦ㄨ鏉¤鍙ュ墠鍚庡悇鍔犱竴涓狹essageBox錛坰tr錛夛紝涓鐩簡鐒朵簡鍚?.</p> <p>2.pow(2,10)   瑕佹敼鎴?nbsp; pow((double)2,10)鎴杙ow(2.0,10)</p> <p>       璇存槑錛?.0涓敤鍒癿ath.h pow()鍑芥暩鏅傦紝鏈夐欏嬪師鍨?double pow(int _X,int _Y) 浣嗗鏋滅敤VC++ 2005鐨勮┍錛宲ow()鐨勭涓鍊嬪弮鏁稿氨涓嶈兘鍐嶄嬌鐢╥nt鍨嬫厠錛屽彧鑳戒嬌鐢╢loat銆乨ouble銆乴ong double錛孷C++ 2005鍦ㄧ法璀檪鏈冨仛type checking錛岀劧寰屽氨閬庝笉浜嗭紝鎶rror C2668</p> <p>3.Itoa鏂規硶鍚嶈鏀規垚  _Itoa_s</p> <p>4.error C2440錛?#8220;static_cast” 鏃犳硶浠?#8220;void (__thiscall CChatManagerDlg::* )(WPARAM,LPARAM)”杞崲涓?#8220;LRESULT (__thiscall CWnd::* )錛屽嚭閿欏鍦∣N_MESSAGE(WM_SETPLAY,OnSetPlay)</p> <p>瑙g瓟錛氬皢void CVideoBaseView::OnSetPlay(WPARAM wp,LPARAM lp)  鏀規垚LRESULT CVideoBaseView::OnSetPlay(WPARAM wp,LPARAM lp){</p> <p>LRESULT result = Default(); </p> <p>//浣犲師鏉ョ殑浠g爜</p> <p>return result;}</p> <p>5.鎵句笉鍒癕FC80D.DLL</p> <p>瑙e喅錛?#8220;宸ョ▼灞炴?#8221;->“link”->“manifesto file”->“$(IntDir)\$(TargetFileName).intermediate.manifest” 鍊?nbsp;    鏀規垚    $(IntDir)\$(TargetFileName).manifest</p> <p>鏂囩珷鍑哄錛氶璇虹綉(<a >www.firnow.com):http://dev.firnow.com/course/3_program/vc/vc_js/200879/132413.html</a></p> <img src ="http://www.shnenglu.com/lhking/aggbug/118751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lhking/" target="_blank">lhking</a> 2010-06-26 09:22 <a href="http://www.shnenglu.com/lhking/archive/2010/06/26/118751.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>win32 vc 闃繪鍏蟲満http://www.shnenglu.com/lhking/archive/2010/06/24/118613.htmllhkinglhkingThu, 24 Jun 2010 03:03:00 GMThttp://www.shnenglu.com/lhking/archive/2010/06/24/118613.htmlhttp://www.shnenglu.com/lhking/comments/118613.htmlhttp://www.shnenglu.com/lhking/archive/2010/06/24/118613.html#Feedback1http://www.shnenglu.com/lhking/comments/commentRss/118613.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/118613.html鏍規嵁MSDN鐨勬弿榪幫紝閲囩敤濡備笅鐨勪唬鐮佹潵瀹炵幇闃繪鍏蟲満錛岀粨鏋滃彂鐜板湪鏈夌殑鏈哄櫒涓婅兘澶熼樆姝㈠叧鏈猴紝鍦ㄦ湁鐨勬満鍣ㄤ笂鍗翠笉鑳介樆姝?铏界劧鑳界湅鍒板脊鍑虹殑MessageBox錛屼絾榪樻潵涓嶅強鍙嶅簲錛岄┈涓婂氨鍏蟲満浜?銆?閮芥槸WinXP SP2鐨勬満鍣?

view plaincopy to clipboardprint?
LRESULT CPreventShutdownDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)  
{  
    if (WM_QUERYENDSESSION == message)  
    {  
        AfxMessageBox(_T("鍛靛懙錛屼笉璁稿叧鏈猴紒"));  
        return FALSE;  // 鏍規嵁MSDN錛學M_QUERYENDSESSION 榪斿洖FALSE鍒欏彇娑堝叧鏈?nbsp; 
    }  
 
    return CDialog::WindowProc(message, wParam, lParam);  

LRESULT CPreventShutdownDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    if (WM_QUERYENDSESSION == message)
    {
        AfxMessageBox(_T("鍛靛懙錛屼笉璁稿叧鏈猴紒"));
        return FALSE;  // 鏍規嵁MSDN錛學M_QUERYENDSESSION 榪斿洖FALSE鍒欏彇娑堝叧鏈?br>    }

    return CDialog::WindowProc(message, wParam, lParam);
}

鏄粈涔堝師鍥犲湪鏌愪簺鏈哄櫒涓婃棤娉曢樆姝㈠叧鏈哄憿錛?/p>

鍥炲繂鍏蟲満鏃剁粡甯擱亣鍒扮殑鍦烘櫙錛?/p>

1. 濡傛灉鏌愪釜榪涚▼澶卞幓鍝嶅簲錛屽叧鏈虹殑鏃跺欎細鎻愮ず"...娌℃湁鍝嶅簲錛屾槸鍚︾粨鏉?

2. 浣跨敤璁頒簨鏈慨鏀逛簡鏂囨。錛屽湪娌℃湁淇濆瓨鐨勬儏鍐典笅榪涜鍏蟲満錛屾櫘閫氭儏鍐典細鎻愮ず鏄惁榪涜淇濆瓨銆?/p>

1榪欑鎯呭喌涓嶅ソ妯℃嫙錛屼絾鏄?鏄緢濂芥ā鎷熺殑銆備簬鏄湪涓嶈兘闃繪鍏蟲満鐨勬満鍣ㄤ笂榪欐牱榪涜嫻嬭瘯錛屽彂鐜拌櫧鐒朵篃寮瑰嚭浜嗘槸鍚︿繚瀛樼殑瀵硅瘽妗嗭紝浣嗘槸榪樻槸椹笂灝卞叧鏈轟簡銆?/p>

鏋滅劧錛屽拰紼嬪簭鏃犲叧錛屽簲璇ユ槸鏈哄櫒璁劇疆鐨勯棶棰樸備簬鏄兂鍒頒簡涓涓緢嫻佽鐨勮瘝錛?蹇熷叧鏈?

鍒扮綉涓奼oogle浜嗕竴涓嬶紝鍙戠幇蹇熷叧鏈烘槸閫氳繃濡備笅鐨勬柟寮忓疄鐜扮殑錛?/p>

HKEY-CURRENT-USER\Control Panel\Desktop\AutoEndTasks  鍊間負1琛ㄧず蹇熷叧鏈?/p>

                                                                                        鏅氭儏鍐靛間負0鎴栬繖涓敭鍊間笉瀛樺湪

鍒頒笉鑳介樆姝㈠揩閫熷叧鏈虹殑鏈哄櫒涓婁竴鐪嬶紝鏋滅劧榪欎釜閿間負1.

鏀逛負0鍚庡啀榪愯紼嬪簭錛屽氨閮借兘闃繪鍏蟲満浜嗐?/p>

銆愮粨璁恒戦樆姝㈠叧鏈洪渶瑕佷袱姝ユ墠鑳藉畬緹庣殑瀹炵幇錛岃屼笉浠呬粎鏄疢SDN涓弿榪扮殑2)

            1) 鍦ㄧ▼搴忎腑鍏堝垹闄よ繖涓敭鍊?HKEY-CURRENT-USER\Control Panel\Desktop\AutoEndTasks)

            2) 澶勭悊 WM_QUERYENDSESSION 鏃惰繑鍥濬ALSE

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/skyxie/archive/2009/06/09/4255767.aspx



lhking 2010-06-24 11:03 鍙戣〃璇勮
]]>
C++璋冭瘯鎶宸?/title><link>http://www.shnenglu.com/lhking/archive/2010/06/23/118591.html</link><dc:creator>lhking</dc:creator><author>lhking</author><pubDate>Wed, 23 Jun 2010 15:14:00 GMT</pubDate><guid>http://www.shnenglu.com/lhking/archive/2010/06/23/118591.html</guid><wfw:comment>http://www.shnenglu.com/lhking/comments/118591.html</wfw:comment><comments>http://www.shnenglu.com/lhking/archive/2010/06/23/118591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lhking/comments/commentRss/118591.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lhking/services/trackbacks/118591.html</trackback:ping><description><![CDATA[<font color=#008080>鏌ョ湅鏈delete鎺夌殑鍐呭瓨錛屽湪杈撳嚭紿楀彛涓煡鐪?br>1</font> <span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> _CRTDBG_MAP_ALLOC</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">crtdbg.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 4</span> <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></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> wmain(vint argc , wchar_t</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> args[])<br></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">{<br></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 榪欓噷榪愯紼嬪簭錛屽茍鍦ㄤ笅闈㈢殑鍑芥暟璋冪敤涔嬪墠delete鎺夋墍鏈塶ew鐨勪笢瑗?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">    _CrtDumpMemoryLeaks();<br></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">11</span> <span style="COLOR: #000000">}</span> <img src ="http://www.shnenglu.com/lhking/aggbug/118591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lhking/" target="_blank">lhking</a> 2010-06-23 23:14 <a href="http://www.shnenglu.com/lhking/archive/2010/06/23/118591.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> 鍩轟簬c++榪涚▼娉ㄥ叆鐨勫疄鐜?http://www.shnenglu.com/lhking/archive/2010/06/23/118571.htmllhkinglhkingWed, 23 Jun 2010 07:33:00 GMThttp://www.shnenglu.com/lhking/archive/2010/06/23/118571.htmlhttp://www.shnenglu.com/lhking/comments/118571.htmlhttp://www.shnenglu.com/lhking/archive/2010/06/23/118571.html#Feedback0http://www.shnenglu.com/lhking/comments/commentRss/118571.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/118571.html瑕佸疄鐜板涓涓▼搴忕殑榪涚▼娉ㄥ叆錛岀劧鍚庡琚敞鍏ョ殑榪涚▼榪涜鎺у埗錛岄鍏堥渶瑕佹煡鎵懼埌瑕佹敞鍏ョ殑榪涚▼ID銆傚浣曡幏鍙栫殑榪涚▼ID鍛紵windows鎻愪緵浜嗕竴涓狝PI鍙鐭ラ亾浜嗚繖涓繘紼嬮噷闈㈢殑涓涓獥鍙e彞鏌勶紝灝卞彲浠ユ壘鍒版壘鍒拌榪涚▼ID銆傚嚱鏁板艦寮忓涓嬶細DWORD GetWindowThreadProcessId(
  HWND hWnd,
  LPDWORD lpdwProcessId
);

閭e浣曡幏鍙栬繖涓獥鍙g殑鍙ユ焺鍛紵寰堣嚜鐒舵垜浠彲浠ユ兂鍒拌繖涔堜竴涓嚱鏁幫紝鍑芥暟褰㈠紡濡備笅錛?/p>

HWND FindWindowEx(     
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow
);

hwndParent錛氭寚鍚戜竴涓緟鎼滅儲紿楀彛鐨勭埗紿椼?/p>

hwndChildAfter錛氬瓙紿楀彛鐨勫彞鏌勩?/p>

lpszClass錛氱獥鍙g殑綾誨悕銆?/p>

lpszWindow錛氱獥鍙g殑鏍囬鍚嶃?/p>

渚嬪錛屾湰紺轟緥宸ョ▼瑕佹壘鍒頒竴涓璇濇閲岀殑緙栬緫妗嗭紝騫跺榪欎釜緙栬緫妗嗚繘琛屾敞鍏ャ傛煡鎵捐繃紼嬪涓嬶細

    HWND hWndChild = NULL;
    while(1)
    {
        // 鏌ユ壘瀵硅瘽妗嗙獥鍙o紝涓旇繖涓璇濇紿楀彛鐨勬爣棰樺悕涓?#8220;TestDlg”
        HWND hDlg = FindWindowEx(0, NULL, "#32770", "TestDlg");
        if(hDlg == NULL)
        {
            printf("娌℃湁鎵懼埌璇ュ璇濇紿楀彛!\n");
            exit(1);
        }
        else
        {
            // 鏌ユ壘榪欎釜瀵硅瘽妗嗙獥鍙d腑鐨別dit鎺т歡
            hWndChild = FindWindowEx(hDlg, NULL, "Edit",NULL);
            if(hWndChild != NULL)
            {
                break; // 鎵懼埌榪欎釜緙栬緫妗嗭紝鐜板湪瑕佸榪欎釜緙栬緫妗嗚繘琛屾敞鍏?
            }
        }
    }

    // 鏍規嵁鏌ユ壘鍑虹殑紿楀彛錛屾煡璇㈣繘紼?
    DWORD dwQQGameId;
    HANDLE hProcessQQGame;
    if(!GetWindowThreadProcessId(hWndChild,&dwQQGameId))
    {
        printf("Error in GetWindowThreadProcessId():%d\n",GetLastError());
        exit(1);
    }
鎵懼埌榪欎釜榪涚▼鍚庯紝鐒跺悗灝辮瀵硅繖涓繘紼嬭繘琛屾敞鍏ャ備絾鏄紝浣犲埆蹇樿浜嗭紝褰撲綘鍦ㄥ叾浠栬繘紼嬩腑鑾峰彇鍙﹀榪涚▼鐨勭獥鍙e彞鏌勶紝浣犳槸娌℃湁鍔炴硶鎿嶄綔榪欎釜鍙ユ焺鐨勩備負浠涔堝憿錛熸瘡涓繘紼嬮兘琚祴浜堝畠鑷繁鐨勮櫄鎷熷湴鍧絀洪棿銆傚浜? 2浣嶈繘紼嬫潵璇達紝榪欎釜鍦板潃絀洪棿鏄? G B錛屽洜
涓? 2浣嶆寚閽堝彲浠ユ嫢鏈変粠0 x 0 0 0 0 0 0 0 0鑷? x F F F F F F F F涔嬮棿鐨勪換浣曚竴涓箋傝繖浣垮緱涓涓寚閽堣兘澶熸嫢鏈? 294 967 296涓間腑鐨勪竴涓鹼紝瀹冭鐩栦簡涓涓繘紼嬬殑4 G B铏氭嫙絀洪棿鐨勮寖鍥淬傚浜? 4浣嶈繘紼嬫潵璇達紝榪欎釜鍦板潃絀洪棿鏄? 6 E B錛? 01 8瀛楄妭錛夛紝鍥犱負6 4浣嶆寚閽堝彲浠ユ嫢鏈変粠0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0鑷? x F F F F F F F F F F F F F F F F涔嬮棿鐨勪換浣曞箋傝繖浣垮緱涓涓寚閽堝彲浠ユ嫢鏈?8 446 744 073 709 551 616涓間腑鐨勪竴涓鹼紝瀹冭鐩栦簡涓涓繘紼嬬殑1 6 E B铏氭嫙絀洪棿鐨勮寖鍥淬傝繖鏄浉褰撳ぇ鐨勪竴涓寖鍥淬傜敱浜庢瘡涓繘紼嬪彲浠ユ帴鏀跺畠鑷繁鐨勭鏈夌殑鍦板潃絀洪棿錛屽洜姝ゅ綋榪涚▼涓殑涓涓嚎紼嬫鍦ㄨ繍琛屾椂錛岃綰跨▼鍙互璁塊棶鍙睘浜庡畠鐨勮繘紼嬬殑鍐呭瓨銆傚睘浜庢墍鏈夊叾浠栬繘紼嬬殑鍐呭瓨鍒欓殣钘忕潃錛屽茍涓斾笉鑳借姝e湪榪愯鐨勭嚎紼嬭闂傛敞鎰忓湪Windows 2000涓紝灞炰簬鎿嶄綔緋葷粺鏈韓鐨勫唴瀛樹篃鏄殣钘忕殑錛屾鍦ㄨ繍琛岀殑綰跨▼鏃犳硶璁塊棶銆傝繖鎰忓懗鐫綰跨▼甯稿父涓嶈兘璁塊棶鎿嶄綔緋葷粺鐨勬暟鎹俉indows 98涓紝灞炰簬鎿嶄綔緋葷粺鐨勫唴瀛樻槸涓嶉殣钘忕殑錛屾鍦ㄨ繍琛岀殑綰跨▼鍙互璁塊棶銆傚洜姝わ紝姝e湪榪愯鐨勭嚎紼嬪父甯稿彲浠ヨ闂搷浣滅郴緇熺殑鏁版嵁錛屼篃鍙互鐮村潖鎿嶄綔緋葷粺錛堜粠鑰屾湁鍙兘瀵艱嚧鎿嶄綔緋葷粺宕╂簝錛夈傚湪Windows 98涓紝涓涓繘紼嬬殑綰跨▼涓嶅彲鑳借闂睘浜庡彟涓涓繘紼嬬殑鍐呭瓨銆傚墠闈㈣榪囷紝姣忎釜榪涚▼鏈夊畠鑷繁鐨勭鏈夊湴鍧絀洪棿銆傝繘紼婣鍙兘鏈変竴涓瓨鏀懼湪瀹冪殑鍦板潃絀洪棿涓殑鏁版嵁緇撴瀯錛屽湴鍧鏄? x 1 2 3 4 5 6 7 8錛岃岃繘紼婤鍒欐湁涓涓畬鍏ㄤ笉鍚岀殑鏁版嵁緇撴瀯瀛樻斁鍦ㄥ畠鐨勫湴鍧絀洪棿涓紝鍦板潃鏄? x 1 2 3 4 5 6 7 8銆傚綋榪涚▼A涓繍琛岀殑綰跨▼璁塊棶鍦板潃涓? x 1 2 3 4 5 6 7 8鐨勫唴瀛樻椂錛岃繖浜涚嚎紼嬭闂殑鏄繘紼婣鐨勬暟鎹粨鏋勩傚綋榪涚▼B涓繍琛岀殑綰跨▼璁塊棶鍦板潃涓? x 1 2 3 4 5 6 7 8鐨勫唴瀛樻椂錛岃繖浜涚嚎紼嬭闂殑鏄繘紼婤鐨勬暟鎹粨鏋勩傝繘紼婣涓繍琛岀殑綰跨▼涓嶈兘璁塊棶榪涚▼B鐨勫湴鍧絀洪棿涓殑鏁版嵁緇撴瀯錛屽弽涔嬩害鐒躲?/p>

榪欐牱鐪嬫潵錛岃嫢鎯沖榪欎釜紿楀彛鍙ユ焺榪涜鎿嶄綔錛屽緱鎯蟲柟璁炬硶浣挎垜浠兘澶熻繘鍏ュ埌鍘熷涓昏繘紼嬩腑錛岀劧鍚庢墽琛屾垜浠殑鎿嶄綔銆傝繖涓氨濂借薄涓涓瘎鐢熻櫕鎯寵鐮村潖浜轟綋鐨勬満鑳斤紝蹇呴』寰楄繘鍏ユ垜浠殑浣撳唴錛屽瘎鐢熷湪鎴戜滑鐨勭粍緇囦笂鎵嶈兘澶熶駭鐢熶綔鐢ㄣ傜幇鍦ㄥ叧閿槸濡備綍瀵勭敓鍒板涓諱腑鍛紵

閫氬父錛屼換浣曡繘紼嬮兘鍙互閫氳繃LoadLibrary鍔ㄦ佸湴鍔犺澆DLL錛屼絾鏄垜浠浣曞己鍒朵竴涓閮ㄨ繘紼嬭皟鐢ㄨ鍑芥暟鍛紵絳旀鏄疌reateRemoteThread銆?br>璁╂垜浠厛鏉ョ湅鐪婰oadLibrary鍜孎reeLibrary鐨勫嚱鏁板0鏄庯細

HINSTANCE LoadLibrary(
  LPCTSTR lpLibFileName   // address of filename of library module
);

BOOL FreeLibrary(
  HMODULE hLibModule      // handle to loaded library module
);

鍐嶅拰CreateRemoteThread鐨勭嚎紼嬭繃紼嬶紙thread procedure錛塗hreadProc姣旇緝涓涓嬶細
DWORD WINAPI ThreadProc(
  LPVOID lpParameter   // thread data
);

    浣犱細鍙戠幇鎵鏈夌殑鍑芥暟閮芥湁鍚屾牱鐨勮皟鐢ㄧ害瀹氾紙calling convention錛夈侀兘鎺ュ彈涓涓?2浣嶇殑鍙傛暟騫朵笖榪斿洖鍊肩被鍨嬬殑澶у皬涔熶竴鏍楓備篃灝辨槸璇達紝鎴戜滑鍙互鎶奓oadLibrary/FreeLibrary鐨勬寚閽堜綔涓哄弬鏁頒紶閫掔粰CrateRemoteThread銆?/p>

    鐒惰岋紝榪樻湁涓や釜闂錛堝弬鑰冧笅闈㈠CreateRemoteThread鐨勮鏄庯級

    1錛?浼犻掔粰ThreadProc鐨刲pStartAddress 鍙傛暟蹇呴』涓鴻繙紼嬭繘紼嬩腑鐨勭嚎紼嬭繃紼嬬殑璧峰鍦板潃銆?br>    2錛?濡傛灉鎶奣hreadProc鐨刲pParameter鍙傛暟褰撳仛涓涓櫘閫氱殑32浣嶆暣鏁幫紙FreeLibrary鎶婂畠褰撳仛HMODULE錛夐偅涔堟病鏈夊浣曢棶棰橈紝浣嗘槸濡傛灉鎶婂畠褰撳仛涓涓寚閽堬紙LoadLibrary鎶婂畠褰撳仛涓涓猚har*錛夛紝瀹冨氨蹇呴』鎸囧悜榪滅▼榪涚▼涓殑鍐呭瓨鏁版嵁銆?/p>

    絎竴涓棶棰樺叾瀹炲凡緇忚繋鍒冭岃В浜嗭紝鍥犱負LoadLibrary鍜孎reeLibrary閮芥槸瀛樺湪浜巏ernel32.dll涓殑鍑芥暟錛岃宬ernel32鍙互淇濊瘉浠諱綍“姝e父”榪涚▼涓兘瀛樺湪錛屼笖鍏跺姞杞藉湴鍧閮芥槸涓鏍風殑銆傦紙鍙傜湅闄勫綍A錛変簬鏄疞oadLibrary/FreeLibrary鍦ㄤ換浣曡繘紼嬩腑鐨勫湴鍧閮芥槸涓鏍風殑錛岃繖灝變繚璇佷簡浼犻掔粰榪滅▼榪涚▼鐨勬寚閽堟槸涓湁鏁堢殑鎸囬拡銆?/p>

    絎簩涓棶棰樹篃寰堢畝鍗曪細鎶奃LL鐨勬枃浠跺悕錛圠odLibrary鐨勫弬鏁幫級鐢╓riteProcessMemory澶嶅埗鍒拌繙紼嬭繘紼嬨?/p>

    鎵浠ワ紝浣跨敤CreateRemoteThread鍜孡oadLibrary鎶鏈殑姝ラ濡備笅錛?br>    1錛?寰楀埌榪滅▼榪涚▼鐨凥ANDLE錛堜嬌鐢∣penProcess錛夈?br>    2錛?鍦ㄨ繙紼嬭繘紼嬩腑涓篋LL鏂囦歡鍚嶅垎閰嶅唴瀛橈紙VirtualAllocEx錛夈?br>    3錛?鎶奃LL鐨勬枃浠跺悕錛堝叏璺緞錛夊啓鍒板垎閰嶇殑鍐呭瓨涓紙WriteProcessMemory錛?br>    4錛?浣跨敤CreateRemoteThread鍜孡oadLibrary鎶婁綘鐨凞LL鏄犲皠榪戣繙紼嬭繘紼嬨?br>    5錛?絳夊緟榪滅▼綰跨▼緇撴潫錛圵aitForSingleObject錛夛紝鍗崇瓑寰匧oadLibrary榪斿洖銆備篃灝辨槸璇村綋鎴戜滑鐨凞llMain錛堟槸浠LL_PROCESS_ATTACH涓哄弬鏁拌皟鐢ㄧ殑錛夎繑鍥炴椂榪滅▼綰跨▼涔熷氨绔嬪嵆緇撴潫浜嗐?br>    6錛?鍙栧洖榪滅▼綰跨▼鐨勭粨鏉熺爜錛圙etExitCodeThtread錛夛紝鍗矻oadLibrary鐨勮繑鍥炲尖曗曟垜浠珼LL鍔犺澆鍚庣殑鍩哄湴鍧錛圚MODULE錛夈?br>    7錛?閲婃斁絎?姝ュ垎閰嶇殑鍐呭瓨錛圴irtualFreeEx錛夈?br>    8錛?鐢–reateRemoteThread鍜孎reeLibrary鎶奃LL浠庤繙紼嬭繘紼嬩腑鍗歌澆銆傝皟鐢ㄦ椂浼犻掔6姝ュ彇寰楃殑HMODULE緇橣reeLibrary錛堥氳繃CreateRemoteThread鐨刲pParameter鍙傛暟錛夈?br>    9錛?絳夊緟綰跨▼鐨勭粨鏉燂紙WaitSingleObject錛夈?/p>

涓昏浠g爜濡備笅錛?/p>

#include<stdio.h>
#include<conio.h>
#include<windows.h>

void main()
{
    HWND hWndChild = NULL;
    while(1)
    {
        // 鏌ユ壘瀵硅瘽妗嗙獥鍙o紝涓旇繖涓璇濇紿楀彛鐨勬爣棰樺悕涓?#8220;TestDlg”
        HWND hDlg = FindWindowEx(0, NULL, "#32770", "TestDlg");
        if(hDlg == NULL)
        {
            printf("娌℃湁鎵懼埌璇ュ璇濇紿楀彛!\n");
            exit(1);
        }
        else
        {
            // 鏌ユ壘榪欎釜瀵硅瘽妗嗙獥鍙d腑鐨別dit鎺т歡
            hWndChild = FindWindowEx(hDlg, NULL, "Edit",NULL);
            if(hWndChild != NULL)
            {
                break; // 鎵懼埌榪欎釜緙栬緫妗嗭紝鐜板湪瑕佸榪欎釜緙栬緫妗嗚繘琛屾敞鍏?
            }
        }
    }

    // 鏍規嵁鏌ユ壘鍑虹殑紿楀彛錛屾煡璇㈣繘紼?
    DWORD dwQQGameId;
    HANDLE hProcessQQGame;
    if(!GetWindowThreadProcessId(hWndChild,&dwQQGameId))
    {
        printf("Error in GetWindowThreadProcessId():%d\n",GetLastError());
        exit(1);
    }


    HINSTANCE hDll = NULL;
    typedef void(*LP_SET_HEDIT_FUN)(HWND);
    LP_SET_HEDIT_FUN m_SethEdit = NULL;
    char DllPath[MAX_PATH] = "D:\\榪涚▼娉ㄥ叆嫻嬭瘯宸ョ▼\\Bin\\automessagedll.dll";
    hDll = LoadLibrary(DllPath);
    if(hDll)
    {
        m_SethEdit = (LP_SET_HEDIT_FUN)GetProcAddress(hDll,"SethEdit");
    }
    if(m_SethEdit)
    {
        m_SethEdit(hWndChild);
    }
    else
    {
        printf("Can not load SethEdit in the dll(%d).\n",GetLastError());
    }

 

    if( (hProcessQQGame = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwQQGameId)) == NULL)
    {
        printf("Error in OpenProcess():%d\n",GetLastError());
        getch();
        exit(1);
    }

    int cb = (1+lstrlen(DllPath))* sizeof(char);

    char* RemoteLibFile = (char*)VirtualAllocEx(hProcessQQGame,NULL,cb,MEM_COMMIT,PAGE_READWRITE);
    if(RemoteLibFile == NULL)
    {
        printf("Error in VirtualAllocEx():%d\n",GetLastError());
        getch();
        exit(1);
    }
    if( (WriteProcessMemory(hProcessQQGame,RemoteLibFile,(LPVOID)DllPath,cb,NULL)) == 0)
    {
        printf("Error in WriteProcessMemory():%d\n",GetLastError());
        getch();
        exit(1);
    }


    PTHREAD_START_ROUTINE pfnStartAddr;
    pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"),"LoadLibraryA");


    HANDLE hThread = CreateRemoteThread(hProcessQQGame,NULL,0,pfnStartAddr,RemoteLibFile,0,NULL);
    if(hThread == NULL)
    {
        printf("Error in CreateRemoteThread():%d",GetLastError());
        getch();
        exit(1);
    }

    WaitForSingleObject(hThread,INFINITE);


    CloseHandle(hThread);
    VirtualFreeEx(hProcessQQGame,RemoteLibFile,0,MEM_RELEASE);
    CloseHandle(hProcessQQGame);
}

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/kissyfish/archive/2008/12/07/3462055.aspx



lhking 2010-06-23 15:33 鍙戣〃璇勮
]]>
C++ 涓嬭澆鏂囦歡http://www.shnenglu.com/lhking/archive/2010/06/23/118569.htmllhkinglhkingWed, 23 Jun 2010 07:27:00 GMThttp://www.shnenglu.com/lhking/archive/2010/06/23/118569.htmlhttp://www.shnenglu.com/lhking/comments/118569.htmlhttp://www.shnenglu.com/lhking/archive/2010/06/23/118569.html#Feedback0http://www.shnenglu.com/lhking/comments/commentRss/118569.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/118569.html涓嬭澆鏂囦歡瑕佺敤鍒版搷浣滅郴緇熺殑API鍑芥暟錛屼笅闈㈡槸涓涓猈INDOWS緋葷粺涓殑瀹炵幇錛?/p>

//---------------------------------------------------------------------------
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <wininet.h>
#define MAXBLOCKSIZE 1024
#pragma comment( lib, "wininet.lib" ) ;

void download(const char *Url,const char *save_as)/*灝哢rl鎸囧悜鐨勫湴鍧鐨勬枃浠朵笅杞藉埌save_as鎸囧悜鐨勬湰鍦版枃浠?/
{
 byte Temp[MAXBLOCKSIZE];
 ULONG Number = 1;

 FILE *stream;
 HINTERNET hSession = InternetOpen(_T("RookIE/1.0"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
 if (hSession != NULL)
 {
  HINTERNET handle2 = InternetOpenUrl(hSession,_T(Url), NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
  if (handle2 != NULL)
  {


   if( (stream = fopen( save_as, "wb" )) != NULL )
   {
    while (Number > 0)
    {
     InternetReadFile(handle2, Temp, MAXBLOCKSIZE - 1, &Number);

     fwrite(Temp, sizeof (char), Number , stream);
    }
    fclose( stream );
   }

   InternetCloseHandle(handle2);
   handle2 = NULL;
  }
  InternetCloseHandle(hSession);
  hSession = NULL;
 }
}

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

 download("*璋冪敤紺轟緥錛屼笅杞界櫨搴︾殑棣栭〉鍒癱:\index.html鏂囦歡*/
 return 0;
}

 



lhking 2010-06-23 15:27 鍙戣〃璇勮
]]>
C++ dll涓嬌鐢ㄥ畾鏃跺櫒http://www.shnenglu.com/lhking/archive/2010/06/23/118568.htmllhkinglhkingWed, 23 Jun 2010 06:57:00 GMThttp://www.shnenglu.com/lhking/archive/2010/06/23/118568.htmlhttp://www.shnenglu.com/lhking/comments/118568.htmlhttp://www.shnenglu.com/lhking/archive/2010/06/23/118568.html#Feedback0http://www.shnenglu.com/lhking/comments/commentRss/118568.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/118568.html鏂規硶涓錛?br>SetTimer(NULL, 0, 1000, (TIMERPROC)Timer2Proc);

VOID CALLBACK Timer2Proc(
       HWND hWnd, // handle of window for timer messages
       UINT uMsg, // WM_TIMER message
       UINT idEvent, // timer identifier
       DWORD dwTime // current system time
       )
{
 return;
}

鏂規硶浜岋細
// DLL涓殑綰跨▼鍑芥暟鍙互璞¤繖鏍蜂嬌鐢═imer
UINT ThreadProc(LPVOID)
{

 SetTimer(NULL, 1, 5000, NULL);
 MSG msg;
 // PeekMessage 寮哄埗緋葷粺涓鴻綰跨▼寤虹珛娑堟伅鏍?br> PeekMessage(&msg, NULL, NULL, NULL, FALSE);
 while (GetMessage(&msg, NULL, NULL, NULL))
 {
  switch (msg.message)
  {
  case WM_TIMER:
   {
    // 榪欓噷姣?縐掗挓鎵ц涓嬈?br>   }
   break;
  }
  //TranslateMessage(&msg);
  //DispatchMessage(&msg);
 }
 KillTimer(NULL, 1);
 return 0;
}

鏂規硶涓夛細
鍒涘緩涓涓嚎紼? 鍙嶅璇葷郴緇熸椂闂翠笉灝卞彲浠ヤ簡? 濡傛灉瀹氭椂瑕佹眰涓嶄弗,鐢⊿leep灝卞彲浠ヤ簡
UINT TimerThread(LPVOID pama)
{
 UINT oldTickCount, newTickCount;
 oldTickCount = GetTickCount();
 while(TRUE)
 {
  while(TRUE)
  {
   newTickCount = GetTickCount();
   if(newTickCount - oldTickCount >= 100)
   {
    oldTickCount = newTickCount;
    break;
   }
  }
  TimeProc();
 }
 return 0;
}
澶х害姣?00ms 璋冪敤涓嬈imeProc();



lhking 2010-06-23 14:57 鍙戣〃璇勮
]]>
What are the differences between MFC and Win32 Applicationhttp://www.shnenglu.com/lhking/archive/2010/06/22/118449.htmllhkinglhkingTue, 22 Jun 2010 03:43:00 GMThttp://www.shnenglu.com/lhking/archive/2010/06/22/118449.htmlhttp://www.shnenglu.com/lhking/comments/118449.htmlhttp://www.shnenglu.com/lhking/archive/2010/06/22/118449.html#Feedback0http://www.shnenglu.com/lhking/comments/commentRss/118449.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/118449.html MFC is basicly a library of OO wrapper classes that wrap the Win32 api, and provide objects for the basic window components (windows, buttons, checkboxes etc..). Essentially it is the win32 api objectified.

Also MFC provides some classes that resemble classes found in the STL. As MFC was made before STL was fully standardised.

My knowledge is incomplete. But that is the basic Idea.



 User Rating: 1019   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

The difference between Win32 and MFC are pretty straightforward:

The Windows API (Win32) uses a C interface to access windows functionality. It requires that you write all of your own code to manage windows and message handling. It is quite straightforward but you will need a good reference, like MSDN, and some good tutorials or samples to get started.

In contrast, MFC, which stands for Microsoft Foundation Classes, are a collection of C++ classes which encapsulate the Win32 API. MFC has some wizards which make the initial creation of a program quick and easy, but I have to admit the learning curve of MFC can sometimes be frustrating as Microsoft seems to have done everything in a way that can at times seem counter-intuitive.

Whenever I write an application I write it in MFC but I have been writing applications in MFC for a long time. If all you want is a message loop and a window handle for a game, use Win32. If you want to write a larger application like an editor, maybe MFC is the right tool.

Ideally, I would suggest skipping both Win32 and MFC and writing tools in .NET. I do not have any personal experience in it but people I work with sure can get a lot done using it. It may well be worth investigation.

Best of luck,

- S

 User Rating: 1352   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Quote:
Original post by Sphet

Whenever I write an application I write it in MFC but I have been writing applications in MFC for a long time. If all you want is a message loop and a window handle for a game, use Win32. If you want to write a larger application like an editor, maybe MFC is the right tool.

- S


I am planning to write an interactive 3D environment does that mean using WIN32 application is a better tool for it?

also is it possible to use openGL for oject creation and DirectXinput for the interactive control?
please give me some suggestion



millions of thanks

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Quote:
Original post by muimui1911
I am planning to write an interactive 3D environment does that mean using WIN32 application is a better tool for it?

For a game Win32 is usually better.
I think I have also heard that MFC doesn't work well in fullscreen.

Quote:
Original post by muimui1911
also is it possible to use openGL for oject creation and DirectXinput for the interactive control?

You can render with opengl and use directinput for input.

____________________________________________________________
Programmers Resource Central

 User Rating: 1107   |  Rate This User  Send Private MessageView ProfileView GD Showcase Entries Report this Post to a Moderator | Link

what about mouse movement like shooting games?

how can i do that, please give me some direction

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

You can use directinput for mouse movement. Or you can use GetCursorPos(POINT *p);

____________________________________________________________
Programmers Resource Central

 User Rating: 1107   |  Rate This User  Send Private MessageView ProfileView GD Showcase Entries Report this Post to a Moderator | Link

How do i use that? can you give me some example and much clearer direction

millions of thanks

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

msdn
Though if you want a camera class look here and here.


lhking 2010-06-22 11:43 鍙戣〃璇勮
]]>
c/c++涓寚閽堝涔犵殑涓や釜緇濆ソ渚嬪瓙-C/C++鎸囬拡瀛︿範http://www.shnenglu.com/lhking/archive/2010/06/21/118405.htmllhkinglhkingMon, 21 Jun 2010 15:02:00 GMThttp://www.shnenglu.com/lhking/archive/2010/06/21/118405.htmlhttp://www.shnenglu.com/lhking/comments/118405.htmlhttp://www.shnenglu.com/lhking/archive/2010/06/21/118405.html#Feedback0http://www.shnenglu.com/lhking/comments/commentRss/118405.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/118405.html
銆銆鎸囬拡瀛︿範涓嶅ソ鍏抽敭鏄蹇典笉娓呴犳垚鐨勶紝璇寸殑綆鍗曠偣灝辨槸涔︽病鏈夎鐪熺湅錛屾寚閽堢殑瀛︿範鐘瑰浜哄湪瀛︿範楗跺彛浠や笉澶氱湅澶氬澶氱粌鏄笉琛岀殑錛屼笅闈㈡槸涓や釜寰堢粡鍏哥殑渚嬪瓙錛屽緢澶氫功涓婇兘鏈?瀵逛簬瀛︿範鐨勯噸鐐瑰湪浜庣悊瑙?x鍜寈鐨勭悊瑙o紝浠栦滑騫朵笉鐩稿悓錛?x鎵琛ㄧず鐨勫叾瀹炲氨鏄彉閲廰鏈韓錛寈琛ㄧず鐨勬槸鍙橀噺a鍦ㄥ唴瀛樹腑鐨勫湴鍧錛屽鏋滄兂鏄庣櫧鍙互杈撳嚭瑙傚療cout<<*x"|"x;錛屽綋瀹氫箟浜唅nt *x;鍚庡x=&a鐨勭悊瑙g殑闂銆備粩緇嗛槄璇誨拰鑱旂郴涓嬮潰鐨勪袱涓緥瀛愭垜鎯蟲寚閽堥棶棰樺氨涓嶆槸闅劇偣浜嗭紒

#include <stdio.h>

main()
{
int a,b; /* 瀹氫箟a,b涓や釜鏁村艦鍙橀噺鐢ㄤ簬杈撳叆涓や釜鏁存暟 */
int *point_1,*point_2,*temp_point; /* 瀹氫箟涓変釜鎸囬拡鍙橀噺 */
scanf("%d,%d",&a,&b); /* 鏍煎紡鍖栬緭鍏,b鐨勫?*/
point_1=&a; /* 鎶婃寚閽堝彉閲弍oint_1鐨勫兼寚鍚戝彉閲廰鐨勫湴鍧 */
point_2=&b; /* 鎶婃寚閽堝彉閲弍oint_2鐨勫兼寚鍚戝彉閲廱鐨勫湴鍧 */
if (a<b)
{
     temp_point=point_1; /* 榪欓噷鐨則emp_point鏄敤浜庝復鏃跺瓨鍌╬oint_1鐨勫間篃灝辨槸鍙橀噺a鐨勫湴鍧鐨?*/
     point_1=point_2; /* 鎶妏oint_2鐨勫艱祴浜坧oint_1 */
     point_2=temp_point;
     /* 鐢變簬point_1鐨勫煎凡緇忔敼鍙樻棤娉曟壘鍒?鍒╃敤鍓嶉潰涓存椂瀛樺偍鐨勪篃灝辨槸temp_point鎵懼洖鍘焢oint_1鐨勫艱祴浜坧oint_2,鎵撳埌鎶妏oint_1鍜宲oint_2鍊煎鎹㈢殑鐩殑*/
}
printf("%d,%d",*point_1,*point_2); /* 鍒╃敤*point_1鍜?point_2涔熷氨鏄垎杈ㄦ寚鍚慴鍜宎鐨勬柟娉曟妸鍊兼樉紺鴻嚜鐖卞睆騫曚笂 */
}

/* 姝ら闇瑕佹敞鎰忓拰浜嗚В鏄殑姝ゆ硶騫舵病鏈夋敼鍙樺彉閲廰,b鐨勫煎彧鏄埄鐢ㄦ寚閽堝彉閲忓垎鍒瓨鍌╝鍜宐鐨勫湴鍧,鐒跺悗鍐嶆妸閭d袱涓寚閽堝彉閲忕殑鍊煎鎹竴涓嬪叾瀹炲氨鏄瓨鍌ㄥ湪
鎸囬拡鍙橀噺閲岄潰a涓巄鐨勫湴鍧瀵規崲,鍦ㄥ埄鐢?point_1鍜?point_2鐨勬柟寮忔妸璋冩崲鍚庣殑鍊兼樉紺哄嚭鏉ヨ繖閲岀殑*point_1瀹為檯灝辨槸a,姝や腑綆楁硶騫墮潪鐪熺殑鏀瑰彉a,b鐨勫?鑰屾槸
鍒╃敤鎸囬拡榪涜鍦板潃浜ゆ崲杈懼埌澶у皬鎺掑簭鐨勭洰鐨?
*/



#include <stdio.h>

main()
{
int a,b; /* 瀹氫箟a,b涓や釜鏁村艦鍙橀噺鐢ㄤ簬杈撳叆涓や釜鏁存暟 */
int *point_1,*point_2; /* 瀹氫箟涓変釜鎸囬拡鍙橀噺 */
scanf("%d,%d",&a,&b); /* 鏍煎紡鍖栬緭鍏,b鐨勫?*/
point_1 = &a; /* 鎶婃寚閽堝彉閲弍oint_1鐨勫兼寚鍚戝彉閲廰鐨勫湴鍧 */
point_2 = &b; /* 鎶婃寚閽堝彉閲弍oint_2鐨勫兼寚鍚戝彉閲廱鐨勫湴鍧 */
compositor(point_1,point_2); /* 璋冪敤鑷畾涔夌殑鎺掑簭娑墊暟,鎶奱,b鐨勫湴鍧浼犻掔粰point_1鍜宲oint_2 */
printf("%d,%d",a,b); /* 鎵撳嵃鍑篴,b鐨勫?*/
}

static compositor(p1,p2)
int *p1,*p2; /* 瀹氫箟褰㈠紡鍙傛暟p1,p2涓烘寚閽堝彉閲?*/
{
int temp; /* 寤虹珛涓存椂瀛樺偍鍙橀噺 */
     if (*p1<*p2) /* 濡傛灉*p1<p2,娉ㄦ剰榪欓噷鐨?p1鍜?p2鍏跺疄灝辨槸a鍜宐 */
     {
         temp = *p1; /* 鍒╃敤鍙橀噺temp鐢ㄤ簬涓存椂瀛樺偍*p1鍜屽氨鏄痑鐨勫?*/
         *p1 = *p2; /* 灝?p1鐨勫間篃灝辨槸a鐨勫兼崲鎴?p2鐨勫間篃灝辨槸b鐨勫?絳変環浜巃=b */
         *p2 = temp; /* 灝?p2鐨勫間篃灝辨槸temp鐨勫肩瓑浠蜂簬b=temp */
     }
}

/* 娉ㄦ剰:姝ら涓庝笂棰樹笉鍚岀殑鏄?鐩存帴鏀瑰彉浜哸浜巄鐨勫艱揪鍒扮湡瀹炴敼鍙樼殑鐩殑 */



lhking 2010-06-21 23:02 鍙戣〃璇勮
]]>
VC甯哥敤鏁版嵁綾誨瀷杞崲璇﹁Вhttp://www.shnenglu.com/lhking/archive/2010/06/21/118404.htmllhkinglhkingMon, 21 Jun 2010 14:59:00 GMThttp://www.shnenglu.com/lhking/archive/2010/06/21/118404.htmlhttp://www.shnenglu.com/lhking/comments/118404.htmlhttp://www.shnenglu.com/lhking/archive/2010/06/21/118404.html#Feedback0http://www.shnenglu.com/lhking/comments/commentRss/118404.htmlhttp://www.shnenglu.com/lhking/services/trackbacks/118404.htmlVC甯哥敤鏁版嵁綾誨瀷杞崲璇﹁В
鎴戜滑鍏堝畾涔変竴浜涘父瑙佺被鍨嬪彉閲忓熶互璇存槑
int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="紼嬩僵鍚?;
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;
涓銆佸叾瀹冩暟鎹被鍨嬭漿鎹負瀛楃涓?/font>

鐭暣鍨?int)
itoa(i,temp,10);///灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
itoa(i,temp,2); ///鎸変簩榪涘埗鏂瑰紡杞崲
闀挎暣鍨?long)
ltoa(l,temp,10);
嫻偣鏁?float,double)
鐢╢cvt鍙互瀹屾垚杞崲,榪欐槸MSDN涓殑渚嬪瓙:
int decimal, sign;
char *buffer;
double source = 3.1415926535;
buffer = _fcvt( source, 7, &decimal, &sign );
榪愯緇撴灉:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
decimal琛ㄧず灝忔暟鐐圭殑浣嶇疆,sign琛ㄧず絎﹀彿:0涓烘鏁幫紝1涓鴻礋鏁?
CString鍙橀噺
str = "2008鍖椾含濂ヨ繍";
buf = (LPSTR)(LPCTSTR)str;
BSTR鍙橀噺
BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
char * buf = _com_util::ConvertBSTRToString(bstrValue);
SysFreeString(bstrValue);
AfxMessageBox(buf);
delete(buf);
CComBSTR鍙橀噺
CComBSTR bstrVar("test");
char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str);
AfxMessageBox(buf);
delete(buf);
_bstr_t鍙橀噺
_bstr_t綾誨瀷鏄BSTR鐨勫皝瑁咃紝鍥犱負宸茬粡閲嶈澆浜?鎿嶄綔絎︼紝鎵浠ュ緢瀹規槗浣跨敤
_bstr_t bstrVar("test");
const char *buf = bstrVar;///涓嶈淇敼buf涓殑鍐呭
AfxMessageBox(buf);

閫氱敤鏂規硶(閽堝闈濩OM鏁版嵁綾誨瀷)
鐢╯printf瀹屾垚杞崲
char buffer[200];
char c = '1';
int   i = 35;
long j = 1000;
float f = 1.7320534f;
sprintf( buffer, "%c",c);
sprintf( buffer, "%d",i);
sprintf( buffer, "%d",j);
sprintf( buffer, "%f",f);
浜屻佸瓧絎︿覆杞崲涓哄叾瀹冩暟鎹被鍨?br>strcpy(temp,"123");
鐭暣鍨?int)
i = atoi(temp);
闀挎暣鍨?long)
l = atol(temp);
嫻偣(double)
d = atof(temp);
CString鍙橀噺
CString name = temp;
BSTR鍙橀噺
BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
...///瀹屾垚瀵筨strValue鐨勪嬌鐢?br>SysFreeString(bstrValue);
CComBSTR鍙橀噺
CComBSTR綾誨瀷鍙橀噺鍙互鐩存帴璧嬪?br>CComBSTR bstrVar1("test");
CComBSTR bstrVar2(temp);
_bstr_t鍙橀噺
_bstr_t綾誨瀷鐨勫彉閲忓彲浠ョ洿鎺ヨ祴鍊?br>_bstr_t bstrVar1("test");
_bstr_t bstrVar2(temp);

涓夈佸叾瀹冩暟鎹被鍨嬭漿鎹㈠埌CString
浣跨敤CString鐨勬垚鍛樺嚱鏁癋ormat鏉ヨ漿鎹?渚嬪:

鏁存暟(int)
str.Format("%d",i);
嫻偣鏁?float)
str.Format("%f",i);
瀛楃涓叉寚閽?char *)絳夊凡緇忚CString鏋勯犲嚱鏁版敮鎸佺殑鏁版嵁綾誨瀷鍙互鐩存帴璧嬪?br>str = username;
瀵逛簬Format鎵涓嶆敮鎸佺殑鏁版嵁綾誨瀷錛屽彲浠ラ氳繃涓婇潰鎵璇寸殑鍏充簬鍏跺畠鏁版嵁綾誨瀷杞寲鍒癱har *鐨勬柟娉曞厛杞埌char *錛岀劧鍚庤祴鍊肩粰CString鍙橀噺銆?/font>
鍥涖丅STR銆乢bstr_t涓嶤ComBSTR

CComBSTR 鏄疉TL瀵笲STR鐨勫皝瑁咃紝_bstr_t鏄疌++瀵笲STR鐨勫皝瑁?BSTR鏄?2浣嶆寚閽?浣嗗茍涓嶇洿鎺ユ寚鍚戝瓧涓茬殑緙撳啿鍖恒?br>char *杞崲鍒癇STR鍙互榪欐牱:
BSTR b=_com_util::ConvertStringToBSTR("鏁版嵁");///浣跨敤鍓嶉渶瑕佸姞涓奵omutil.h鍜宑omsupp.lib
SysFreeString(bstrValue);
鍙嶄箣鍙互浣跨敤
char *p=_com_util::ConvertBSTRToString(b);
delete p;
鍏蜂綋鍙互鍙傝冧竴錛屼簩孌佃惤閲岀殑鍏蜂綋璇存槑銆?/font>
CComBSTR涓巁bstr_t瀵瑰ぇ閲忕殑鎿嶄綔絎﹁繘琛屼簡閲嶈澆錛屽彲浠ョ洿鎺ヨ繘琛?,!=,==絳夋搷浣滐紝鎵浠ヤ嬌鐢ㄩ潪甯告柟渚褲?br>鐗瑰埆鏄痏bstr_t,寤鴻澶у浣跨敤瀹冦?/font>

浜斻乂ARIANT 銆乢variant_t 涓?COleVariant

VARIANT鐨勭粨鏋勫彲浠ュ弬鑰冨ご鏂囦歡VC98\Include\OAIDL.H涓叧浜庣粨鏋勪綋tagVARIANT鐨勫畾涔夈?br>瀵逛簬VARIANT鍙橀噺鐨勮祴鍊鹼細棣栧厛緇檝t鎴愬憳璧嬪鹼紝鎸囨槑鏁版嵁綾誨瀷錛屽啀瀵硅仈鍚堢粨鏋勪腑鐩稿悓鏁版嵁綾誨瀷鐨勫彉閲忚祴鍊鹼紝涓句釜渚嬪瓙錛?br>VARIANT va;
int a=2001;
va.vt=VT_I4;///鎸囨槑鏁村瀷鏁版嵁
va.lVal=a; ///璧嬪?/font>
瀵逛簬涓嶉┈涓婅祴鍊肩殑VARIANT錛屾渶濂藉厛鐢╒oid VariantInit(VARIANTARG FAR* pvarg);榪涜鍒濆鍖?鍏舵湰璐ㄦ槸灝唙t璁劇疆涓篤T_EMPTY,涓嬭〃鎴戜滑鍒椾婦vt涓庡父鐢ㄦ暟鎹殑瀵瑰簲鍏崇郴:
Byte bVal; // VT_UI1.
Short iVal; // VT_I2.
long lVal; // VT_I4.
float fltVal; // VT_R4.
double dblVal; // VT_R8.
VARIANT_BOOL boolVal; // VT_BOOL.
SCODE scode; // VT_ERROR.
CY cyVal; // VT_CY.
DATE date; // VT_DATE.
BSTR bstrVal; // VT_BSTR.
DECIMAL FAR* pdecVal // VT_BYREF|VT_DECIMAL.
IUnknown FAR* punkVal; // VT_UNKNOWN.
IDispatch FAR* pdispVal; // VT_DISPATCH.
SAFEARRAY FAR* parray; // VT_ARRAY|*.
Byte FAR* pbVal; // VT_BYREF|VT_UI1.
short FAR* piVal; // VT_BYREF|VT_I2.
long FAR* plVal; // VT_BYREF|VT_I4.
float FAR* pfltVal; // VT_BYREF|VT_R4.
double FAR* pdblVal; // VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL.
SCODE FAR* pscode; // VT_BYREF|VT_ERROR.
CY FAR* pcyVal; // VT_BYREF|VT_CY.
DATE FAR* pdate; // VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*.
VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT.
void FAR* byref; // Generic ByRef.
char cVal; // VT_I1.
unsigned short uiVal; // VT_UI2.
unsigned long ulVal; // VT_UI4.
int intVal; // VT_INT.
unsigned int uintVal; // VT_UINT.
char FAR * pcVal; // VT_BYREF|VT_I1.
unsigned short FAR * puiVal; // VT_BYREF|VT_UI2.
unsigned long FAR * pulVal; // VT_BYREF|VT_UI4.
int FAR * pintVal; // VT_BYREF|VT_INT.
unsigned int FAR * puintVal; //VT_BYREF|VT_UINT.

_variant_t鏄疺ARIANT鐨勫皝瑁呯被錛屽叾璧嬪煎彲浠ヤ嬌鐢ㄥ己鍒剁被鍨嬭漿鎹紝鍏舵瀯閫犲嚱鏁頒細鑷姩澶勭悊榪欎簺鏁版嵁綾誨瀷銆?br>浣跨敤鏃墮渶鍔犱笂#include <comdef.h>
渚嬪錛?br>long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;

COleVariant鐨勪嬌鐢ㄤ笌_variant_t鐨勬柟娉曞熀鏈竴鏍鳳紝璇峰弬鑰冨涓嬩緥瀛愶細
COleVariant v3 = "瀛楃涓?, v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;

鍏佸叾瀹冧竴浜汣OM鏁版嵁綾誨瀷
鏍規嵁ProgID寰楀埌CLSID
HRESULT CLSIDFromProgID( LPCOLESTR lpszProgID,LPCLSID pclsid);
CLSID clsid;
CLSIDFromProgID( L"MAPI.Folder",&clsid);
鏍規嵁CLSID寰楀埌ProgID
WINOLEAPI ProgIDFromCLSID( REFCLSID clsid,LPOLESTR * lplpszProgID);
渚嬪鎴戜滑宸茬粡瀹氫箟浜?CLSID_IApplication,涓嬮潰鐨勪唬鐮佸緱鍒癙rogID
LPOLESTR pProgID = 0;
ProgIDFromCLSID( CLSID_IApplication,&pProgID);
...///鍙互浣跨敤pProgID
CoTaskMemFree(pProgID);//涓嶈蹇樿閲婃斁
涓冦丄NSI涓嶶nicode
Unicode縐頒負瀹藉瓧絎﹀瀷瀛椾覆,COM閲屼嬌鐢ㄧ殑閮芥槸Unicode瀛楃涓層?/font>
灝咥NSI杞崲鍒癠nicode
(1)閫氳繃L榪欎釜瀹忔潵瀹炵幇錛屼緥濡? CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)閫氳繃MultiByteToWideChar鍑芥暟瀹炵幇杞崲,渚嬪:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '\0';
(3)閫氳繃A2W瀹忔潵瀹炵幇,渚嬪:
USES_CONVERSION;
CLSIDFromProgID( A2W(szProgID),&clsid);
灝哢nicode杞崲鍒癆NSI
(1)浣跨敤WideCharToMultiByte,渚嬪:
// 鍋囪宸茬粡鏈変簡涓涓猆nicode 涓?wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL );
(2)浣跨敤W2A瀹忔潵瀹炵幇,渚嬪:
USES_CONVERSION;
pTemp=W2A(wszSomeString);
鍏佸叾瀹?/font>
瀵規秷鎭殑澶勭悊涓垜浠粡甯擱渶瑕佸皢WPARAM鎴朙PARAM絳?2浣嶆暟鎹紙DWORD)鍒嗚В鎴愪袱涓?6浣嶆暟鎹紙WORD),渚嬪錛?br>LPARAM lParam;
WORD loValue = LOWORD(lParam);///鍙栦綆16浣?br>WORD hiValue = HIWORD(lParam);///鍙栭珮16浣?/font>

瀵逛簬16浣嶇殑鏁版嵁(WORD)鎴戜滑鍙互鐢ㄥ悓鏍風殑鏂規硶鍒嗚В鎴愰珮浣庝袱涓?浣嶆暟鎹?BYTE),渚嬪:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///鍙栦綆8浣?br>BYTE hiValue = HIBYTE(wValue);///鍙栭珮8浣?/font>

涓や釜16浣嶆暟鎹紙WORD錛夊悎鎴?2浣嶆暟鎹?DWORD,LRESULT,LPARAM,鎴朩PARAM)
LONG MAKELONG( WORD wLow, WORD wHigh );
WPARAM MAKEWPARAM( WORD wLow, WORD wHigh );
LPARAM MAKELPARAM( WORD wLow, WORD wHigh );
LRESULT MAKELRESULT( WORD wLow, WORD wHigh );

涓や釜8浣嶇殑鏁版嵁(BYTE)鍚堟垚16浣嶇殑鏁版嵁(WORD)
WORD MAKEWORD( BYTE bLow, BYTE bHigh );

浠嶳(red),G(green),B(blue)涓夎壊寰楀埌COLORREF綾誨瀷鐨勯鑹插?br>COLORREF RGB( BYTE byRed,BYTE byGreen,BYTE byBlue );
渚嬪COLORREF bkcolor = RGB(0x22,0x98,0x34);

浠嶤OLORREF綾誨瀷鐨勯鑹插煎緱鍒癛GB涓変釜棰滆壊鍊?br>BYTE Red = GetRValue(bkcolor); ///寰楀埌綰㈤鑹?br>BYTE Green = GetGValue(bkcolor); ///寰楀埌緇塊鑹?br>BYTE Blue = GetBValue(bkcolor); ///寰楀埌鍏伴鑹?/font>

涔濄佹敞鎰忎簨欏?br>鍋囧闇瑕佷嬌鐢ㄥ埌ConvertBSTRToString姝ょ被鍑芥暟,闇瑕佸姞涓婂ご鏂囦歡comutil.h,騫跺湪setting涓姞鍏omsupp.lib鎴栬呯洿鎺ュ姞涓?pragma comment( lib, "comsupp.lib" )



lhking 2010-06-21 22:59 鍙戣〃璇勮
]]>
97精品久久天干天天天按摩| 久久久久亚洲av综合波多野结衣 | 久久人妻少妇嫩草AV蜜桃| 久久精品成人免费国产片小草| 亚洲精品无码久久久久sm| 久久电影网| 久久久精品2019免费观看| 久久夜色精品国产噜噜亚洲a| 国产精品欧美久久久天天影视| 成人久久精品一区二区三区| 久久精品国产亚洲Aⅴ蜜臀色欲| 狠狠色噜噜色狠狠狠综合久久 | 亚洲国产精品无码久久九九| 99久久精品国产综合一区 | 国产日韩久久久精品影院首页| 97久久久久人妻精品专区| 国产91久久综合| 人妻少妇久久中文字幕| 精品乱码久久久久久久| 久久精品中文騷妇女内射| 欧美日韩精品久久久久| 久久精品国产99国产精偷| 热re99久久精品国99热| 青青热久久国产久精品| 2021少妇久久久久久久久久| 国产亚洲精品久久久久秋霞| 久久亚洲国产成人影院网站| 久久久久亚洲精品无码网址| 久久精品国产亚洲麻豆| 69国产成人综合久久精品| 久久精品中文无码资源站| 色欲久久久天天天综合网精品| 久久精品国产一区二区三区| 91亚洲国产成人久久精品网址| 97久久精品无码一区二区天美| 久久亚洲国产成人精品性色| 婷婷久久香蕉五月综合加勒比| 久久人人添人人爽添人人片牛牛| 亚洲精品tv久久久久| 老男人久久青草av高清| 国产精品久久波多野结衣|