❶ WPF做出的3D程序如何放到網頁上
先得轉換成圖片或者FLASH啊,然後上傳到網頁伺服器。如果不需要給別人看的話,那就直接上傳,別人可以下載下來。用3D打開。
❷ 在MFC中使用WPF技術
一 介紹
本文將以一個實例來說明如何將WPF技術集成在基於MFC的應用程序中 這種技術的主要目的是為了增強基於Win /MFC的應用程序的在圖形方面的表現能力 本文所提供的演示程序將在MFC對話框架應用程序中顯示一個WPF動畫時鍾 界面如圖 所示
本文需派賀差要的開發工具和開發庫 為了建立和運行demo程序 我們需要安裝如下的組件
Visual Studio 或Visual Studio NET Framework 或 NET Framework
所需要的平台 demo程序必須在下面支持 NET Framework 的操作系統平台上運行
Windows Vista Windows XP SP Windows Server SP
如果你是一名C++開發人員 並且想使用WPF技術來增強自己的基於Win /MFC應用程序 本文非常適合你 為了能從本文學習到更多的知識 我們需要熟悉VC++/CLi MFC XAML和C# 但是 如果我們不了解C#或XAML 我們仍然可以通過引用現成的DLL來使用WPF程序
二 什麼是WPF
WPF是Windows Presentation Foundation的拍碧縮寫 它是微軟 NET Framework 的一個子系統 這種技術允許開發人員高效地創建可視化的應用程序 並改善用戶體驗 由於WPF的發布 使用Windows程序在富控制項的設計 開發上更如虎添翼 WPF主要關注一套應用程序服務 用戶介面 D和 D 矢量圖 動畫 數據綁字 音頻 並提供一個在UI和商業邏輯之間的非常清晰的界限
WPF API是被管制的代碼 但是大多數Win /MFC程序是非管制的C++代碼 按著慣例 WPF API不能通過非常製程序調用 然後 通過使用VC編譯器的/clr選項 我們可以建立一個由管制和非管制混合而面的系統 在這個系統中 我們可以使管制和非管制代碼無縫地混合在一起
有一個要注意的是在C++工程中不允許編譯XAML文件 因此 我們必須建立一個包含在本例中所需要的所有XAML而的C# DLL 然後在C++工程中包含這個Dll引用
有兩種基本的技術可以融合WPF和Win /MFC代碼
將WPF放到Win /MFC程序中 使用這種技術 開發人員可以使用WPF的高級圖形能力來渲染Win /MFC應用程序
將Win /MFC放到WPF中 使用這種技術 開發人員可以在WPF中使用已經存在的
Win /MFC控制項 並通過一定的機制來傳遞數據
在本文中將採用第一種方法
三 融合Win /MFC和WPF程序
上面部分所說的是本例的基本規則 下面在本節中將介紹如何編寫具體的實現代碼 在本例中 我首先會演示使用XAML和C#建立WPF內容 並在VC++中引用這個DLL
本例的目的是建立一個用於設置日期和時間的設置工具 其中動畫部分使用WPF實現 程序的其他部分仍然使用MFC實現
這個演示程序由兩部分組成 一個是MFCHostMPF(由VC++/MFC代碼組成) 另一個是WPFControls(由XAML和C#代碼組成) 這個MFCHostWPF工程將由WPFControls工程所產生的DLL作為一個外部的引用 如圖 所示
向MFC工程中加入一個WPF引用 如圖 和圖 所示
三 在MFC應用程序中加入和WPF相關的代碼
先提一下 gcnew關鍵字被用於建立一個管制類型的實例 在本例中將建立一個垃圾回收集合棧的實例 所有被gcnew分配的內存空間將被垃圾回收器自動管理 而開發人員並不需要為什麼時間釋放它們而操心
為了使用WPF程序 關塵皮鍵是System::Windows::Interop::HwndSource類 這個類將在Win 窗口中使用WPF程序 因此 WPF程序可以作為MFC窗口的子窗口放到UI上 而在WPF對象和Win 窗口之間的通訊要通過引用C++程序中被存儲的靜態欄位 這些靜態欄位的代碼如下
ref class Globals { public: static System::Windows::Interop::HwndSource^ gHwndSource; static WPFControls::AnimClock^ gwcClock; };
HWND hwndWPF; // 和WPF相關的hwnd 為了建立一個HwndSource 首先需要建立一個HwndSourceParameters結構 這個結構需要如下的參數 類 窗口 窗口類型 窗口的初始位置 窗口的初始尺寸 父窗口 一但我們將HwndSourceParameters結構編寫完 就可以將這個結構到HwndSource的構造方法HwndSource(HwndSourceParameters)中 最後 我們將WPF時鍾的引用賦值給HwndSource對象的RootVisual屬性 並通過調用Handle ToPointer()返回HwndSource的HWND 代碼如下HWND GetHwnd(HWND parent int x int y int width int height) { System::Windows::Interop::HwndSourceParameters^ sourceParams = gcnew System::Windows::Interop::HwndSourceParameters ( MFCWPFApp ); sourceParams >PositionX = x; sourceParams >PositionY = y; sourceParams >Height = height; sourceParams >Width = width; sourceParams >ParentWindow = IntPtr(parent); sourceParams >WindowStyle = WS_VISIBLE | WS_CHILD; Globals::gHwndSource = gcnew System::Windows::Interop::HwndSource(*sourceParams); DateTime tm = DateTime::Now; Globals::gwcClock = gcnew WPFControls::AnimClock(); Globals::gwcClock >ChangeDateTime(tm Year tm Month tm Day tm Hour tm Minute tm Second); FrameworkElement^ myPage = Globals::gwcClock; Globals::gHwndSource >RootVisual = myPage; return (HWND) Globals::gHwndSource >Handle ToPointer(); }
因此 無論用戶如何變化時鍾 我們的MFC代碼都會調用RefereshWPFControl()來刷新WPF時鍾void RefreshWPFControl() { FrameworkElement^ page; DateTime tm = DateTime::Now; Globals::gwcClock >ChangeDateTime(tm Year tm Month tm Day tm Hour tm Minute tm Second); page = Globals::gwcClock; Globals::gHwndSource >RootVisual = page; return; }
現在我們已經有了大部分我們需要的功能了 而最後的任務是在MFC對話框代碼中找個地方調用HwndSource實現創建函數 當然 有很多地方可以做這個工作 但是OnCreate也許是最好的位置 在OnCreate事件句柄中調用GetHwnd()函數的代碼如下int CMFCHostWPFDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == ) return ; hwndWPF = GetHwnd(this >GetSafeHwnd() ); return ; }
四 結論 lishixin/Article/program/net/201311/11996
❸ 如何發布WPF桌面程序
方法/步驟
1首先打開已經完成的工程
2「文件」——>「新建」——>"項目"——>"安裝項目"
3"名稱"——可以自己根據要求修改。
"位置"——是指你要製作的安裝文件存放在什麼目錄內,可以根據需要修改,筆者一般是把它放在本工程的同一個目錄內。打包完成後,可以在此目錄下找到安裝程序。
確定後,看到解決方案資源管理器中增加了SetupDemo方案。當然名字仍然可以修改
END
開始製作安裝包
1安裝向導完成後即可進入項目文件夾:直接點右鍵選擇"添加"—>"項目輸出"
2選擇主輸出之後點擊確定
添加卸載程序
即在添加你的應用程序項目的時候,多添加一個msiexec.exe進去,
這個文件在c:\windows\system32文件夾下
卸載程序的位置
創建快捷方式
然後右擊你的可執行文件,創建快捷方式
如果想在開始程序中單獨創建文件夾,你就應當在「用戶的『程序』菜單」中建立文件夾並為它起個名子,並把快捷方式放到這個文件夾中。
然後把快捷方式分別剪切或復制到左邊的"用戶的'程序'菜單"和"用戶桌面"中。
這樣安裝程序安裝完成後會在"開始->所有程序"和"桌面"上生成程序的快捷方式
如果還需要添加其他文件,例如報表模板等等
設置卸載屬性
我選擇把卸載程序的快捷方式放在了開始菜單中,然後下面我們要的做的就是查找這個部署項目的ProctCode了,
滑鼠左鍵單擊項目名稱,記住是左鍵單擊,然後點擊屬性標簽,注意:不是右擊的屬性,這個區別很大,這時你就可以看到ProctCode了
然後打開你創建的那個快捷方式的屬性對話框,
在Aguements屬性中輸入"/x {ProctCode}"
加入.NET系統組件
選擇系統必備
最後,點擊"生成"即可在我們剛才設置的目錄下生成帶有卸載功能的安裝程序了
❹ VS2010 軟體發布: 在VS2010用C#寫好了一個WPF應用程序,該如何提供給別人使用呢
4.0的程序 只能在已安裝FRAMEWORK4.0的機器上運行
2.0的能在2.0~3.5的運行
3.0 ---- 3.0~3.5
1.1-----1.1
請在客戶機器上安裝對應版本的FRAMEWORK
如果你不寫安裝包,建議RELEASE編譯後,拷貝RELEASE文件夾內
❺ 如何編寫,編譯和運行WPF應用程序
1. 在記事本中編寫以下內容:
using System;
using System.Windows;
namespace zzm.SayHello{classSayHello{
[STAThread]
public static void Main(){
Window win = new Window();
win.Height = 200;
win.Width = 300;
win.Title = "你好,WPF!";
win.Show();
Application app = new Application();app.Run();}}}
2. 保存為Hello.cs。
3. 在命令行編譯WPF應用程序,在提示符下輸入以下命令:csc.exe
/out:SayHello.exe
/target:winexe Hello.exe
/reference:"D:\Program Files\Reference
Assemblies\Microsoft\Framework\v3.0\presentationframework.dll"
/reference:"D:\Program Files\Reference
Assemblies\Microsoft\Framework\v3.0\windowsbase.dll"
/reference:"D:\Program Files\Reference