- Timestamp:
- 04/03/09 14:24:41 (4 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/HighGUI/CvWindow.cs
r31346 r31851 19 19 private CvMouseCallbackHandler mouseCallback; 20 20 private Dictionary<string, CvTrackbar> trackbars; 21 private ScopedGCHandle callbackHandle; 21 22 22 23 #region 初期化と解放 … … 96 97 Windows.Add(name, this); 97 98 } 99 this.callbackHandle = null; 98 100 } 99 101 /// <summary> … … 132 134 Windows.Remove(name); 133 135 } 134 catch (Exception) { } 136 catch (Exception) { } 137 if (callbackHandle != null && callbackHandle.IsAllocated) 138 { 139 callbackHandle.Dispose(); 140 } 135 141 } 136 142 base.Dispose(); … … 184 190 get { return CvDll.cvGetWindowHandle(name); } 185 191 } 192 /// <summary> 193 /// マウスイベントが発生したときのイベントハンドラ 194 /// </summary> 195 internal CvMouseCallbackHandler MouseCallback 196 { 197 get { return mouseCallback; } 198 set 199 { 200 if (callbackHandle != null && callbackHandle.IsAllocated) 201 { 202 callbackHandle.Dispose(); 203 } 204 mouseCallback = value; 205 callbackHandle = new ScopedGCHandle(mouseCallback, GCHandleType.Normal); 206 } 207 } 186 208 /// <summary> 187 209 /// マウスイベントが発生したときのイベントハンドラ … … 189 211 public event CvMouseCallbackHandler OnMouseCallback{ 190 212 add{ 213 if (callbackHandle != null && callbackHandle.IsAllocated) 214 { 215 callbackHandle.Dispose(); 216 } 191 217 mouseCallback += value; 218 callbackHandle = new ScopedGCHandle(mouseCallback, GCHandleType.Normal); 192 219 CvDll.cvSetMouseCallback(name, mouseCallback); 193 220 } 194 221 remove{ 195 mouseCallback -= value; 222 if (callbackHandle != null && callbackHandle.IsAllocated) 223 { 224 callbackHandle.Dispose(); 225 } 226 mouseCallback -= value; 227 callbackHandle = new ScopedGCHandle(mouseCallback, GCHandleType.Normal); 196 228 CvDll.cvSetMouseCallback(name, mouseCallback); 197 229 } … … 317 349 } 318 350 } 351 352 /// <summary> 353 /// 指定した名前に対応するウィンドウを得る 354 /// </summary> 355 /// <param name="name"></param> 356 static public CvWindow GetWindowByName(string name) 357 { 358 if (string.IsNullOrEmpty(name)) 359 { 360 throw new ArgumentNullException("name"); 361 } 362 if (Windows.ContainsKey(name)) 363 { 364 return Windows[name]; 365 } 366 else 367 { 368 return null; 369 } 370 } 319 371 #endregion 320 372 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)