Applies to: desktop apps | Metro style apps
它会告诉你当前API是否支持Metro App。#pragma region Desktop Family(仅支持desktop app)
DirectWrite
至于部分支持哪些,可以参照如下MSDN链接。当然作为替代,winRT下不管是XAML还是Html+JS都有各自支持的绘图接口。html下还支持html5的canvas,css3等特性。
当然,WinRT也支持一些当前比较热的特性,比如Websocket,比如访问Rest API 常用的XMLHttpRequest(Ajax请求)等。
文件读取可以使用Windows.Storage.Pickers.FileOpenPicker,Windows.Storage.Pickers.FileSavePicker等API,而存储管理,文件夹管理则可以使用Windows.Storage.StorageFile,Windows.Storage.StorageFolder下的API。
线程这块也有较大变化,也会给既有的代码带来一定的冲击,除了还暂时支持_beginthreadex和CreateThread外(之所以说暂时,是因为这个API并不在MSDN中列出所支持的范围,只是目前在release preview版本上还可以正常工作),其他如ResumeThread,SuspendThread,TerminateThread等都不再支持,而在WinRT中,Windows.System.Threading下提供了进行多线程开发的API。
5. 同步管理与事件
Metro App中不再支持如下常用的同步管理和事件的API:
CreateEvent
CreateSemaphore
InitializeCriticalSection
WaitForSingleObject
PulseEvent
但还是部分支持带Ex后缀的一些API,比如:
CreateEventEx
CreateSemaphoreEx
InitializeCriticalSectionEx
WaitForSingleObjectEx
InterlockedDecrement
InterlockedIncrement
详细请参照如下MSDN:
http://msdn.microsoft.com/en-us/library/windows/apps/br205762.aspx
6.Dll访问
Metro App中可以正常支持FreeLibrary和GetProcAddress,但不再支持LoadLibraryEx,作为替代,可以使用LoadPackagedLibrary来载入dll。
由此可见,如果要把现有程序整合到Metro App中,还是需要一些工作才可以做到的。在ARM-based的windows 8上由于只支持Metro App,对MS以外的应用更是直接限制了对原有win32 API的访问,可想而知这对很多外部第三方软件的冲击会有多大,由于MS的限制,Chrome,Firefox将不再能支持Arm版Win8,也就是说Arm平台的Win8只可能存在MS自己的浏览器,相信现在google,firefox们也在为MS这种变相垄断而咬牙切齿抱怨不已吧,而对我们开发者而言,能做的只有一个---妥协。
转自:http://blog.csdn.net/my_business/article/details/7895879