본문 바로가기

Dev::DotNet

(54)
WPF 에서 DoEvents VB 도 Winform 도 이벤트를 일괄 처리하는 DoEvents 라는 걸 지원한다. WPF 에서는 Dispatcher 에서 진행되지 않은 UI 작업을 일괄 처리함으로써 비슷한 효과를 낼 수 있다. public static void DoEvents() { if (System.Windows.Application.Current != null) { // WPF System.Windows.Application.Current.Dispatcher.Invoke ( System.Windows.Threading.DispatcherPriority.Background, new Action(delegate { }) ); } else { // WinForm System.Windows.Forms.Application.DoEven..
DLL 레지스트리 등록 API API 로 DLL 등록 12345678910111213141516171819202122232425262728293031323334353637using System.Runtime.InteropServices; ... [UnmanagedFunctionPointer(CallingConvention.Cdecl)]private delegate void _DLLPROC(); [DllImport("kernel32.dll", EntryPoint = "LoadLibrary")]private extern static int LoadLibrary(string librayName); [DllImport("kernel32.dll", EntryPoint = "GetProcAddress", CharSet = CharSet.Ansi..
WPF Visual Tree or Logical Tree 순회 WPF 에서는 Logical Tree 와 Visual Tree 가 있다. 자세한 개념은 MSDN 이 가장 잘 설명해 놓았다.(http://msdn.microsoft.com/ko-kr/library/ms753391.aspx) 쉽게 이야기 하면어떤 "UI요소" 가 구성된 하위의 구조를 이야기 한다. 하나의 UI요소 는 다른 여러 UI요소들로 구성되어 있고UI요소의 Template 안에는 이 UI요소 를 표현하는 여러 UI요소 가 들어있다. TextBox 가 하나 있다면 TextBox 의 Template 에는 여러 UI요소들이 TextBox 의 모양을 구성하고 있다. Template 은 WPF 의 가장 기본적인 내용이다. 이런 윈도우를 구성해보았다. 이런 윈도우에 포함된 UI요소들을 트리로 나열한 것이 Log..
들여쓰기를 쉽게 - Indent Guides (VS확장) 들여쓰기는 대부분의 개발자들에게 필수사항이나 다름없다. Visual Studio 에서 들려쓰기를 확실하게 보여주는 확장 프로그램인 "Indent Guides" 가 있다. > Visual Studio 확장 프로그램 설치 Indent Guides 를 설치하면 들여쓰기 에 대한 가이드 라인이 표시되고 XAML 에서도 동일하게 표시된다. 들여쓰기에 좀 민감한 사람이라면 은근히 맘에 들 수 도있고아니면 화면이 번잡해졌다고 느껴서 굉장히 꺼려할 수 도 있을거 같다.
NetAdvantage XamDockManager 의 Splitter 고정 Infragistics NetAdvantage 의 DockManager 로 Layout 구성시 각 Pane 사이에 Splitter 로 사이즈 조절이 가능하다. 하지만 사이즈 조절이 안되게 고정하고 싶을때는 DockedPaneSplitter 을 비활성화 해주면 된다. xmlns:igDock=http://infragistics.com/DockManager DockManager 의 하위 아이템인 ContentPane 이나 TabGroupPane 등에 너비나 높이를 지정해줘서 될 수도 있겠지만 그 뒤에는 resize 에 따른 변경이 되지 않기 때문에 DockedPaneSplitter 을 비활성화 해주는 것이 더 깔끔한 방법인 거 같다.
TabControl - Button / Tab Move TabControl 의 각 TabPage 에 버튼이 필요할 때가 있다. 각 TabPage 에 버튼을 넣을려면 TabControl 의 OnDrawItem 메소드를 override 하여 일일이 헤더 문자열 하고 버튼을 위치 간격 다 계산해서 우리의 Graphics g 로 다 그려줘야 한다. 그리고 찾아보면 은근 소스도 쉽게 찾을 수 있다. 하지만 만약 TabPage 마다 버튼 갯수도 다르고 버튼마다 아이콘도 맘대로 넣고 헤더 문자열도 변경할 수 있고 덤으로 Drag&Drop 으로 순서까지 변경하게 해달라고 하면 약간 골치 아퍼진다. 그래서 이 소스 저 소스를 버무려봤다. 우선 쉽게 버튼에 대한 정보를 저장하고 넘길 때 사용할 아이가 필요하다. using System.Drawing; public class B..
API 쉽게 찾기 - PInvoke.Net (VS확장) Windows Application 을 개발을 하다보면 어쩔수 없이 WinAPI 를 써야 할 경우가 많다. 그럼 보통 API 에 대한 정의나 사용하는 상수, 구조체에 대해서 인터넷에서 검색해서 붙여넣는 경우가 대부분이였다. 시간도 오래걸리고 사용 예시도 이것저것 찾아서 봐야하고....약간 번거로웠다. 하지만 Visual Studio 에서 확장 프로그램으로 "PInvoke.Net" 이라는 것을 제공한다. > Visual Studio 확장 프로그램 설치 PInvoke.Net 을 설치하면 VS 메뉴에 해당 메뉴가 추가되면 "Insert PInvoke Signatures..." 를 클릭하면 해당 화면이 나오고 원하는 API 를 검색할 수 있다.(유용한 Memory Profiler 를 만든 redgate사 가 만..
Visual Studio 확장 프로그램 설치 Visual Studio 에서는 기본 기능외에 여러가지 기능을 확장할 수 있는 확장 프로그램을 제공한다. "도구" - "확장 및 업데이트" 에 들어가면 해당 팝업이 뜨고 현재 VS 에 설치되고 업데이트가 필요한 확장 프로그램 의 목록과 다른 확장 프로그램을 검색해서 다운받아 설치 할 수있는 온라인 메뉴가 있다. 온라인 을 선택하면 설치할 수 있는 여러 확장 프로그램이 나오는데 우측 상단에서 검색할 수 있다. 현재 상당히 많은 확장 프로그램이 제공되며 기호에 맞게 설치해서 쓰면 보다 편하게 개발할 수 있다.