程序代碼: http://www.shnenglu.com/Files/alantop/async.rar
This sample creates a control that downloads data asynchronously from a URL. The control implements the IBindStatusCallback interface. Typically, you asynchronously download large binary objects or properties. This allows the control's user interface to remain unblocked during potentially lengthy network operations. The use of asynchronous downloading also gives the user a chance to abort the download. ATL uses WinInet functions internally to implement asynchronous downloading.
這個例子建立了一個控件從一個URL里異步下載數據。這個控件實現了IBindStatusCallback接口。有代表性的,你異步下載大的數據和道具。這將保持在整個網絡長時間的網絡操作中,用戶的接口保持不被封鎖。異步下載可以給用戶提供中斷的機會。ATL用內建的WinInet函數實現異步下載。
ASYNC creates a subclassed edit control with one property called URL. The URL property is a BSTR that represents a URL that points to data. The ASYNC sample uses the ATL CBindStatusCallback class to implement asynchronous downloading. When the control user sets the URL property, ASYNC creates a CBindStatusCallback object. The CBindStatusCallback::StartAsyncDownload method is then called and passed both the URL and a pointer to a callback function. This function, CAtlAsync::OnData, is called by the CBindStatusCallback object and is passed the binary data from the URL as it is received. CAtlAsync::OnData simply sends the received data to the subclassed edit control, where it is displayed.
ASYNC建立一個子類化的edit控件,其有一個屬性關聯URL.URL屬性用BSTR代表。演示程序用CBindStatusCallback類實現異步下載。當控件用戶設置URL屬性,ASYNC建立一個CBindStatusCallback屬性。然后,CBindStatusCallback::StartAsyncDownload被調用,URL和一個指向回調函數的指針被傳遞給函數。CAtlAsync::OnData被CBindStatusCallback對象調用,并傳遞url接收到的二進制數據。CAtlAsync::OnData發送接收到的數據到被顯示的子類化控件中。
Running the Sample
Load the AtlAsync.htm file into your web browser. Type a URL into the edit control and press the Go button. This sets the ASYNC control's URL property to the URL you typed and starts the download. As data is downloaded, you will see it displayed in the ASYNC control.
在瀏覽器中打開atlasync.htm文件。在edit控件鍵入網址,并選擇go.這將設置ASYNC控件的URL屬性并開始下載。當數據下載的時候,你可以看到它在async控件中顯示。
For an example of how to subclass Windows controls using ATL, see the ATL SubEdit sample.
怎樣用
ATL
子類化窗口控件,看
ATL subedit
例子。
?