發表文章

目前顯示的是 2014的文章

Visual Studio 環境設定

圖片
如果你的 Project 不是單一執行檔,而是搭配其它檔案才能正常執行,那麼通常會設定 Debug 與 Release 兩組環境;如果再搭配 Win32 與 x64 的話就有 4 組了。有點麻煩?對吧! 所以我希望把測試環境設定在一個固定的地方 (例如 Bin 目錄下),這樣相關的檔案只要放一組就可以了,然後利用 Post-Build Event 把編譯過的執行檔複製到這裡就可以測試了。

Ubuntu 11.04 的點點滴滴 [更新 14.10 Unity systray-whitelist 設定]

圖片
Ubuntu 11.04 採用新的 Unity 介面,當使用 Compiz 開啟 3D 桌面時有許多衝突,因此得將 Unity 關掉,亂按的結果就是掛點了,重開機後畫面只剩一張背景圖。 這個時候就需要用到 Alt + SysRq + K 登出回到 Display Manager (登入) 的畫面,選擇 " 傳統 Ubuntu 桌面 " 登入後,將 Compiz 與 ATi Driver 移除後,結果還是一樣的空白桌面。將重裝一次 Driver 與 Compiz,還是一樣,看來是新版的 Unity 桌面被我的 Compiz 關掉了。

如何在 Ubuntu 下認得 Windows 的電腦名稱

自從踏入 Ubuntu 的領域後,還是以 Windows 的習慣在使用,例如存取公司內部的 Web Server 時,還是習慣使用 電腦名稱 ,但此名稱在 Ubuntu 內是不認得的,只能以 IP 的方式存取。經過一番研究後,得出以下的結論與解決方法: Windows 是透過 WINS 服務將 NetBIOS 的電腦名稱轉換為 IP 的 (此功能與 DNS 相同,只是應用在不同的地方) 因此Ubuntu 要達到相同的功能,需執行以下的動作 sudo gedit /etc/ nsswitch.conf 將 host: ... dns 前面加上 wins,變成 host: ... wins dns 利用 Synaptic 安裝 winbind 即可 原文參考 HOWTO: Resolve Netbios hostname system-wide 2014/11/01 更新 此方法在 Ubuntu Studio 14.10 下竟然無效,無法從瀏覽器用 http://mymediacenter 連接到 NAS 伺服器 不過網路位置還是可以用 smb://mymediacenter  連線到資料夾,真是怪哉!

dynamic_cast 與 operator override 的應用

假設我有一個 Interface 如下 struct IProperty abstract { ~IProperty() { } virtual LPCTSTR toString() = 0; virtual BOOL operator==( const IProperty& other) const = 0; virtual BOOL operator!=( const IProperty& other) const = 0; };

DPI-Aware Application

圖片
一般 MFC Dialog base 的程式,如果使用者調整 Font size 則 Dialog 是會跟著 Font size 等比例放大的。

【已解決】CMyButton 反應太慢

CMy Button  是一個 Owner-Drawn 的 CButton,最近在使用時發現:如果連續按的話,有時會沒有反應。 原本懷疑:  利用 OnSetCursor  攔截 Mouse Over 的狀態,如果 Mouse 停留在 Button 的區域內,會一直產生重繪的動作 ( 取消後問題仍在,故排除 ) 按下 Button 後執行的程式佔用太多的時間,導致第二次 Button click 來不及處理 ( 但使用標準的 CButton 則沒有問題,故排除 )

在網路磁碟機設定 Visual Studio 2010 方案

圖片
由於網路磁碟機是屬於不信任的區域,因此在上面設定方案時會出現以下問題

【分享】如何顯示 Debug Message

圖片
通常在程式 Debug 的過程中會需要顯示一些訊息,最簡單的方式就是利用 MessageBox 來顯示,但缺點是會中斷程式的執行。 所以在 Console or Win32 的程式底下,我們可以直接利用 OutputDebugString (in windows.h) 將訊息輸出到 Visual Studio Output Window,例如     OutputDebugString(_T("Hello, OutputDebugString.\n")); 而 MFC 就更方便了,可以直接用 TRACE 巨集,還可以直接格式化字串,例如     TRACE(_T("Hello, TRACE No. %d.\n"), num);

記錄 PDF 最後讀取位置

圖片
最近在讀 PDF 電子書時,每次開啟都要從第一頁切換到最後讀取的頁數,如果不記得的話,甚至還要花不少時間來搜尋,於是上網找找看有沒有類似書籤的功能,原來就在 ...

如何防止 Windows 重新啟動或關機

一般 MFC Dialog base 的程式,我們會在 OnInitDialog() 做一些初始化的動作;然後在 PostNcDestroy() 做一些清除資源,或將資料寫回 HD 的動作。 但在 Windows 重新啟動或關機的情況下,是不會執行到 PostNcDestroy() 的,這時就會造成一些程式動作未完成。 Windows 有兩個 Message 跟重新啟動或關機有關: WM_QUERYENDSESSION  :詢問程式是否可關機,回傳 TRUE 表示可以,FALSE 則不行。此外 lParam 會指出一些程式關閉的情況,不過在 MFC OnQueryEndSession() 都省略掉了。 WM_ENDSESSION :程式執行完 WM_QUERYENDSESSION 後呼叫 (不論其傳回結果為 TRUE 或 FASE),其傳回結果會反應在 wParam;而 lParam 的內容同 WM_QUERYENDSESSION,不過在 MFC OnEndSession() 一樣被省略了。 所以這兩個地方都可以拿來做跟 PostNcDestroy() 一樣的工作,差別在 WM_QUERYENDSESSION 可以傳回 FALSE 來阻止 Windows 重新啟動或關機而己。

[已解決] side-by-side error

圖片
好久沒有寫心得了,最近寫程式拿到另一個平台執行時,發生以下問題 原因是我的程式需要 MFC DLL,Debug version 使用 Share library,而新的平台並未安裝對應的 DLL,導至程式執行時找不到,所以就產生問題了 另外 Release version 使用 Static library,內建在程式中,所以就沒問題 而開發平台有安裝對應的 DLL,所以總是看不到問題,下次如果要部署 Share library 版本,記得在安裝程式中安裝對應的 DLL 版本。