今天在測試加入/刪除call back func的時候用到
HookHandlerDelegate = new MIL_GRA_HOOK_FUNCTION_PTR(drawRenewHook);
MgraHookFunction(graphicListId, MIL.M_GRAPHIC_LIST_MODIFIED, HookHandlerDelegate , M_NULL);
vs
MIL.MgraHookFunction(graphicListId, MIL.M_GRAPHIC_LIST_MODIFIED, drawRenewHook, M_NULL);
兩個都可以用,but下面那種方式會有無法取消hook的問題
2016年7月27日 星期三
2016年7月22日 星期五
將object的properties/fields取出
今天想寫一個自動把所有object(已實體化 instanced)中的member抽取出來的功能。抽取的目的是要將object的members全部放入一個List中,其他東西呼叫的時候可以直接呼叫List就好。但在coding的時候又可以有class memeber的防呆特性。
C#利用Type建立物件
BaseClass bd = new DClass();
BaseClass newB = (BaseClass)System.Activator.CreateInstance(bd.GetType());
這時候bd.GetType()會得到DClass
BaseClass newB = (BaseClass)System.Activator.CreateInstance(bd.GetType());
這時候bd.GetType()會得到DClass
2016年7月21日 星期四
用enum value作為array index in C#
為了免code看不懂,可以用enum去指定array的index
ex:
cars[0] = .....
-> cars[(int)carNames.MrsOliver] = ....
好處是在遙遠的另一邊不用去猜0號車到底是MrsOliver還是MrsMarry
範例:
Schedule[] schedules = new int[Enum.GetNames(typeof(WeekDay)).Length];
enum WeekDay
{
sun = 0;
mon = 1;
tue = 2;
...
}
schedules[(int)weekDay.sun] = ....
當然也可以建立個key是enum type的 dictionary
Dictionary<WeekDay, Schedule> schedules = new Dictionary<WeekDay, Schedule>();
就可以直接存取
schedules[weekDay.sun] = ....
ex:
cars[0] = .....
-> cars[(int)carNames.MrsOliver] = ....
好處是在遙遠的另一邊不用去猜0號車到底是MrsOliver還是MrsMarry
範例:
Schedule[] schedules = new int[Enum.GetNames(typeof(WeekDay)).Length];
enum WeekDay
{
sun = 0;
mon = 1;
tue = 2;
...
}
schedules[(int)weekDay.sun] = ....
當然也可以建立個key是enum type的 dictionary
Dictionary<WeekDay, Schedule> schedules = new Dictionary<WeekDay, Schedule>();
就可以直接存取
schedules[weekDay.sun] = ....
2016年7月20日 星期三
news in C#6.0 CS 6.0新增功能
What's new in C# 6.0
觀看筆記
沒啥大改,有一些可以讓程式碼乾淨點的小東西
auto properties, static members, String interpolation, Expression bodied methods, Index initializer, Null-conditional operators, The nameof operator, Exception filters
觀看筆記
沒啥大改,有一些可以讓程式碼乾淨點的小東西
auto properties, static members, String interpolation, Expression bodied methods, Index initializer, Null-conditional operators, The nameof operator, Exception filters
2016年7月19日 星期二
輕裝課筆記
帶面鏡
頭往前傾,面朝下,將頭髮撥開。先將面鏡放到臉上再拉上頭帶。完成後以食指檢查頭髮有無夾入面鏡呼吸管爆吐式排水
以嘴唇用力包覆呼吸管,不是用牙齒咬
使用呼吸管需先執行爆吐式排水
面鏡排水
壓面鏡上緣,頭往後仰,以鼻吐氣踢蛙鞋
台灣多岩岸,常用無後跟式蛙鞋配沙灘鞋,較少使用套腳式蛙鞋膝蓋不用力,用大腿身體的力量
立泳
慢慢踢即可浮起
2016年7月13日 星期三
pointer in c#
在manage code中使用pointer的方法
這裡會用到
System.Runtime.InteropServices.GCHandle類別,提供從unmanaged memory中存取manage object的方式
使用命名空間
using System.Runtime.InteropServices;
這裡會用到
System.Runtime.InteropServices.GCHandle類別,提供從unmanaged memory中存取manage object的方式
使用命名空間
using System.Runtime.InteropServices;
sofware list
GIMP: image processing
VLC player: movie
thunderbird: mail
autohotkey: daily automation
greenShot: print screen
Libre office: office
notepad++ : doc view
VLC player: movie
thunderbird: mail
autohotkey: daily automation
greenShot: print screen
Libre office: office
notepad++ : doc view
2016年7月12日 星期二
graphic list index & label
在mil的grapic list中每個graphic都有他的label跟index
兩個都是系統指定無法手動更改的
(見MgraInquireList中的M_LABEL_VALUE與M_INDEX_VALUE)
but
index會因為graphic的刪除改變但是label卻是不變的
兩個都是系統指定無法手動更改的
(見MgraInquireList中的M_LABEL_VALUE與M_INDEX_VALUE)
but
index會因為graphic的刪除改變但是label卻是不變的
2016年7月11日 星期一
2016年7月10日 星期日
摺疊獨木舟
今天在朋友臉書上看到有人玩一種很酷的摺紙獨木舟,影片是玩獨木舟的人划到外面然後船進水,他又沒穿救生衣差點GG。
不過看了這個影片也驗證了原廠說船不會沉這件事"Oru Kayaks are naturally buoyant and won’t sink even when submerged"。但如果深入險境,船不沉整個漂走或被大浪打應該也是沒救@@
2016年7月7日 星期四
台美版First WPF Desktop Application差異
最近開始研究wpf,先來個wpf的hello world
Walkthrough: My First WPF Desktop Application
一開始看msdn,應該是因為地區的關係,它會自動引導到台灣網頁
但是因為他的範例一直不能run完,又找不到可以下載的位置
誤打誤撞發現了美版msdn
本來以為美版msdn跟台版msdn只是外觀上的不同..
沒想到台版的msdn裡面竟然埋了bug...難怪不能run
至於為什麼會這樣呢....實在令人費解
btw...這個first application實在有夠難懂
Connecting to Data中2.的地方
美版msdn code(直接貼上)
Walkthrough: My First WPF Desktop Application
一開始看msdn,應該是因為地區的關係,它會自動引導到台灣網頁
但是因為他的範例一直不能run完,又找不到可以下載的位置
誤打誤撞發現了美版msdn
本來以為美版msdn跟台版msdn只是外觀上的不同..
沒想到台版的msdn裡面竟然埋了bug...難怪不能run
至於為什麼會這樣呢....實在令人費解
btw...這個first application實在有夠難懂
Connecting to Data中2.的地方
美版msdn code(直接貼上)
<Grid.Resources> <!-- Expense Report Data --> <XmlDataProvider x:Key="ExpenseDataSource" XPath="Expenses"> <x:XData> <Expenses xmlns=""> <Person Name="Mike" Department="Legal"> <Expense ExpenseType="Lunch" ExpenseAmount="50" /> <Expense ExpenseType="Transportation" ExpenseAmount="50" /> </Person> <Person Name="Lisa" Department="Marketing"> <Expense ExpenseType="Document printing" ExpenseAmount="50"/> <Expense ExpenseType="Gift" ExpenseAmount="125" /> </Person> <Person Name="John" Department="Engineering"> <Expense ExpenseType="Magazine subscription" ExpenseAmount="50"/> <Expense ExpenseType="New machine" ExpenseAmount="600" /> <Expense ExpenseType="Software" ExpenseAmount="500" /> </Person> <Person Name="Mary" Department="Finance"> <Expense ExpenseType="Dinner" ExpenseAmount="100" /> </Person> </Expenses> </x:XData> </XmlDataProvider> </Grid.Resources> |
台灣英文版的msdn code(本來都沒換行...用notepad++整理了一下)
<Grid.Resources>
<!-- Expense Report Data -->
<XmlDataProvider x:Key="ExpenseDataSource" XPath="Expenses">
<x:XData>
<Expenses>
<Person Name="Mike" Department="Legal">
<Expense ExpenseType="Lunch" ExpenseAmount="50" />
<Expense ExpenseType="Transportation" ExpenseAmount="50" />
</Person>
<Person Name="Lisa" Department="Marketing">
<Expense ExpenseType="Document printing" ExpenseAmount="50"/>
<Expense ExpenseType="Gift" ExpenseAmount="125" />
</Person>
<Person Name="John" Department="Engineering">
<Expense ExpenseType="Magazine subscription" ExpenseAmount="50"/>
<Expense ExpenseType="New machine" ExpenseAmount="600" />
<Expense ExpenseType="Software" ExpenseAmount="500" />
</Person>
<Person Name="Mary" Department="Finance">
<Expense ExpenseType="Dinner" ExpenseAmount="100" />
</Person>
</Expenses>
</x:XData>
</XmlDataProvider>
</Grid.Resources>
2016年7月6日 星期三
2016年7月5日 星期二
ahk練習:task bar數字顯示
會有這個程式是為了配合好用的win快捷鍵win+{數字}
這個快捷鍵可以開啟數字所對應到的taskbar item
以上圖來說,win+1開啟chrome, win+2開啟evernote
但是如果使用習慣不好一次開了好幾個程式可能就不大好找了
ps. 同場加映熱鍵win+T可以輪流切換taskbar上的程式
win+shift+T可以逆向切換
2016年7月4日 星期一
滑鼠輔助器 mouseAux
不知道是不是因為我的滑鼠太爛,覺得滑鼠按鍵不是很好按
所以用ahk寫了一個程式可以用鍵盤的右Alt,Ctrl,Shift取代滑鼠的左鍵,左鍵兩下,右鍵
另外還順便測試了尋找滑鼠功能(把滑鼠移動到螢幕中心),對於螢幕很大或很多的人可能不錯用
所以用ahk寫了一個程式可以用鍵盤的右Alt,Ctrl,Shift取代滑鼠的左鍵,左鍵兩下,右鍵
另外還順便測試了尋找滑鼠功能(把滑鼠移動到螢幕中心),對於螢幕很大或很多的人可能不錯用
windows.h in VC2005
VC2005要compile需要另外安裝平台開發套件才有windows.h可以用。如果在編譯VC2005專案時出現找不到windows.h可以參考本篇的解決方式。
訂閱:
文章 (Atom)