public class PublicNM
{

     public const int WM_KEYDOWN = 0x0100;

    // FindWindow를 정적 메서드로 선언합니다.
    public static IntPtr FindWindow(string lpClassName, string lpWindowName)
    {
        // 실제 FindWindow 구현은 생략
        return IntPtr.Zero; 
    }
}

사용예)

         // 정적 메서드에 접근할 때는 클래스 이름을 사용합니다.
         IntPtr hWnd = PublicNM.FindWindow("ClassName", "WindowName");

        protected override bool ProcessCmdKey(ref Message message, Keys keyData)
        {
            switch (message.Msg)
            {
                case PublicNM.WM_KEYDOWN:
                    break;
                default:
                    break;
            }
            return base.ProcessCmdKey(ref message, keyData);
        }

증권정보,ㅡㅡ,ㅡㅡ packet send/recv in windows os

exture_send_basic.c
0.00MB
dirent.h
0.01MB
exture_recv_basic.c
0.00MB

 

 

c#/windows.pre.foundation/원리금균등상환.금리비교시.대출상환포함
c#/windows.pre.foundation/원리금균등상환.금리비교시.대출상환포함

Install Win.Form)



FiancialNM.msi
2.05MB


Install Win.Pre.Foundation)

FiancialCalc.msi
1.38MB



0. 메모장에서 코딩후 빌드 & 런

1. Win Form과 Win Presentaion Foundation과의 비교화면)

 

 


2. 대출상환정보가 없을경우)

3. 대출상환정보가 있을경우)

 

4. 대출상환정보가 있을경우>데이타선택시에, 해당월 일별 데이타 리스트출력

( ChatGPT )c# List 와 배열의 차이점

C#에서 List와 배열(Array)의 주요 차이점은 다음과 같습니다:

  1. 크기 조절 가능 여부:
    • 배열(Array): 배열은 선언된 크기를 초과하거나 축소할 수 없습니다. 한 번 생성되면 크기가 고정됩니다.
    • List: List는 동적으로 크기가 조절될 수 있습니다. 요소를 추가하거나 제거할 때 List 내부에서 자동으로 크기가 조절됩니다.
  2. 메서드와 기능:
    • 배열(Array): 배열은 .NET Framework에서 제공하는 여러 메서드와 기능이 있지만, 크기 조절이나 요소 추가/삭제에 제한이 있습니다. 예를 들어, Array 클래스는 Length 속성을 통해 배열의 길이를 확인할 수 있습니다.
    • List: List는 배열보다 다양한 메서드와 기능을 제공합니다. 예를 들어, 요소 추가/삭제를 위한 Add, Remove, Insert 메서드 등이 있습니다. 또한 LINQ 쿼리와 함께 사용할 수 있는 다양한 확장 메서드를 사용할 수 있습니다.
  3. 선언 및 초기화:
    • 배열(Array): 배열은 고정된 크기를 선언하고 초기화해야 합니다. 예를 들어, int[] numbers = new int[5];와 같이 선언하고 초기화합니다.
    • List: List는 크기를 선언하지 않고 생성할 수 있으며, 초기 요소를 포함할 수도 있습니다. 예를 들어, List<int> numbers = new List<int>();로 선언하고 초기화합니다.
  4. 타입 안정성:
    • 배열(Array): 배열은 특정 데이터 형식으로 타입 안전성을 보장합니다. 즉, 선언된 데이터 형식 이외의 데이터를 저장할 수 없습니다.
    • List: List는 제네릭 형식으로 제공되며, 특정 데이터 형식에 대한 타입 안정성을 보장합니다.

이러한 차이점으로 인해 상황에 따라 배열이나 List 중 하나를 선택하여 사용할 수 있습니다. 배열은 크기가 고정된 정적 데이터에 적합하고, List는 동적인 데이터 구조에 적합합니다.

ChatGPT)
C#에서 public string SpecificPay { get; set; }와 public string SpecificPay;의 차이는 다음과 같습니다:

1. public string SpecificPay { get; set; }

public string SpecificPay { get; set; }: 이것은 C#의 속성(Property)입니다. 속성은 클래스의 멤버로, 해당 속성에 대한 값을 캡슐화하고, 접근을 제어하며, 필요한 경우 추가 로직을 적용할 수 있습니다. 이 특정 속성은 읽기 및 쓰기가 가능합니다(getter와 setter 모두가 존재함).

2. public string SpecificPay;

public string SpecificPay;: 이것은 클래스의 필드(Field)입니다. 필드는 해당 클래스의 인스턴스마다 각각의 값을 저장합니다. 이것은 간단한 데이터 저장 용도로 사용되며, 특별한 접근 로직이나 제한이 없습니다. 직접적으로 필드에 접근하여 값을 설정하거나 가져올 수 있습니다.


