c#

  • [프로그래밍] 완전하게 다른 뜻으로 쓰이는 subclass

    컴퓨터 프로그래밍에서 subclass는 명사와 동사 모두로 쓰인다. 말 그대로 상속 클래스를 뜻한다. derived class와 같은 용어다. base class를 상속하여 생긴 클래스다. 대표적인 예가 아래 코드에서 Form1이다. Instead of creating a partial class that is based on x:Class, the provided x:Class is created as an intermediate class, and then your provided derived class is expected to…

  • WinUi의 Window와 AppWindow의 차이

    WinUi는 복잡하다. 대신 강력하다. tv에 기능들이 많을수록 리모컨은 복잡해질 수밖에 없다. wpf까지는 유저 인터패이스를 백 엔드와 엄격하게 구별하지 않았지만 WinUi에서는 완전하게 나눈다. Window 클래스는 WinUi 자체를 위한 거로 애플리캐이션 수준이다. AppWindow 클래스는 os 수준에서 hwnd를 위한 거다. 전자가 위고 후자는 아래다. 예를 들어 윈도우즈가 아닌 윈도우 즉 윈도우즈 안에 생기는 창을 제어하기 위해서는 os 수준의…

  • WinUi로 퍼블리쉬하다 몸에 사리 생기겄다

    WinUi에는 package라는 개념이 있다. Features that depend on package identity include background tasks, push notifications, Windows 10 live tiles, custom context menu extensions, share targets, and other extensibility points.Package and deploy Windows apps overview 패키지로 만들어야 윈도우즈 10 이상 버전에서 가능한 기능들이 있다. 하지만 폴더로 배포해야 할 경우들도 있다. 이러면 위의 기능들을 포기해야 한다. 빌드와…

  • 이제는 .네트 아닌 윈도우즈 앱 sdk와 윈ui

    수 년 전까지 윈도우즈 프로그래밍을 한다고 하면 .네트나 c++을 한다는 뜻이었다. 이들로 디자인까지 했다. front end와 back end를 엄격하게 구분하지 않았다. Build native Windows desktop apps with the Windows App SDK and WinUI 3 — the recommended platform for new development using C#, C++, and XAML on Windows 10 and 11.Windows app development documentation windows…

  • c# wpf Application.MainWindow와 컨스트럭터의 작동 순서

    위 코드는 wpf에서 매인 윈도우의 핸들을 구한다. Application.Current.MainWindow와 this는 같으니 같은 핸들들을 출력한다. 핸들을 구하는 익스프레션과 관계 없는 Window1 Window1 = new();를 추가하면 엉뚱한 결과가 나온다. handle1이 0이다. 이 현상은 로그인 창을 만들 때 문제가 될 수 있다. 필드 초기화는 컨스트럭터 실행의 일부다. 매인 윈도우의 컨스트럭터가 시작하면 Window1 Window1 = new();가 작동하여 Window1의 인스턴스를 만든다….

  • .네트 윈도우즈 폼즈와 wpf의 윈도우즈 메시지 처리 성능 비교

    wpf가 윈도우즈 폼즈보다 좋다. 나중에 만든 거니 당연하다. 더 예쁘고 더 빠르다. 문제는 윈도우즈 메시지 처리 성능이다. 윈도우즈 메시지 시스템은 윈도우즈 컨트롤들의 핸들을 전제로 한다. 하지만 wpf는 핸들로 컨트롤들을 제어하지 않는다. 이런 차이 때문에 wpf에서 윈도우즈 메시지를 처리하려면 변칙을 써야 한다. 더 느릴 거라 예상하는 게 당연하다. 같은 기능의 애플리캐이션들을 만들어 하나의 컴퓨터에서 동시에 실행하여…

  • 컴퓨터 프로그래밍에서 동사 project의 뜻

    Projection refers to the operation of transforming an object into a new form that often consists only of those properties subsequently used.Projection operations (C#) 영한 사전들에서 동사 project의 뜻을 찾아 보면 대체로 투사한다는 뜻이다. 윅셔너리나 다른 영영 사전들에도 비슷하다. 하지만 컴퓨터 프로그래밍에서 project는 transform이라는 뜻이다. Projects each element of a sequence into a new formEnumerable.Select…

  • wpf로 윈도우즈 메시지 처리하기

    AddHook는 HwndSourceHook라는 델리개이트를 아규먼트로 받는다. 메떠드에 메떠드를 아규먼트로 전달할 때에는 메떠드 자체를 넘길 수 없고 델리개이트라는 레퍼런스 타입으로 넘겨야 한다. 메떠드는 밸류가 아니기 때문이다. Func와 Action도 모두 델리개이트다. Delegates are used to pass methods as arguments to other methods.Delegates (C# Programming Guide) AddHook가 HwndSourceHook라는 델리개이트를 콕 집어서 지정한 건 이게 갖는 패러미터들을 특정하기 위해서다. 따라서…

  • c# 문자열 포맷 N0과 #,###의 반올림 차이

    N은 standard numeric format string이다. On .NET Core 2.1 and later, the runtime selects the result with an even least significant digit (that is, using MidpointRounding.ToEven).Standard numeric format strings 은행원의 반올림 즉 짝수에 가깝게 올리거나 내린다. #은 custom numeric format string이다. The “##” format string causes the value to be rounded to the nearest digit…