2011-03-18 177 views
0

我想創建將從現有的winform控件派生的自定義窗體窗體控件。對於例如TextBoxEx將從System.Windows.Forms.TextBox派生。這些新的自定義控件將改變外觀和感覺,並將爲現有控件添加一些額外的功能。這將通過進行適當的win32 API調用來完成。可以在32位(x86)和64位(x64)平臺上運行的自定義窗體控件

我想確保開發的定製控件適用於32位和64位平臺。我想根據您的經驗(如果有的話)來了解實現它的最佳方式。

回答

1

你不必做任何特別的事情。無論您是在32位還是64位,底層Windows API都是相同的。

保存指針大小的東西的數據類型,例如窗口句柄,取決於目標平臺,在32位和64位之間浮動。因此,它們被宣佈爲IntPtr P/Invoke。只要你做對了,你的代碼就可以在兩個平臺上運行。

+0

我知道它會綁定到正確的dll。對於例如如果我使用的是user32.dll,它將綁定到32位平臺上的32位版本,如果在64位平臺上執行,則會綁定到64位版本。但在user32.dll中有像SetWindowLong32和SetWindowLongPtr64這樣的win32 API。我需要在這兩個API的代碼中進行選擇,具體取決於支持的平臺。請指教。 – 2011-03-18 12:33:09

+0

不,該API在32和64上都稱爲SetWindowLongPtr。API之間實際上沒有區別。 – 2011-03-18 12:47:32

+0

最初我有相同的印象,但看到這個:http://stackoverflow.com/questions/3343724/how-do-i-pinvoke-to-getwindowlongptr-and-setwindowlongptr-on-32-bit-platforms – 2011-03-18 12:57:48

相關問題