這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
programming:dot_net_framework [2013/07/19 18:02] wenpei |
programming:dot_net_framework [2013/07/29 16:42] (目前版本) wenpei |
||
---|---|---|---|
行 38: | 行 38: | ||
==== CLR Class Library ==== | ==== CLR Class Library ==== | ||
- | 在完成 Project 的建立之後,就可以開始寫 CLR Class 裡面所需要的功能,像是把 COM DLL 讀進來用,或是寫只有在 C++ 才能用的 Windows Imaging Component (WIC) 等等。 | + | 在完成 Project 的建立之後,就可以開始寫 CLR Class 裡面所需要的功能,像是把 COM DLL 讀進來用,或是寫只有在 C++ 才能用的 [[http://msdn.microsoft.com/en-us/library/windows/desktop/ee719902%28v=vs.85%29.aspx|Windows Imaging Component (WIC)]] 等等。 |
這邊範例先增加兩個簡單的功能:Add、Minus | 這邊範例先增加兩個簡單的功能:Add、Minus | ||
行 107: | 行 107: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | 若編譯錯誤,可能是平台問題,打開 C# Project 的 Properties,在 Build Tab 裡面的 Platform target 選擇 x86 | ||
+ | |||
+ | {{:programming:clr_x86.png|}} | ||
==== 進階應用 ==== | ==== 進階應用 ==== | ||
行 147: | 行 151: | ||
CLR 層的寫法是透過 Bitmap^% 取得一個 Bitmap 的 handle,並先產生好一塊 Byte Array 空間,COM DLL 修改完 Byte Array 後,複製到傳入的 Bitmap Handle | CLR 層的寫法是透過 Bitmap^% 取得一個 Bitmap 的 handle,並先產生好一塊 Byte Array 空間,COM DLL 修改完 Byte Array 後,複製到傳入的 Bitmap Handle | ||
+ | |||
+ | 關於 **^%** 的用法可參考 [[http://stackoverflow.com/questions/6616599/does-the-symbol-replace-cs-ref-in-parameter-passing-in-c-cli-code|Does the ^ symbol replace C#'s “ref” in parameter passing in C++/CLI code?]] | ||
<code> | <code> | ||
行 171: | 行 177: | ||
pictureBox1.Image = (Image)bmPic; | pictureBox1.Image = (Image)bmPic; | ||
</code> | </code> | ||
+ | |||
+ | ==== 參考文件 ==== | ||
+ | C# Pass by Reference to CLR | ||
+ | * [[http://msdn.microsoft.com/en-us/library/8903062a%28VS.90%29.aspx|% (Tracking Reference)]] | ||
+ | * [[http://msdn.microsoft.com/en-US/library/yk97tc08%28v=vs.90%29.aspx|^ (Handle to Object on Managed Heap)]] | ||
+ | * [[http://msdn.microsoft.com/en-US/library/te3ecsc8%28v=vs.90%29.aspx|gcnew]] | ||
+ | * [[http://msdn.microsoft.com/en-us/library/1dz8byfh%28v=vs.90%29.aspx|pin_ptr]] | ||
+ | * [[http://bobpowell.net/lockingbits.aspx|Using the LockBits method to access image data]] | ||
+ | |||
+ | WIC | ||
+ | * [[http://msdn.microsoft.com/en-us/library/windows/desktop/ff973956.aspx|Using the Windows Imaging Component]] | ||
+ | |||
+ | COM | ||
+ | * [[http://msdn.microsoft.com/zh-tw/library/aa288455%28v=vs.71%29.aspx|COM Interop 第 1 部份:C# 用戶端教學課程]] | ||
+ | * [[http://www.codeproject.com/Articles/38254/A-Beginner-Tutorial-for-Writing-Simple-COM-ATL-DLL|A Beginner Tutorial for Writing Simple COM/ATL DLL and Using it with .NET]] | ||