목록프로그래밍/Windows (11)
개발자 블로그
Visual Studio 2015에서 발생한 문제고, C# winform을 사용해서 프로그래밍을 하는 과정에서 발생한 문제다.대충 검색해보니깐, Visual Studio가 아닌 다른 응용프로그램에서도 발생하는 문제인 것 같다. 화면을 캡쳐해두지 않아서 비슷한 이미지를 찾아서 첨부했다.다만 내 경우에는 "매개 변수 이름"이 "key"가 아니고, "context"였다. 전체 메시지는값은 null일 수 없습니다. 매개 변수 이름: context 내가 만든 프로그램에서 다국어 버전을 위해서 Language는 한국어와 영어 이렇게 두 개를 지원하는데, Language 항목을 "영어"로 변경한 다음에 실행하려고 하면, 위에 첨부한 에러 메시지가 떴다. 재미있는건 Localizable 항목을 False로 변경한다음에..
일단 "FirewallAPI.dll" 파일을 참조로 추가해 줘야 된다. "FirewallAPI.dll" 파일은 "C:\Windows\System32" 폴더 밑에서 찾을 수 있다. 일단 FirewallManager 관련 클래스 using NetFwTypeLib; using System; namespace Test.Utils { class FirewallAppInfo { public bool mListAdded; // 방화벽 앱 목록에 추가되어있는지 여부 public bool mEnabled; // 방화벽 앱 목록에 '허용'으로 되어있는지 여부 } class MyFirewallManager { private const string CLSID_FIREWALL_MANAGER = "{304CE942-6E39-40..
한참을 삽질해서.. 혹시나 다른 누군가에게 도움이 싶어서 남기는 글.개발환경은 - OS : Windows10 64bit - IDE : Visual Studio 2015 Community - 윈폼, C#그동안 고정된 크기의 아이콘만 사용하다가 Multi-size 아이콘을 한 번 만들어봤다. (Multi-size 아이콘 변환 사이트 ☞ http://icoconvert.com/)뭐 이미 알고 있겠지만 작업표시줄에 보이는 아이콘은 Form의 속성에서 변경하는거고, 생성되는 .exe 파일의 아이콘은 프로젝트의 속성 페이지에서 변경해줘야 된다. 아이콘 디자인은 변경없고, .exe파일의 아이콘만 여러 해상도를 지원하는 Multi-size 아이콘으로 바꾼거라서 프로젝트의 속성페이지에서 아이콘을 변경했다. 그리고 다시 ..
콤보박스 선택된 인덱스의 변경이벤트를 위해서 SelectedIndexChanged 이벤트를 구현한다. 이 경우 소스코드를 통한 변경에도 SelectedIndexChanged 이벤트가 호출된다.경우에 따라 프로그램 코드를 통한 콤보박스 선택인덱스를 변경하는 경우에는 이벤트를 타지 않기를 원하는 경우가 있다. 아래 설명하는 내용은 사용자가 직접 콤보박스의 인덱스는 변경하는 경우에만 이벤트를 타도록 하는 방법이다. 1. Focused 프로퍼티를 이용하는 방법Focused 프로퍼티는 해당 컨트롤에 포커스가 있는지 여부를 조사한다. 사용자가 조작하는 경우에는 해당 컨트롤이 포커스를 받고있기 때문에 true가 된다. 이를 이용하는 코드는 아래와 같다. private void comboBox_name_Selected..
프로그램을 좀 더 이쁘게 꾸미고 싶어서 텍스트박스에 배경이미지를 넣고 싶었는데, C#의 텍스트박스는 기본적으로 배경이미지(Background Image)를 지원하지 않는다. 구글링을 통해서 몇 가지 방법을 찾았는데 딱히 적당한 방법이 없어서 일단은 배경이미지 없이 개발하기로 마음먹었다. 추후 다시한번 검토를 해본 뒤 적용할 예정이다.나중에 다시 구글링 하는 수고를 덜기위해서 찾아놓은 방법들을 정리해본다. 다만, 사전조사 차원에서 찾아본 것이라서 내용이 약간(?) 부실 할 수 있다. 추가적인 정보가 필요한 경우에는 링크를 참조하거나 관련 키워드로 검색해보면 될 것 같다. 1. Textbox 상속을 통한 paint 이벤트 오버라이드 TextBox를 상속받아서 새로운 TextBox를 만드는 방법. OnPain..
bson - http://www.mongodb.org/downloads Copyright ⓒ 2015 MongoDB, Inc. Apache License 2.0 > Binary JSON, JSON 문서를 바이너리로 인코딩한 포맷, 몽고DB에서 사용 Code Project - LiteZip and LiteUnzip - http://www.codeproject.com/KB/library/LiteZip.aspx Copyright ⓒ 1995-2012 Jean-loup Gailly and Mark Adler, Lucian Wischik, Jeff Glatt GNU Lesser General Public License v3.0 only > zip 파일 압축 및 해제 GSM Codec 06.10 - http://k..
이미지 저작 툴.. 이라는 용어가 맞는지는 잘 모르겠는데,, 일단 개발한 프로그램은 텍스트를 입력하고, 사진의 경로를 입력하면 최종적으로 입력한 글과 사진을 조합해서 하나의 이미지 파일로 만들어주는 그런 프로그램이다.뭐,, 프로그램도 같이 공개하고 싶은데,, 공개할정도로 완성도 있게 개발도 안되었고,,(디자인 작업이 너무 크다,,ㅠㅠ) 공개할만큼 범용적으로 쓸 수 있는 그런 프로그램도 아니라서,,혹시 나중에 필요해지면 그 때 조금 다듬어서 공개를 해볼까 싶다.아래 링크는 개발하면서 참고했던 사이트들이다. http://infodbbase.tistory.com/109 PictureBox 컨트롤의 이미지를 파일로 저장 https://msdn.microsoft.com/ko-kr/library/baw6k39s(v..
C#에서 윈폼 프로그래밍에서..안내메시지 같은 문자열을 소스에 직접 넣은 것 보다 리소스 파일(Resources.resx)을 이용하면 개발할 때는 조금 번거로울지 몰라도 나중에 수정하거나 유지보수 할 때 매우 편하다. 한 줄 짜리 메시지가 아니라 여러줄로 구성 된 문자열의 경우, 개행문자는 Shift + 엔터로 넣어주면 된다. (소스에 넣을 때 처럼 \n 문자를 이용하지 않는다.)참고로 내가 사용하는 Visual Studio 버전은 2015 커뮤니티 에디션.
C# Winform의 FormBorderStyle을 None으로 설정한 경우(또는 CreateParams를 통해서 WS_CAPTION 스타일 속성을 제거한 경우) 창을 최대화하게 되면 작업표시줄까지 덮어버리는 문제가 생긴다. 최대화 버튼을 클릭했을 때, 아래 코드를 사용해서 창을 최대화 시키면 이러한 문제가 발생하는데 Form.WindowState = FormWindowState.Maximized; 대략 두 가지 해결 방법이있다. 1. 직접 사이즈를 설정 말 그대로 폼의 사이즈를 직접 입력한다. 시스템속성을 통해서 WorkingArea를 조회 한 뒤에 해당 크기로 폼의 크기를 설정한다. 예제 코드는 아래 링크를 참조. http://www.devpia.com/MAEUL/Contents/Detail.aspx..
C# 윈폼 프로그래밍에서 사용자가 지정한 마지막 창 크기 및 위치 같은 정보를 저장하기 위해서 간단하게 ini 파일을 사용하기로 결정했다. winapi에는 이러한 기능을 하는 간단한 api가 있지만 C#에서 기본으로 제공하는 클래스에는 해당 기능을 하는 api가 없다. 하지만 해당 winapi를 import해서 사용할 수 있다. ※ 만약 신규로 프로젝트를 만드는 것이라면, Settings를 활용하자. 매우 편리하게 각종 설정항목을 저장할 수 있다. 사용방법도 정말 간편하다. 아래 유튜브 동영상 한 번 보면 바로 따라서 사용할 수 있다. ini 대신 아래 방법을 사용할 것을 적극 권장한다. 아래 링크에서 해당 api를 import해서 사용하는 클래스 예제를 확인할 수 있다. http://kindtis.ti..
개발환경을 32bit WindowsXP에서 64bit Windows7으로 넘어오고 난 뒤, 레지스트리 관련해서 한참을 헤맸던 적이 있다. 분명 HKLM\SOFTWARE\(키값) 위치에 있어야 할 레지스트리값들이 전혀 보이지 않는 것이었다.그런데 놀랍게도 프로그램은 내 의도대로 정상적으로 작동하고 있었다.. 하.. 멘붕.. 이게 어떻게 된 일인가 했는데.. 알고보니 64bit OS에서 32bit 어플리케이션을 동작시키게 되면 레지스트리 읽고/저장하는 위치를 OS에서 리다이렉션 시켜버린다. OS가 알아서 해주는 부분이기 때문에 사용자나 개발자 입장에서 따로 조치를 해줘야 되는 부분은 아니다. (뭐 경우에 따라서는 문제가 생기기도 할 것 같다.)리다이렉션 되는 위치는 HKLM\SOFTWARE\Wow6432No..