看板 C_and_CPP 關於我們 聯絡資訊
基本上這個東西沒有很紅, 我個人覺得有幾個原因: 一.架設與維護人員訓練耗時 要找精通 c++ & javascript & css & (ajax | html5 | flash)的人 你是要殺人喔? 二.網站製作時間相對較長、成本較高 語言本身的難度、編譯的時間、溝通的時間、debug的時間 三.要錢而且很貴 599美金,跟一個microchip編譯器一樣貴。 四.沒有人幫他寫framework跟plugin 不像 wordpress 一樣,掛一掛就解一半的問題~ 大伙進攻囉! 網頁的大門已經打開了! 打開很久了(咦? 程式碼載點: http://damody.googlecode.com/files/image_procesing_wt.7z 需要的 library prebuilt: library-prebuilt-for-windows.googlecode.com/files/wt-3.3.0-vc11up3-x64.7z library-prebuilt-for-windows.googlecode.com/files/zlib-1.2.7-mingw-x64.7z 大概說一下, WRun 會從 cmd 參數初始化整個程式, 而每次有人要看網頁時, Wt 都會呼叫 createApplication 來產生一個 WApplication 實體跟一個 thread, setTitle("Hello world"); // application title root()->addWidget(new WText("Your name, please ? ")); // show some text nameEdit_ = new WLineEdit(root()); // allow text input nameEdit_->setFocus(); // give focus WPushButton* button = new WPushButton("Greet me.", root()); // create a button button->setMargin(5, Left); // add 5 pixels margin root()->addWidget(new WBreak()); // insert a line break greeting_ = new WText(root()); // empty text 初始化一堆按鍵。 nameEdit_->enterPressed().connect(std::bind([ = ]() { greeting_->setText("Hello there, " + nameEdit_->text()); })); button->clicked().connect(std::bind([ = ]() { greeting_->setText("Hello there, " + nameEdit_->text()); })); 綁函數。 重點 載完圖片後用 opencv 轉灰階並顯示: // React to a succesfull upload. fu->uploaded().connect(std::bind([ = ]() { out->setText("File upload is finished."); std::string spool = fu->spoolFileName(); cv::Mat img = cv::imread(spool); cvtColor(img, img, CV_BGR2GRAY); std::string savename; { // create save name static int count = 0; count++; if (count > 100) { count = 0; } char buffer[32]; itoa(count, buffer, 10); savename = "tmp" + std::string(buffer) + ".png"; } cv::imwrite(savename, img); Wt::WFileResource* imageFile = new Wt::WFileResource("image/png", savename); imageFile->suggestFileName(savename); Wt::WImage* image = new Wt::WImage(imageFile, "PNG version"); Wt::WFileResource* imageFileOri = new Wt::WFileResource("image/png", spool); imageFileOri->suggestFileName(savename); Wt::WImage* imageOri = new Wt::WImage(imageFileOri, "PNG version"); root()->addWidget(image); root()->addWidget(imageOri); })); 結果圖: http://i.imgur.com/tNKhnLz.png 再說一次! 大伙進攻囉! 用C++寫網頁 Server 根本無所不能! 快速整合各種硬體,單機介面程式轉網路介面程式, 相信想像力豐富的各位一定能善用這個工具的, 對了我不是工讀生哈哈,官網上寫商業授權要599美金。 我已經把 vs2012 x64 的 basic prebuilt 載點放出來了, 剩下的靠各位的努力了! 這個範例 code 要 c++11 才能編, 用 vs2012 以前的就自己努力吧! -- 【板主:memy/cat0405/icyfang】[LoL] ILP 5 : TPA vs. Fnatic 看板《LoL》 [←]離開 [→]閱讀 [Ctrl-P]發表文章 [d]刪除 [z]精華區 [i]看板資訊/設定 [h]說明 編號 日 期 作 者 文 章 標 題 人氣:8912 m爆12/01 Xargon □ [電競] IPL5 世界,總決賽。 Day2 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.175.35
Ebergies:沒仔細看不過這跟 cgi 的不同點在? 09/29 11:13
cgi & fcgi 是 server 把對應的 副檔名的檔案 傳給php之類的程式, php之類的再回傳 這些script處理完後的html檔 而這個是在C++中回傳HTML, 產生HTML的過程還可以單步執行查看, 裡面的事件也可以直接用Debuger除錯, 總之就是自己開web server自己處理, fcgi是別人開server有事才請你處理。 ※ 編輯: damody 來自: 140.118.175.35 (09/29 12:45)
Bencrie:那不就和 Qt 跟 GTK 的 HTML backend 一樣 09/29 13:15
沒錯,不過在 windows 下 gtk 的東西要編過太花時間, 懶的編了,qt 要跟 vs debug 整合很累,所以也懶。 我以前也以為qt很棒,直到我開始使用之後, 有幾個問題, 一.不用他的 qtcreator 就超難用 二.qmake 的設定不夠友善,不想vs全部的選項都有UI,你還要打script 三.library不提供 vs sln 檔,用他的 command 各種編譯問題要解 懶的解,他的 prebuilt 又不支援所有的 runtime 組態 四.沒有 auto link 機制他的 library 又多 總之我很懶,雖然在 linux 下我都是用 Qtcreator 寫程式 不過 windows 下我只愛用 visual studio。 ※ 編輯: damody 來自: 140.118.175.35 (09/29 13:34)
er230059:無聊插一下花 節果圖被圈起來的地方是因為頻率打錯嗎XD.. 09/29 15:58
damody:沒錯XD 09/29 20:09
Schottky:To一樓: 看起來主要是把HTML物件包裝成C++物件方便使用 09/30 09:02
Schottky:底層我猜和早期滿清末年用C/C++寫CGI那時候是一樣的 09/30 09:04
damody:打個廣告 http://ppt.cc/-Ud2 09/30 17:04
xvid:這連結老實說無關本版吧 10/01 01:29