728x90
반응형

G91 개발일지

총 381개의 포스트

G91 개발일지(381)

  1. Win32_API - 그래픽 개요

    Window 프로그래밍에서 그래픽 요소의 비중은 크다! 오늘날 대표적인 개인 컴퓨터(PC)의 운영체제는 Window입니다. 도대체 왜 Window가 대중적인 운영체제로 자리 잡았을까요? 바로 GUI 기반의 운영체제이기 때문입니다. GUI(Graphics User Interface)는 시각적인 형태로 사용자에게 정보를 전달합니다. 컴퓨터를 배우지 않은 일반 사용자도 손쉽게 접근할 수 있게 되기 때문입니다. 그렇다면, Win32 프로그래밍을 배우는 것은 Windows용 프로그램을 만드는 것입니다. GUI 기반의 프로그램을 짜는 것이 합리적일 것입니다. 일반 사용자도 손쉽게 사용할 수 있는 것이 Window의 장점이니까요! 그래서 Win32 API에서는 수많은 그래픽을 다루는 여러 API를 제공합니다. 본문에..

    2022.02.07

    컴퓨터/Win32-API

    Commnet

  2. Win32_API - 빈 프로젝트에서 WinMain으로 실행하기(with VisualStudio)

    VisualStudio를 통한 Win32 App VisualStudio를 통해서 Win32를 만들기 위해서는 친절하게 Windows 데스크톱 응용프로그램으로 시작하며 만들 수 도있다. 하지만 C언어 기본을 공부하는 사람들이 사용하는 '빈 프로젝트'를 통해 만들고 Win32 프로그래밍 소스코드를 작성하면 에러가 발생하기 때문이다. 본 문에서는 간단하게 이 방법을 극복하는 방법에 대하여 적어보도록 하겠습니다. C언어에서의 진입점은 main()이다. C언어에는 main() 함수가 프로그램의 시작점입니다. Win32에서는 wWinMain, WinMain 등 main함수가 아닌 다른 함수가 시작점입니다. 따라서 순수 C언어로 작성하기로 한 환경에서는 wWinMain, WinMain 등의 함수를 시작점으로 인식할 ..

    2022.02.04

    컴퓨터/Win32-API

    Commnet

  3. Win32_API - HINSTANCE / HWND / HDC

    서론 Win32 API를 배우면 가장 처음 보는 자료형들 중 하나이며 가장 중요한 녀석들입니다. 본문에서는 이 용어들을 조금 더 자세히 알아보도록 합시다. 우선 Handle을 알아야 한다. Win32 API를 통해 응용 프로그래밍을 한다는 것은 운영체제의 제어권 아래에서 구동되는 프로그램을 만든다는 것입니다. 운영체제 또한 프로그램이기 때문에 당연하게도 많은 자원이 메모리상에서 관리되고 있습니다. 만약 운영체제에서 사용하는 메모리에 특정 응용프로그램이 접근하여 손쉽게 사용 및 수정이 가능하면 어떻게 될까요? 이런 상황은 매우 위험한 결과를 초래할 수 있습니다. 메인 운영체제의 동작에 문제가 생길 수도 있고 다른 응용프로그램에까지 영향을 줄 수 있기 때문입니다. 하지만 운영체제가 운영하는 자원을 응용프로그..

    2022.01.29

    컴퓨터/Win32-API

    Commnet

  4. Win32_API - 프로그램 동작 구조

    서론 본격적인 실습을 하기 전 기존에 간소화한 실습용 소스코드가 어떤 식으로 동작하는지 이해할 필요가 있습니다. 프로그램이 어떻게 동작하는지 이해를 해야만 어느 부분에 프로그래밍을 할 수 있을지 알게 됩니다. WinMain함수와 WndProc콜백 함수 소스코드를 동작시키면 WinMain함수가 동작하여 메시지 루프에 들어가게 됩니다. 이 과정 이후 WndProc함수에 작성한 내용들이 운영체제의 콜백 함수에 의해 실행되고 처리되게 됩니다. 정말 정말 간단하게 표현하면 위의 그림과 같습니다. WinMain에서 처음 윈도를 생성하고 초기 값을 가진 후 메시지 루프 영역에 도달하게 됩니다. while (GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); Dis..

    2022.01.29

    컴퓨터/Win32-API

    Commnet

  5. Win32_API - 시작2 (실습 초기 코드 만들기)

    지난 소스코드와 비교해보기 일단 VisualStudio에서 만들어주는 전체 설루션 파일과 / 실습용으로 만든 설루션 파일을 첨부하도록 하겠습니다. GitHub - Gon-91/Win32API-Lean Contribute to Gon-91/Win32API-Lean development by creating an account on GitHub. github.com 직접 받아서 실행해보세요 메인 소스코드를 보면 다음과 같이 바뀐것을 알 수 있습니다. VisualStudio 버전 // WindowsProject.cpp : 애플리케이션에 대한 진입점을 정의합니다. // #include "framework.h" #include "WindowsProject.h" #define MAX_LOADSTRING 100 //..

    2022.01.28

    컴퓨터/Win32-API

    Commnet

  6. C 언어 - CallBack함수(콜백함수)

    CallBack함수란 무엇인가? 인터넷을 통해 콜백 함수에 대해 찾아보면 다양한 말로 엄청나게 많은 설명이 있습니다. 피호 출자가 호출자에게 요청하는 함수.. 암시적 호출을 하는 함수.. 호출되는 함수.. 간단하게 콜백 함수라 불리는 녀석들은 C언어에서는 함수 포인터가 매개변수로 들어가는 함수를 콜백 함수라 일컫습니다. 그렇다면 왜 함수포인터를 매개변수로 사용하는가? 그럼 여러 글들에서 설명하는 것처럼 함수 포인터를 매개변수로 사용하는 함수를 왜 콜백 함수라는 이름을 만들어서 부르고 있는 건지 알 필요가 있습니다. 함수 포인터를 이용하면 똑같은 형식의 함수의 메모리 주소를 참조할 수 있게 됩니다. 그렇다면, 아래의 가정을 들어 예를 들어보도록 합시다. A라는 프로그래머가 sum이라는 함수를 만들었다. 이..

    2022.01.28

    컴퓨터/C

    Commnet 1

  7. C 언어 - 함수 포인터

    함수의 정의 또한 메모리에 저장된다. C언어를 배우면서 포인터를 배웠습니다. 다양한 변수들을 포인터를 통해 변수들이 저장된 메모리 주소로 접근하여 활용하게 되었습니다. 그렇다면, C언어를 통해 함수를 정의하면 정의된 함수는 어디에 저장되어 있을까요? 맞습니다. 정의된 함수 역시 메모리에 저장되게 됩니다. 그렇다는 것은 함수 또한 포인터를 통해 접근하고 이용할 수 있다는 것입니다. 본 포스트에서는 이 개념인 함수 포인터에 대해 알아보도록 하겠습니다. 함수가 정말로 메모리에 저장되는가 ? 간단하게 확인해 보도록 하기위에 예제 소스를 작성해 보도록 합시다. void func() { printf("함수도 메모리 주소가 있습니다."); } int main() { printf("%p\n", &func); retur..

    2022.01.28

    컴퓨터/C

    Commnet

  8. Win32_API - 시작 (초기 소스 해석해보기)

    시작 - VisualStudio를 통해 프로젝트 만들어보기 위 그림처럼 VisualStudio를 통해 손쉽게 Win32 API를 통한 프로그래밍 기본 소스코드를 얻을 수 있습니다. 본 포스트에서는 기본으로 생성된 소스코드의 구성과 각각의 역할에 대해서 알아보겠습니다. 얻어지는 소스코드는 아래에 있습니다. 버전마다 다를 수 있으니 참고하세요! 더보기 // WindowsProject.cpp : 애플리케이션에 대한 진입점을 정의합니다. // #include "framework.h" #include "WindowsProject.h" #define MAX_LOADSTRING 100 // 전역 변수: HINSTANCE hInst; // 현재 인스턴스입니다. WCHAR szTitle[MAX_LOADSTRING] ; ..

    2022.01.27

    컴퓨터/Win32-API

    Commnet

  9. Python - 패키지 > 모듈 (패키지와 모듈 차이점)

    패키지는 모듈의 묶음이다. 지난 포스트에서 까지는 패키지와 모듈을 하나의 의미로 다뤘습니다. 그리고 지금도 크게 차이는 없습니다. 모듈은 다양한 변수, 함수, 클래스 등을 담아두고 있습니다. 그리고 패키지는 다양한 모듈을 담고 있습니다. 다시 말해 패키지는 디렉터리(폴더)이며 모듈은 파일이 되는 것입니다. 대략적인 패키지와 모듈의 차이가 이해가 되시나요? 본 포스트에서는 패키지를 직접 만들고 사용해 보도록 하겠습니다. 준비 및 복습하기 위의 그림처럼 3가지 모듈을 만들어 보도록 하겠습니다. 각각의 소스코드를 살펴보도록 합시다. #module1 def fun(): print("module 1") #module2 def fun(): print("module 2") #module3 def fun(): prin..

    2022.01.23

    컴퓨터/Python

    Commnet

  10. Python - 모듈 관리 (pip란?)

    Python에서 외부 모듈은 어떻게 사용하는가? 지난 포스트에서 파이썬에서 모듈을 직접 만들어 보고 사용하는 방법을 알아봤습니다. 그렇다면, 이미 만들어진 수많은 모듈들을 어떻게 사용자가 가지고 와서 쓸 수 있을까요? 바로 pip라는 기능을 사용하면 됩니다. Python을 Python, Pycham, Conda 등 다양한 환경에서 사용하고 이런 대부분의 Python을 사용하는 환경에서 pip를 통해 모듈을 추가하고 제거하는 것은 효과적입니다. Python으로 지원하는 다양한 모듈들을 손쉽게 추가, 제거가 가능합니다. PIP는 뭔가요? pip은 Python환경에서 제공하는 패키지 관리자(Packge Manager)입니다. 모듈을 사용하고자 하는 Python 환경에서 손쉽게 사용할 수 있도록 도움을 주는 시..

    2022.01.21

    컴퓨터/Python

    Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :

1 ··· 14 15 16 17 18 19 20 ··· 39
728x90
반응형