본문 바로가기

windows34

WSL에서 USB장치 연결하기(usbipd-win) Windows에 WSL기능이 추가되면서 Linux를 윈도우에서 사용할 수 있게 되었다. 그런데 WSL이 완전한 Linux는 아니기 때문에 여러가지 제약사항이 존재하는데 바로 USB 장치를 연결하는 것이다. 하지만 이것도 찾아보니 가능한 작업이었다. 이번 포스트에서는 WSL에 USB장치를 연결하는 법을 알아보자. WSL에서 USB장치를 연결하는 것은 오픈소스 프로젝트인 usbipd-win이라는 프로젝트로 가능하다. 0. 환경 WSL에서 USB장치를 연결하기 위해서는 다음과 같은 요구사항이 있따. Windows 11 이상(혹은 WSL2가 활성화된 Windows10) x64/x86 CPU(ARM은 지원하지 않아요) WSL2에 설치된 Linux.(커널 5.10.60.1 이상) 참고로 Linux 커널 버전은 un.. 2022. 12. 18.
[Win32] 윈도우의 닫기 버튼을 눌렀을 때 일어 나는 일 (WM_CLOSE) 이번 포스트에서는 Win32 GUI프로그래밍을 공부하면서 거의 처음으로 배우는 내용인 윈도우가 닫힐 때 일어나는 일에 대해서 알아보겠다. 쌩으로 Win32부터 MFC, WTL까지 하다보니 좀 오래전에 공부해서 인지 가물가물하여 다시한번 리마인드 차원에서 정리해본다. Windows에서 창의 닫기 버튼을 눌렀을때 어떤일이 발생할까? 사용자가 닫기창이 눌렸을 때, 개발자는 많은 것을 고려해야 할 수 있다. 단순히 창을 hide할 것인지, 정말로 프로그램을 종료할 것 인지? 종료한다면 메모리정리, 리소스 정리, 사용자가 작업한 내용, 프로그램의 상태등을 안전하게 정리할 것인지 고려 해야 할 수 있을 것 이다. 닫기동작은 나름 그래서 중요하다고 생각한다. 그럼 닫기 버튼을 눌렀을 때 어떤 일이 발생할까? http.. 2022. 7. 31.
Swift 삽입정렬, 선택정렬, 퀵 정렬 Swift 언어에 좀 익숙해 보고자 알고리즘에서 제일 처음에 나오는 정렬 코드를 짜보았다. 간단하게 함수, 배열, 조건문, 반복문 등을 익일 수 있었다. 1. 삽입정렬 func insertionSort(arr: inout [Int]) { for i in 1 .. 0 && arr[j - 1] > key { arr.swapAt(j - 1 , j) j-=1 } arr[j] = key } return } 2. 선택정렬 func selectionSort(arr: inout [Int]) { for i in 0 ..< arr.count { var min = i for j in i ..< arr.count { if arr[min].. 2022. 7. 3.
HIWORD, LOWORD 매크로, DWORD 쪼개기 Windows 프로그래밍을 하다보면 32bit 자료형인 DWORD를 쪼개야 할때가 생긴다. 예를 들면 WM_LBUTTONDOWN와 같은 마우스 메시지의 lParam변수에는 마우스 좌표가 들어 있는데, X축은 하위 16비트, Y축은 상위 16비트에 존재 한다. 이때 상위, 하위 16비트를 쪼개어야 X축 Y축을 알 수 있다. 그렇다면 대충 코드 비트연산을 다음과 같이 할 수 있을 것이다. DWORD dwXPos = ((((DWORD)lParam)) & 0xffff); DWORD dwYPos = ((((DWORD)lParam >> 16)) & 0xffff); 이렇게 할 수 있지만 상당히 거추장스러운 코드 처럼 보인다. 이렇게 가독성이 떨어지는 코드를 막기위해 Windows SDK에서는 매크로를 정의해 놓았다... 2022. 6. 16.
OpenJDK 다운로드 , 마이크로소프트에서 받자. 최근 OpenJDK를 윈도우에 설치할 일이 생겼었다. 윈도우에서 JDK를 설치하려면 압축을 풀어서 적절한 경로에 넣고 환경변수를 일일히 잡아줘야 하는게 일반적이다. OpenJDK를 공식으로 배포하는 공식 홈페이지에서는 zip파일 형태로 배포하기 때문에 마냥 귀찮지 않을 수 없다. 또 Pre빌드 해놓은 깃허브도 존재하는데 이것도 좀 믿기힘들다. https://jdk.java.net/archive/ Archived OpenJDK GA Releases Archived OpenJDK General-Availability Releases This page is an archive of previously released builds of the JDK licensed under the GNU General Pub.. 2022. 2. 25.
[Win32] WM_ERASEBKGND에서 리턴 값의 의미? 최근 UI를 개발하다가 WM_ERASEBKGND 콜백을 구현할 일이 생겼었다. MFC에서 주로 개발을 했었고, 깜박임 방지 등을 위해 습관적으로 FALSE를 리턴하고 있었다.(사실 잘못 쓰고 있었다) 이번에도 아무생각 없이 WM_ERASEBKGND콜백에서 0을 리턴을 해버렸는데 코드리뷰에서 문제가 제기 되었다. 1과 0의 차이는 무엇일까? 이번 기회에 좀 찾아 보았다. 참고로 나의 경우 WM_ERASEBKGND에서 배경을 그리고 WM_PAINT에서 글씨를 그리는 작업을 하고 있었다. WM_ERASEBKGND 는? 가장 정확한 레퍼런스는 MSDN이다. https://docs.microsoft.com/en-us/windows/win32/winmsg/wm-erasebkgnd 우선 WM_ERASEBKNG 콜백에.. 2022. 2. 24.
WSL 오류 : WslRegisterDistribution failed with error: 0x800701bc 윈도우10, 윈도우11에서 WSL을 설치할 때 다음과 같은 오류가 발생 할 수 있다. Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x800701bc Error: 0x800701bc WSL 2? ?? ?? ?? ????? ?????. ??? ??? https://aka.ms/wsl2kernel? ??????. Press any key to continue... 오류 메시지에 있는 https://aka.ms/wsl2kernel 에서 설명하길.. WSL2의 경우 Linux 커널 업데이트 패키지를 따로 설치해 줘야 한다. 다운받아 실행해보자. 설치가 완료되면 다음과 같은 화면이 나온다. 이제 다시 WS.. 2022. 2. 13.
C++/WinRT의 필요성 - 노트북 배터리 정보 구하기 마이크로소프트에서 수년간 유지해온 Win32 API를 밑에 두고 대 모바일 시대에 다양한 디바이스에서 일괄적인 인터페이스를 제공하기 위해 만든 Windows Runtime 라이브러리를 C++인터페이스로 사용할 수 있게 되었다. 그것이 바로 C++/WinRT . https://docs.microsoft.com/ko-kr/windows/uwp/cpp-and-winrt-apis/intro-to-using-cpp-with-winrt C++/WinRT 소개 - UWP applications Windows 런타임 API용 표준 C++ 언어 프로젝션인 C++/WinRT에 대한 소개입니다. docs.microsoft.com Win32 애플리케이션만 만들어온 개발자로써 좀 이해가 가지 않는다. 빠른빌드 속도, C++ 1.. 2021. 11. 18.
엣지 브라우저 기본 검색 구글로 바꾸기 마이크로소프트 윈도우 내장 브라우저인 엣지브라우저의 자체개발을 포기하고 크로미움기반 엣지브라우저로 전환하고 있다. 크로미움은 구글 크롬 브라우저의 오픈소스 버전으로 크로미움기반 엣지 브라우저는 구글 크롬 브라우저와 거의 비슷한 성능과 기능을 제공한다. 구글 서비스대신 마이크로소프트 서비스가 내장되어 연동된다. 크로미움기반이기 때문에 윈도우 뿐만 아니라, 안드로이드, iOS, macOS를 지원하며 좀 더 마이크로소프트 서비스의 연속성을 더해가고 있다. 가면 갈수록 구글서비스와의 통합이 더해저 무거워저만 가는 크롬브라우저 대신 macOS에서 엣지브라우저를 이용해 보기 시작했다. 윈도우 마이크로소프트 계정과 연동되어 윈도우PC와 북마크, 검색기록이 연동되어 좀 더 편리하게 사용 할 수 있으며 무거운 구글서비스.. 2020. 12. 25.