본문 바로가기

분류 전체보기275

C# 구조체 바이너리 파일 읽기 C#에서 구조체 파일을 읽어 처리하는 간단한 예제이다. 구조체 바이너리 파일은 C++ MFC로 제작이 되어 있었다. C++ 구조체는 아래와 같다. typedef struct { TCHAR Name[20]; TCHAR ID[20]; TCHAR Passwd[20]; uint Grade; } stUserInfo; 위와 같은 구조체로 만들어지 바이너리 파일을 C#에서 읽어 클래스 리스트에 넣도록 처리 예정이다. C#에서는 아래와 같은 구조체가 C++ 구조체와 같은 모습니다. [Serializable] [StructLayout(LayoutKind.Sequential)] public struct UserInfo { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] pu.. 2022. 8. 10.
CScrollView를 이용한 Image Viewer 예제 JPG, BMP, PNG 등의 이미지 파일을 열어 스크롤이 가능한 화면에서 확대/축소를 하는 예제이다. CScrollView 클래스를 이용하면 Scroll을 계산하지 않아도 된다. 예제는 TabCtrl에 Tab을 5개 만들고 각 탭별로 이미지를 넣고 확대/축소 기능과 함께 이미지를 보는 간단한 프로그램이다. 이미지는 CImage 클래스를 이용해서 읽는다. Viewer 클래스에서 OnDraw()함수에서 확대/축소를 위한 StretchBlt 처리를 한다. CScrollView 클래스를 이용할 경우 OnInitialUpdate()함수에서 SetScrollSizes() 함수를 이용해서 크기를 초기화해야 한다. 그렇지 않으면 Scroll 처리를 위한 Size를 알수가 없어 에러가 발생한다. void ImageVi.. 2022. 7. 27.
CXTPPropertyPage OK 버튼 누르고 종료 여부 체크 방법 https://docs.microsoft.com/en-us/cpp/mfc/reference/cpropertypage-class?view=msvc-170 CPropertyPage Class Learn more about: CPropertyPage Class docs.microsoft.com MSDN을 참고하면 된다. 간단하게 설명하면 OK, Cancel 버튼을 누렀을 때 아래 함수가 각각 순서대로 호출이 된다. 먼저 OK버튼을 눌렀을 경우이다. int nCompare = 1; // The default MFC implementation of OnApply() would call OnOK(). BOOL CColorPage::OnApply() { if (nCompare == 2) return FALSE;//c.. 2022. 7. 15.
Codejock RibbonBar 예제 및 CXTPControlEdit spin message 예제는 Codejock 설치 경로에 있는 Samples\Ribbon\RibbonControls 프로젝트를 참고 하면 된다. Codejock RibbonBar에 Edit 컨트롤을 올려 놓고 spin 버튼을 추가해서 사용을 해봤다. CXPTControlEdit을 사용하고 RibbonBar에 추가하는 방법은 아래와 같다. CXTPRibbonGroup* pGroupSearch = pTabEdit->AddGroup(ID_GROUP1); CXTPControlEdit* pControlEdit = DYNAMIC_DOWNCAST( CXTPControlEdit, pGroupSearch->Add(xtpControlEdit, ID_EDIT1)); if (pControlEdit) { pControlEdit->SetEditTex.. 2022. 7. 15.
Telerik GridViewSpreadExport 이용 방법 Telerik 버전 2022.1.222.40를 사용하고 있다. RadGridView의 내용을 excel, csv 파일로 export 하는 기능을 제공한다고 예제에 있는데 참고 사이트와 같이 코드를 작성하면 참조를 추가하라는 dll이 없어서 당황을 했다. 추후 export 기능을 사용할 때 참고를 위해서 기록을 남긴다. https://docs.telerik.com/devtools/winforms/controls/gridview/exporting-data/export-to-csv Export to CSV - WinForms GridView Control | Telerik UI for WinForms Controls / GridView / Exporting Data This method offers excel.. 2022. 6. 27.
Telerik RadGridView drag and drop 할 때 row index 확인 방법 Telerik 예제를 보고 GridView의 Drag and drop 테스트 프로그램을 개발하는 중에 drop을 할 때 row index 찾는 방법을 알 수가 없어서 고생을 했다. 검색을 해 보다가 찾은 방법을 기록으로 남긴다. 나중에 또 이용을 할 때 도움이 되길 바라면서 말이다. drop 함수의 코드이다. private void gridPoint_ProcessDragDrop(object sender, RadDropEventArgs e) { SnapshotDragItem draggedSnapshot = e.DragInstance as SnapshotDragItem; if (draggedSnapshot == null) { return; } GridDataRowElement rowElement = drag.. 2022. 6. 27.
Telerik GridView Drag and Drop Example Telerik GridView를 사용해서 Drag and drop 기능을 사용할 때 아래 싸이트에 나오는 방식으로 잘 되지 않아서 git에 올라와 있는 예제 소스를 다운 받아 빌드를 해봤다. https://www.telerik.com/blogs/extending-radgridview-to-enable-row-drag-and-drop-functionality Extending RadGridView to Enable Row Drag and Drop Functional Learn how to extend the WinForms RadGridView control to give the users the ability to drag and drop full rows of data between grids. Dow.. 2022. 6. 3.
Telerik RadGrid Refresh, 동적으로 Binding data 변경 후 GridView Refresh Telerik의 RadGridView를 사용하고 있는데 DataSource로 바인딩한 정보를 동적으로 변경하면 화면에 바로 업데이트 되지 않는다. 가장 기본적인 방법은 DataSource = null로 초기화를 하고 다시 바인딩을 하는 것이다. 이렇게 하면 당연히 동적으로 변경된 데이터가 화면에 보일 것이다. 하지만 이렇게 하면 화면이 깜박거리거나 데이터가 많으면 표시되는 속도가 느린 문제가 있다. WPF나 Winform 모두 처리하는 방법은 같다. 검색을 해보니 아래와 같은 정보를 찾을 수 있었다. https://docs.telerik.com/devtools/winforms/controls/gridview/populating-with-data/reflecting-custom-object-changes-.. 2022. 6. 3.
C# winform 프로젝트에서 "디자이너 보기"가 사라지는 문제 해결 왜 "Form1.cs"에서 "디자이너 보기" 표시가 사라지는는 문제가 발생한 것인지 원인은 모르겠다. 하지만 해결 방법은 찾았다. 디자이너가 보이지 않는 경우의 비정상 프로젝트의 모습니다. Form1.cs를 선택해서 팝업 메뉴를 보면 아래와 같이 디자이너 보기 메뉴가 없는 것을 확인할 수 있다. 정상적인 프로젝트의 모습은 아래와 같다. 그리고 이때의 팝업 메뉴에는 디자이너 보기를 볼 수 있다. 그래서 프로젝트 파일을 열어 차이점을 확인해 보니 아래와 같이 차이가 존재한다. 비정상 Form1.cs 정상 Form Form1.cs 비정상(디자이너 보기가 사라진 경우)인 경우에는 SubType이 사라진 것을 확인 할 수 있다. 따라서 프로젝트 파일을 열어서 Form 추가하면 정상적으로 디자이너 보기 기능을 이용.. 2022. 5. 18.
LIST