일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 배열
- VS ERROR
- 알고리즘
- 프로그래밍
- Tips프로그래밍강좌
- 함수
- Win32
- Kotlin
- Direct2D
- Desktop
- 리뷰
- 티스토리
- Tips강좌
- 지식나눔강좌
- c#
- c
- Javascript
- 포인터
- 연산자
- Visual Studio
- Windows
- CS
- Programming
- 김성엽
- tipssoft
- 백준
- 문법
- 이지스퍼블리싱
- doit코틀린프로그래밍
- c++
- Yesterday
- Today
- Total
목록전체 글 (383)
F.R.I.D.A.Y.
제한시간 내 순열 만들기 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 순열 자체를 구하는 속도는 빠르지만, 이를 하나씩 출력하는 과정에서 속도를 잡아먹는 것이 많기 때문에 stringstream에 출력할 문자열을 저장한 뒤, 최종에 한번 출력하도록 하여 속도 향상을 꾀함 #include #include #include using namespace std; int visited[9]; int permutationList[9]; stringstream ss; void bt(int maxValue, int..
C/C++로 작성한 Win32 프로그램의 exe 파일 아이콘 변경하기 리소스 파일 추가 아이콘 변경을 위해서는 리소스 파일을 추가 해야한다. 프로젝트에서 [새 항목 추가 - 리소스 - 리소스 파일]을 선택해 프로젝트에 추가한다. 리소스 뷰[# Ctrl + Shift + E]에서 리소스를 추가한다. 프로그램의 아이콘을 변경할 것이므로 아이콘을 추가한다. 가져오기를 통해, 원하는 아이콘을 별도로 추가할 수도 있다. 추가가 완료되면 세 번째 사진과 같이 IDI_ICON1 등의 추가된 아이콘이 발생함을 알 수 있다. 이제 솔루션 탐색기[# Ctrl + Alt + L]에서 Resource.rc의 코드 보기[# F7]를 통해 코드 편집을 한다. 코드 편집기를 열면 오른쪽 이미지와 같이 리소스 관련 내용이 소스코드 ..
C#에서 비클라이언트의 ownerdraw를 하려면WinApi가 필수일 듯. https://docs.microsoft.com/ko-kr/windows/win32/gdi/nonclient-area 비클라이언트 영역 - Win32 apps 시스템은 제목 표시줄, 메뉴 모음 또는 창 프레임과 같은 비클라이언트 영역의 일부를 업데이트해야 할 때마다 WM\_NCPAINT 메시지를 창으로 보냅니다. docs.microsoft.com protected override void WndProc(ref Message Msg) { Rectangle rect; switch (Msg.Msg) { case WinApi.Message.WM_NCACTIVE: case WinApi.Message.WM_NCPAINT: rect = new..
창을 빠르게 흔들면 다른 창이 최소화되는데, 이게 기능이라서 켜고 끄고 할 수 있다. [Win] + R 키로 실행 열기 gpedit.msc명령 입력으로 "로컬 그룹 정책 편집기" 열기[# 일부 지원하지 않는 Windows 에디션이 존재한다고 들었다.] 사용자 구성 - 관리 템플릿 - 바탕화면의 "Areo 흔들기 창 최소화 마우스 제스쳐 사용 안함을 사용으로 설정 구성되지 않음의 기본값은 제스처 사용이다.
Visual Studio에서 자주 사용하는 기능 중에 정의 피킹이라는 기능이 있는데, 코드에서 Alt + F12를 누르면 해당 코드의 선언 부분을 좁은 공간으로 볼수 있어서 자주 사용함. 이번에 컴퓨터를 새로 맞췄는데 오류가 나는지 아니면 cpu랑 호환이 안되는지 모르겠지만 Alt + F12를 이용한 정의피킹 단축이 안 먹어.. 각각 개별 입력으로는 잘 들어가는데, 왜 안되는지 모르겠네.. 키보드가 이상하나 싶어서 키 바인딩을 다른걸로 바꿔도 보고 했는데 안 먹음. 정의 피킹 단축키를 바꿔서 Ctrl 기반으로 하면 또 동작하고.. 무선 키보드 사용하는데, 전송 과정에서 문제 생기나 싶어서 노트북으로 확인해보면 Alt + F12로 정의피킹 열림. 예상가는 건 CPU 호환인데... 아니기만 바래야지 뭐.. ..
Visual Studio만큼 괜찮은 IDE가 없어서[# 진짜 다른 IDE로 못 넘어가겠다..] 리눅스 과제를 할 때도 종종 Visual Studio를 이용해서 코드를 쓰곤 한다. 기존 반反 오픈소스 진영의 대표격인 Microsoft에 새로운 CEO로 사티아 나델라가 취임하면서 그 행보가 바뀌었다. Windows PE 프로그램을 Linux에서 실행할 수 있도록 해주는 Wine의 개발에 직접적인 도움을 준다던지, Github를 인수해버린다던지.. 몇 해 전에는 .Net을 오픈소스로 풀어버렸던 적도 있다. WSL 설치하기 돌아와서, Windows에도 변화가 생겼다. Windows kernel 위에서 Linux 커널이 돌아가도록 업데이트가 이뤄졌다. 이름이 WSL[# Windows Subsystem for Li..
레지스트리 시작 프로그램에 관리자 권한 프로그램 등록 시 발생하는 문제 해결하기 시작 프로그램 Windows 시작 프로그램은 개발자 입장에서 상당히 매력적인 기능일 것이다. 내 프로그램이 OS 시작과 함께 돌아간다고? 사용하는 시간이 늘어나는 것이나 마찬가지니... 가장 간단한 등록 방법은 Startup 폴더에 해당 프로그램을 넣어두는 것이다. 바로가기도 아마 실행이 될것인데, 개발할 때는 주로 Startup 폴더에 넣는 것보다 선호되는 방법이 있으니, 아무래도 레지스트리 등록일 것이다. .Net 차원에서도 Reg Key에 접근/수정하는 기능을 제공하니 편하기도 편하고.. 그러나, 이러한 편의를 받는 프로그램은 일반 프로그램에 한정한다. 필요 권한이 requiredAdministrator 미만(asInv..
metroUI는 Microsoft에서 개발한 UI 프레임워크로, Windows 8부터 시작한 타일 디자인의 .NET 버전이라고 볼 수 있겠다. UI metroUI의 기본 구성은 아래와 같다. 각종 타일 버튼부터 과거부터 내려온 컨트롤의 외형을 모두 벗겨내고, 좀더 현대적인 디자인을 가지고 있다. 이중 궁금한 것은 이 UI가 어떤식으로 구성되어있느냐는 점이었다.[# 직접 컨트롤 디자인 하고 싶었으니까!] 하루 동안의 분석결과를 보자면, MetroForm은 Form의 상속체로서 FormBorderStyle을 None으로 두고, 상단 최대/최소 버튼 및 닫기 버튼을 포함한 모든 디자인을 Client 영역 안에 그려놓은 것이다. Caption의 처리 더 궁금한 부분은 Window의 이동 작업이었다. 대개 C# ..
C#에서 네이티브 코드인 WinAPI를 이용해 무언가를 작성하려 할 때, 꼭 주의해야 할 점이 있다. 관리되는 코드 C#은 C/C++처럼 기계어로 컴파일되는 것이 아닌 .NET 혹은 .Net Framework에서 작동하는 바이트코드, CRL(Common Runtime Language)로 변경된다. C/C++과 C#의 가장 큰 차이를 고르라면 아마도 메모리를 사용자(개발자)가 직접 관리하는가에 대한 여부일 것이다. 여태 알듯 C/C++은 개발자가 객체의 메모리 관리를 직접 해야 하는 것과 달리, C#의 경우 언어 사용자가 직접 메모리 관리를 할 필요가 없다. 내부적으로 GC(Garbage Collector)가 돌아가면서 사용되지 않는 메모리를 제거하는 방식으로 누수 메모리를 자동으로 잡는다. 이렇게 .NE..
C#에서 WinAPI로 뭔가를 하려고 했더니 보호된 메모리라고 예외를 뱉는다. 사용하려던 Windows API는 GetWindowText(HWND hWnd, LPSTR lpstring, int nMaxCount); 그래서 C# 코드는 이렇게 했었다. [DllImport("user32.dll", SetLastError = false)] public static extern int GetWindowText(IntPtr hWnd, out StringBuilder lpText, in int maxCount = 256); // ... StringBuilder windowTitle = new StringBuilder(256); wa.GetWindowText(hWnd, out windowTitle, windowTit..