따라서, 첫 번째 선언은 읽기 및 쓰기가 가능한 속성을 정의하고, 두 번째 선언은 클래스의 필드를 정의합니다.

 

 

TCP 증권데이타 수신및 송신의 원리를 위의 그림을 보면서 설명한다.

1. TCP증권데이타는 한국거래소에서 계약되어진 회원사에 일방적으로 전송한다.
2. 회원사는 A,B,C라고 3개로 예를 든다.
3. 회원사 A,B,C는 수신받는 엔진을 보일러로 표시하고 보일러로 설명해 본다.
4. 회원사는 A,B,C는 집의 규모가 틀리다. 물론 보일러도 처리용량에 차이가 있다. 좋은 보일러, 혹은 그외.
5. TCP증권데이타를 물로 예를들면, 물을 공급해서 A,B,C가 보일러로 처리하는 도중에 보일러에 문제가 생기면한국거래소에서는 물공급을 중단한다. 그리고 해당 회원사에 통보한다.
6. 계속 입수되는 물을 보일러에서 잘 처리되도록 회원사는 A,B,C는 보일러를 각각 잘 관리해야 한다.

Practice)
20,000 바이트를 보낸다면, 각각 회원사는 A,B,C는 할당되어진 버퍼만큼 받을수 있다.
A - 10,000 + 10,000 = 20,000 두번에 걸쳐서 받는다.
B - 5,000 + 5,000 + 5,000 + 5,000 = 20,000 네번에 걸쳐서 받는다.
C - 20,000 한번에 받는다.

20,000 바이트에는 보내는 데이타종류가 15개가 들어있다고 치자.(체결,호가등등)
A - 10,000 + 10,000 = 20,000 두번에 걸쳐서 받이서 데이타종류가 15개를 추출해야 한다.
B - 5,000 + 5,000 + 5,000 + 5,000 = 20,000 네번에 걸쳐서 받이서 데이타종류가 15개를 추출해야 한다.
C - 20,000 한번에 받이서 데이타종류가 15개를 추출해야 한다.

결국 회원사는 A,B,C는 관으로 표현하자면, 넓은 관을 통해서 받던지, 좁은 관을 통해서 받던지, 결국은 받아서 데이타종류가 15개를 추출해야 한다.

결과화면)


(CHAT.GPT)
WPF에서 메인 윈도우에서 클래스를 호출하고, 해당 클래스에서 다이얼로그를 메인 윈도우의 가운데에 위치하도록 호출하려면, 다음과 같은 절차를 따르면 됩니다.

  1. 메인 윈도우에서 클래스 호출
  2. 클래스에서 다이얼로그 호출 시 메인 윈도우를 기준으로 위치 설정



1. MainWindow.xaml.cs

메인 윈도우에서 클래스를 호출하는 버튼 클릭 이벤트를 설정합니다.

using System.Windows;

namespace WpfApp
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void OpenDialogFromClassButton_Click(object sender, RoutedEventArgs e)
        {
            DialogHelper helper = new DialogHelper();
            helper.ShowDialog(this);
        }
    }
}

2. DialogHelper.cs

다이얼로그를 표시할 클래스입니다.

using System.Windows;

namespace WpfApp
{
    public class DialogHelper
    {
        public void ShowDialog(Window owner)
        {
            DialogWindow dialog = new DialogWindow
            {
                Owner = owner,
                WindowStartupLocation = WindowStartupLocation.CenterOwner
            };
            dialog.ShowDialog();
        }
    }
}

3. DialogWindow.xaml

다이얼로그 윈도우의 XAML 파일입니다.

<Window x:Class="WpfApp.DialogWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DialogWindow"
        Height="200"
        Width="400">
    <Grid>
        <!-- 다이얼로그의 UI 요소들 -->
    </Grid>
</Window>

4. DialogWindow.xaml.cs

다이얼로그 윈도우의 코드 비하인드 파일입니다.

using System.Windows;

namespace WpfApp
{
    public partial class DialogWindow : Window
    {
        public DialogWindow()
        {
            InitializeComponent();
        }
    }
}

5. MainWindow.xaml

메인 윈도우의 XAML 파일에서 클래스를 호출하여 다이얼로그를 여는 버튼을 추가합니다.

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"
        Height="450"
        Width="800">
    <Grid>
        <Button Content="Open Dialog from Class" Click="OpenDialogFromClassButton_Click" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
</Window>

요약

이 구조에서는 DialogHelper 클래스가 메인 윈도우의 인스턴스를 인자로 받아 다이얼로그를 중앙에 위치하도록 설정합니다. 이렇게 하면 다이얼로그 윈도우가 항상 메인 윈도우의 중앙에 표시됩니다.






+ Recent posts