如果只想做出簡單的 PAN 功能,可透過接收 WM_TABLET_FLICK 訊息來達成,
其提供了八個方向,但在 Win8 上好像收不到這個訊息。
另外的替代方案是,在 Win7 以上的作業系統,我們可以透過接受 WM_GESTURE 來實作。
在使用前先透過 WM_GESTURENOTIFY 和 SetGestureConfig() 設定我們要或不要接收
哪些手勢。假如設定好只接受 PAN 的手勢後,即可在 WM_GESTURE 用 GetGestureInfo()
攔到 GESTUREINFO.dwID = GID_PAN 的資訊。
另外由 GESTUREINFO.dwFlags = GF_BEGIN/GF_INERTIA/GF_END 來分析起始點、慣性點和
終點。要注意的是,除非有明確的 PAN 動作(手指離開時的點需停留得夠久),否則
GF_BEGIN/GF_END 並不會成對出現,而會出現 GF_INERTIA 的慣性點。
GF_INERTIA 是用來實作像是拖曳卷軸時手已經放開的滑動效果。
2012年10月31日 星期三
2012年10月24日 星期三
改變 TextOut 時的字型或大小
我們可以利用 CreateFont() 和 CreateFontIndirect() 來產生 HFONT 物件。
hFont =
CreateFont(48,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLIN
E_PRECIS, CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY,
VARIABLE_PITCH,TEXT("Impact"));
然後再將此字型物件置換到 DC 上即可。
SelectObject(hDC, hFont);
TextOut(hDC, 0, 0, "Hello", lstrlen("Hello"));
Ref: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183499(v=vs.85).aspx
hFont =
CreateFont(48,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLIN
E_PRECIS, CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY,
VARIABLE_PITCH,TEXT("Impact"));
然後再將此字型物件置換到 DC 上即可。
SelectObject(hDC, hFont);
TextOut(hDC, 0, 0, "Hello", lstrlen("Hello"));
Ref: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183499(v=vs.85).aspx
畫出只有邊框的透明 Rectangle
我們只要在選擇筆刷時設 NULL_BRUSH 即可 :
SelectObject(hDC,GetStockObject(NULL_BRUSH));
Rectangle(hDC, 0, 0, 100, 100);
SelectObject(hDC,GetStockObject(NULL_BRUSH));
Rectangle(hDC, 0, 0, 100, 100);
[STL] 位移 List 的 Iterator
平常我們會使用 List 來記錄一些 data,例如:
list<int> mylist;
for (int i=0; i<10; i++) mylist.push_back (i*10);
並將 Iterator 指向開頭來走訪 data。
list<int>::iterator it = mylist.begin();
想要取得下一個元素時,可以使用 *it++ 前進一步。
那想要取得第 N 個元素呢?
呼叫 *it++ N 次嗎?
於是我們有了 advance 函式幫我們快速的移動到第 N 個元素:
advance (it, N-1);
2012年10月21日 星期日
[Windows] 開機時讓 Num Lock 鍵預設為開啟
Windows 開機時 Num Lock 鍵預設是關的,想要打開可以透過 Regedit.exe 來達成。
找到 HKEY_USERS\.DEFAULT\Control Panel\Keyboard\InitialKeyboardIndicators,
把值改為 2 即開啟,0 為關閉。
找到 HKEY_USERS\.DEFAULT\Control Panel\Keyboard\InitialKeyboardIndicators,
把值改為 2 即開啟,0 為關閉。
2012年8月22日 星期三
程式相容性助理
在 Win7 或 Win8 上常常可以看到一些程式直行或關閉時,跳出程式相容性助理
(Program Compatibility Assistant) 的視窗,跳出的原因有很多種可以參考這篇,
http://msdn.microsoft.com/library/bb756937.aspx。若想透過程式的方法強制把 PCA 關掉,
可以在開發程式時的 Manifest 檔加上一些屬性,詳細可參考:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd371711(v=vs.85).aspx 。
(Program Compatibility Assistant) 的視窗,跳出的原因有很多種可以參考這篇,
http://msdn.microsoft.com/library/bb756937.aspx。若想透過程式的方法強制把 PCA 關掉,
可以在開發程式時的 Manifest 檔加上一些屬性,詳細可參考:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd371711(v=vs.85).aspx 。
2012年8月13日 星期一
[Win8] 以檔案開啟...
在 Win8 裡第一次執行文件或檔案時,會跳出你要用哪種檔案來開啟的小視窗,此時該檔案右
側的文字所顯示的即是檔案的描述(File Description)。在用 Visual Studio 開發 Windows App 時,
可從 Resource View 裡,找到專案的 Version\VS_VERSION_INFO 資源檔去做更改。
同時,這個值會被 cache 在 :
Path: HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
Name: C:\Windows\system32\mspaint.exe.FriendlyAppName
Data: Paint
側的文字所顯示的即是檔案的描述(File Description)。在用 Visual Studio 開發 Windows App 時,
可從 Resource View 裡,找到專案的 Version\VS_VERSION_INFO 資源檔去做更改。
同時,這個值會被 cache 在 :
Path: HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
Name: C:\Windows\system32\mspaint.exe.FriendlyAppName
Data: Paint
訂閱:
意見 (Atom)
