tipsware의 등록된 링크

키자드에 등록된 총 50개의 포스트를 확인하실 수 있습니다.

Naver Blog

[LxMFC/기본예제] 원이 그려지는 과정을 애니메이션으로 구성하기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크한 자료부터 실습하세요. [LxMFC/기본예제] sin, cos 함수를 사용해서 원 그리기 코드를 가지고 놀기 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크... blog.naver.com 이 강좌에서는 sin, cos 값으로 원이 어떻게 그려지는지 타이머를 사용해 애니메이션으로 구성해 보겠습니다. 위와 같이 애니메이션을 구성하는 방법에 대해서는 아래의 동영상 강좌를 보면 됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_sincoscircle_3.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxAppDlg.h: 헤더 파일 #pragma once #include "c:\LabX\LxMF

Naver Blog

[금배씨/C언어실습] C언어 프로그램의 기본 구성에 대한 설명 - Step 4 (함수)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 강좌에서는 C언어가 제공하는 함수 문법에 대해 소개합니다. C언어의 함수가 어떤 목적으로 어떻게 사용되는지 공부해 보세요. 요약해 드리면 C 언어의 함수는 아래의 네 가지 목적 때문에 사용됩니다. 1. 중복 코드를 줄여줌 2. 코드를 재사용하기 편하게 만들어줌 3. 생각의 범위를 줄여줌 4. 변화에 대처하기 좋다. (제일 중요) 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. #include <stdio.h> // printf 함수를 사용하기 위해 int main() { int a = 1, b= 2, c = 3, d = 4, e = 10, f = 5

Naver Blog

C 언어라는 문을 열기 전, 당신이 반드시 갖춰야 할 '최소한의 기본기' (비전공자 필독)

기초 지식을 먼저 갖추고 시작하십시오. 그것이 가장 빠르고 정확한 길입니다. 컴퓨터공학을 전공하는 학생들이 비전공자보다 C 언어를 잘 이해하는 이유는 단순히 C 언어 코드를 더 많이 쳐봤기 때문이 아닙니다. 그들은 '컴퓨터 구조'나 '운영체제' 같은 과목을 통해 컴퓨터라는 기계의 작동 원리를 먼저 혹은 병행해서 학습하기 때문입니다. 과거에는 C 언어를 배우면서 컴퓨터 지식을 조금씩 채워가도 충분하다고 생각했습니다. 하지만 현장에서 지켜본 결과는 달랐습니다. C 언어 문법 하나도 벅찬 입문자들에게 생소한 컴퓨터 개념까지 한꺼번에 쏟아지는 것은 성장이 아니라 오히려 혼란을 가중시켜 포기를 앞당기는 독이 되곤 했습니다. 저는 이 문제를 해결하기 위해 전공자들이 C 언어를 배우기 전에 공부하는 '컴퓨터 이해' 관련 서적들을 살펴보았습니다. 하지만 대다수의 교재가 단순한 상식 수준의 설명에 그칠 뿐 실제 프로그래밍에 실질적인 도움을 주는 내용을 담고 있지 않았습니다. 그래서 C 언어를 본격

Naver Blog

[LxMFC/실습과제힌트] 삼각형의 두 변의 중심점을 지나는 수직 이등분 선 그리기

아래의 그림처럼 삼각형의 외심을 사용해서 삼각형에 외접하는 원을 그리는 실습 과제를 소개했는데 수직 이등분 선을 그리는 작업에서 막힌 분들을 위해 힌트를 드리기 위해 간단하게 예제를 만들었습니다. [LxMFC/실습과제] 삼각형 세 변의 수직이등분선을 이용하여 외심을 구하고 이를 바탕으로 외접원을 그려주는 프로그램 만들기 아래에 링크한 삼각형의 모양을 변경하는 실습까지 진행하신 분들을 위해 추가적인 실습 과제를 준비했습니... blog.naver.com 삼각형의 두 변의 줌심 위치를 수직 이등분하는 선을 그리는 방법은 다양하지만 최근에 제가 삼각함수와 관련된 동영상 강좌를 많이 만들었으니 이번에는 삼각 함수를 사용하는 방법으로 힌트를 드리겠습니다. 아래와 같이 녹색점을 중심으로 하는 원을 그립니다. 그리고 원이 그려진 선(흰색)의 기울기를 구하고 원 위에 있는 점들 중에서 선(흰색)의 기울기에 90도를 더한 위치와 90도를 뺀 위치의 점을 연결하면 흰색 선에 90도로 교차하는 선(회색

Naver Blog

[금배씨/C언어실습] 난수를 사용해 학생 15명의 국어, 영어, 수학 점수 값을 지정하고 화면에 출력하기 - Step 1 (배열과 전처리기 실습)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 강좌에서는 난수를 사용해 학생 15명의 국어, 영어, 수학 점수 값을 지정하고 화면에 출력하는 예제를 실습합니다. 그리고 이번 실습에서는 배열 문법을 사용해서 기능을 구현할 것인데 배열 문법으로 작성된 코드에 #define 전처리기를 사용해 소스 코드의 가독성을 높이는 방법에 대해서도 함께 설명합니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. #include <stdio.h> // printf 함수를 사용하기 위해 int main() { return 0; } 난수를 사용해 15명 학생의 국어, 영어, 수학 점수를 지정하고 지정된 점수를 화면에

Naver Blog

[LxMFC/응용예제] 스태프 관리 프로그램 - Step 3

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 2]을 실습하지 않았다면 [Step 2]부터 실습을 진행하세요. [LxMFC/응용예제] 스태프 관리 프로그램 - Step 2 이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 1]을 실습하지 않았다면 [Step 1]부터 실습을... blog.naver.com [Step 3]에서는 등록된 staff 정보를 파일에 저장했다가 프로그램이 다시 시작될 때 저장된 staff 정보를 파일에서 읽어 목록으로 구성하는 기능이 추가되었습니다. 지금처럼 간단한 관리 프로그램은 Database 개념을 사용하지 않고 단순하게 파일 입출력을 통해서도 충분히 정보를 관리할 수 있습니다. 이번 단계에서는 파일 입출력 기능만 추가되었기 때문에 아래의 그림처럼 사용자 환경에는 변화가 없습니다. 위 예제의 소스는 MyThread 카페에 등록되어 있습니다. [LxMFC/응용예제] 스태프 관리 프로그램 - Step 3 대한민국 모임의 시작, 네

Naver Blog

[LxMFC/기본예제] 새롭게 추가된 색상 선택 대화 상자 사용하기 - LxChoose32BitColorDlg

기존 색상 선택 대화 상자들이 32비트 색상을 사용하더라도 Alpha 값을 지정하지 못하는 문제가 있어서 아래와 같은 색상 대화 상자를 사용할 수 있도록 LxMFC 라이브러리에 LxChoose32BitColorDlg 클래스를 추가했습니다. LxChoose32BitColorDlg 클래스를 사용하면 원하는 색상을 다양하게 조합할 수 있는 대화 상자가 출력되고 'A' 항목에 있는 슬라이더 컨트롤을 사용하면 Alpha 값도 지정할 수 있습니다. 그리고 LxChoose32BitColorDlg 클래스를 사용하는 방법을 소개하기 위해 아래와 같이 색상을 확인하는 간단한 예제도 만들었습니다. 위 예제에 대한 설명은 아래의 동영상 강좌를 참고하시면 됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_color.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxA

Naver Blog

[금배씨/팁] Visual Studio에서 구조체 멤버 정렬 상태 확인하는 방법

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 오늘 금배씨 강좌는 C언어 문법적인 내용이 아니라 Visual Studio에서 구조체 멤버 정렬 상태 확인하는 방법에 대해 설명합니다. 이 내용은 아래에 링크한 것처럼 제 블로그에 이미 블로깅 했었는데 직접 사용하면서 설명을 해달라는 피드백이 있어서 금배씨 강좌를 통해 소개합니다. Visual Studio에서 구조체 멤버 정렬 상태 확인하기 이 글은 '구조체 멤버 정렬'이 무엇인지 알고 있다는 가정하에 적은 글입니다. 만약, '구조... blog.naver.com 그리고 구조체 멤버 정렬에 대해서는 제 책(Do it! C언어 입문)의 477 페이지 18-4 항목에 있

Naver Blog

[금배씨/C언어실습] C언어 프로그램의 기본 구성에 대한 설명 - Step 3 (제어문)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 강좌에서는 C언어가 제공하는 제어문에 대해 소개합니다. C언어는 제어문을 조건문과 반복문으로 제공하는데 이 두 가지 문법을 간단하게 살펴봅니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. #include <stdio.h> // printf 함수를 사용하기 위해 int main() { int data = 5; printf("data : %d\n", data); return 0; } 위 예제는 아래와 같이 실행됩니다. data : 5 이 창을 닫으려면 아무 키나 누르세요... 그리고 if 조건문이 추가된 예시 코드는 다음과 같습니다. #includ

Naver Blog

기초가 탄탄한 프로그래머는 흔들리지 않습니다

누구에게나 처음 가는 길은 낯설고 망설여지기 마련입니다. 특히 C, C++ 그리고 MFC 프로그래밍은 배워야 할 깊이와 양이 방대해 진입 전부터 부담을 느끼시는 분들이 많습니다. 하지만 기억하세요. 기술의 트렌드는 빠르게 변하지만 그 밑바탕을 흐르는 근본 원리는 변하지 않습니다. 시간을 투자해 쌓아 올린 탄탄한 실력은 거센 AI 열풍 속에서도 여러분이 대체 불가능한 위치에서 자신의 역할을 다할 수 있는 강력한 무기가 될 것입니다. 망설임 대신 용기를 내어보세요. 여러분 곁에는 늘 함께하는 조력자가 있습니다. 제 블로그에서 기초를 다지고 'MyThread'와 '미가공' 카페에서 함께 성장하며 더 넓은 세상으로 나아가면 됩니다. 혼자가 아니라 우리가 함께라면 미로는 더 이상 두려운 곳이 아닙니다.

Naver Blog

공부는 재미있는 것이 아니라 성실함으로 증명하는 것입니다

공부하는 과정은 원래 재미없고 어렵습니다. 누구나 겪는 그 고통을 피하려 하지 마십시오. 어려움은 극복의 대상이지 회피의 대상이 아닙니다. 이해하고 응용하는 단계에서 오는 만족감이 큰 이유는 그 과정이 그만큼 치열하고 고통스러웠기 때문입니다. '재미있게 배울 방법'을 찾는 데 시간을 허비하지 마십시오. 실력은 요행이나 재미가 아니라 오직 정직한 시간 투자와 성실함으로만 만들어집니다. 과정이 즐겁기를 기대하기보다 결과가 반드시 행복할 것이라는 결론을 믿고 묵묵히 나아가십시오. 이미 그 고통의 터널을 지나 행복을 누리는 사람들이 증명하고 있습니다. 중도에 포기하고 실패한 이들의 나약한 말에 흔들리지 마십시오. 기억하십시오. 실력을 갖추고자 하는 자에게만 그 결실이 허락됩니다.

Naver Blog

[LxMFC/기본예제] sin 함수를 사용해서 sin 그래프 그리기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크한 자료부터 실습하세요. [LxMFC] GDI+ 실습을 위한 기본 코드 구성하기 이 동영상 강좌는 LxMFC를 사용해 GDI+ 실습을 할 때 기본 코드를 구성하는 방법에 대해 소개하는 ... blog.naver.com 이 강좌에서는 sin 함수를 사용해 sin 그래프를 그리는 방법에 대해 처음부터 상세하게 설명합니다. 제가 삼각함수를 사용하는 여러 가지 예제를 많이 제공하는데 삼각함수를 제대로 사용하는 법을 몰라서 힘들어하시는 분들이 있어서 처음부터 하나씩 설명드리는 동영상 강좌입니다. 이 프로그램은 아래와 같이 실행됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_sin.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxAppDlg.h: 헤더

Naver Blog

[LxMFC/기본예제] sin, cos 함수를 사용해서 원 그리기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크한 자료부터 실습하세요. [LxMFC/기본예제] sin 함수를 사용해서 sin 그래프 그리기 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크... blog.naver.com 이 강좌에서는 sin, cos 함수를 사용해 x축 기준으로 sin 그래프, y축 기준으로 cos 그래프를 그리는 실습을 진행합니다. 그리고 sin, cos 그래프를 그리는데 사용된 좌표를 가지고 원을 그리는 방법에 대해 소개합니다. 이 예제는 아래와 같이 출력됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_sincoscircle_1.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxAppDlg.h: 헤더 파일 #pra

Naver Blog

[LxMFC/기본예제] sin, cos 함수를 사용해서 원 그리기 코드를 가지고 놀기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크한 자료부터 실습하세요. [LxMFC/기본예제] sin, cos 함수를 사용해서 원 그리기 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크... blog.naver.com 이 강좌에서는 기존에 만들어진 코드가 잘 이해되지 않거나 사용된 코드가 익숙해지는데 시간이 걸리는 경우, 어떻게 해야지 흥미를 유지하면서 코드를 계속 실습할 수 있는지 알려주기 위한 강좌입니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_sincoscircle_2.zip 파일 다운로드 위 강좌에서 설명한 것처럼 코드가 익숙하지 않아서 많이 반복해야 하는 경우 기존 코드를 그대로 반복하는 것보다 아래에서 소개하는 것처럼 약간씩 변화를 주면서 실습하는 것이 코드에 대한 흥미를 유지하는데 도움이 됩니다. si

Naver Blog

[LxMFC/응용예제] 캡처된 이미지를 프레임 단위로 확인하는 UI 구성하기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [LxMFC/응용예제] 지정한 영역의 화면을 압축하면서 연속으로 캡처하기 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 애니메이션 GIF 이미지를 생성하는 프로그램을 만... blog.naver.com 이번 단계에서는 캡처된 이미지를 프레임 단위로 확인하는 UI를 어떻게 구성할 것인지에 대해 소개하고 기본적인 가이드 코드를 소개합니다. 실시간으로 캡처하면서 압축된 데이터를 녹화가 중단되었을 때 캡처된 각 프레임을 GpImage로 한 개씩 변환해서 목록화하고 아래의 그림처럼 메인 제어 패널에 프레임 단위로 볼 수 있게 화면을 구성했습니다. 그런데 매번 코드를 다 보여드리면 학습에 도움이 되지 않는 것 같아서 이번에는 이미지 목록 아래쪽에 있는 슬라이드 컨트롤의 기능을 제거하고 올렸습니다. 그리고 ListBox를 사용하면 너무 쉽게 해결되니까 이미지 목록도 연결 리스트를 사용해 GDI+로 직접 그리는 방식을 선택했습니다. 이번 단

Naver Blog

[LxMFC/실습과제] GDI+ 실습 - 롤오버 기능 구현하기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크한 자료부터 실습하세요. [LxMFC] GDI+ 실습을 위한 기본 코드 구성하기 이 동영상 강좌는 LxMFC를 사용해 GDI+ 실습을 할 때 기본 코드를 구성하는 방법에 대해 소개하는 ... blog.naver.com 이번 실습 과제는 GDI+ 출력을 사용해 원을 출력하고 원 위에 마우스가 위치했을 때 원 주변에 점 선을 출력하는 롤오버 기능을 구현하는 것입니다. 즉, 아래와 같이 구현하면 됩니다. 이 실습과제의 답안은 아래의 동영상 강좌를 보시면 됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_Step2.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxAppDlg.h: 헤더 파일 #pragma once #include "c:\LabX\Lx

Naver Blog

Merry Christmas!

제 블로그를 찾아주시는 모든 분께 감사드립니다. 배움의 과정이 때로는 어렵지만 오늘만큼은 잠시 쉬어가며 소중한 사람들과 행복한 성탄절 보내시길 바랍니다. Merry Christmas!

Naver Blog

[LxMFC/실습과제] 마우스로 원 클릭해서 이동하기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크한 자료부터 실습하세요. [LxMFC/실습과제] GDI+ 실습 - 롤오버 기능 구현하기 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크... blog.naver.com 이번 실습 과제는 GDI+ 출력을 사용해 원을 출력하고 해당 원을 마우스로 클릭해서 원하는 위치로 이동하는 기능을 구현하는 것입니다. 즉, 아래의 그림처럼 구현하면 됩니다. 이 실습과제의 답안은 아래의 동영상 강좌를 보면 됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_Step3.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxAppDlg.h: 헤더 파일 #pragma once #include "c:\LabX\LxMFC\

Naver Blog

[LxMFC/실습과제] 마우스로 꼭지점을 이동해서 삼각형의 모양을 변경하기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크한 자료부터 실습하세요. [LxMFC/실습과제] 마우스로 원 클릭해서 이동하기 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크... blog.naver.com 이번 실습 과제는 아래의 그림처럼 GDI+ 출력을 사용해 삼각형을 출력하고 해당 삼각형의 꼭지점을 마우스로 클릭해 삼각형의 모양을 변경하는 기능을 구현하는 것입니다. 이 실습과제의 답안은 아래의 동영상 강좌를 보면 됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_Step4.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxAppDlg.h: 헤더 파일 #pragma once #include "c:\LabX\LxMFC\h\LxMFC.h

Naver Blog

[LxMFC/실습과제] 삼각형 세 변의 수직이등분선을 이용하여 외심을 구하고 이를 바탕으로 외접원을 그려주는 프로그램 만들기

아래에 링크한 삼각형의 모양을 변경하는 실습까지 진행하신 분들을 위해 추가적인 실습 과제를 준비했습니다. [LxMFC/실습과제] 마우스로 꼭지점을 이동해서 삼각형의 모양을 변경하기 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 따라서 아래의 링크를 실습하지 않았다면 아래에 링크... blog.naver.com 이번 과제는 삼각형에 외접하는 원을 그리는 과제입니다. 외접원을 구하는 방식은 다양하지만 이 과제에서는 삼각형 세 변의 수직이등분선이 만나는 외심을 사용해 작업하면 됩니다. 삼각형의 모양을 변경하는 방식은 위에 링크한 실습 과제와 동일하게 사용하고 외심을 구할 때는 삼각형의 두 변만 이용하면 됩니다. (세 변을 모두 사용해도 됩니다) 두 개의 녹색원은 삼각형의 두 변과 수직이등분선이 만나는 점을 표시한 것이고 빨간색 원은 두 개의 수직이등분선이 만나는 외심을 표시한 것입니다. 그리고 두 개의 회색 선은 외심을 구하는데 사용한 수직이등분선을 표시한 것입니다. 당연히 삼각형의

Naver Blog

[LxMFC/응용예제] 지정한 영역의 화면을 압축하면서 연속으로 캡처하기

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [LxMFC/응용예제] 클라이언트 영역이 비어있는 CWnd 기반의 응용 프로그램 만들기 이 예제는 아래의 그림처럼 윈도우의 클라이언트 영역이 투명할 뿐만 아니라 보이는 내용을 마우스로 클릭... blog.naver.com 애니메이션 GIF 이미지를 생성하는 프로그램을 만들려면 애니메이션에 포함될 이미지 목록을 구성해야 합니다. 사용자가 이미지를 직접 구성하려면 불편하기 때문에 보통의 경우 영상을 캡처하는 방식으로 목록을 구성합니다. 그래서 두 번째 단계는 비어있는 클라이언트 영역으로 보이는 화면을 일정 시간 동안 연속으로 캡처해서 저장하는 기능을 구현할 것입니다. 32비트 이미지를 연속으로 빠르게 캡처하면 생각보다 용량이 많이 필요하기 때문에 이번 실습에서는 캡처된 이미지를 압축해서 저장하는 방법을 사용할 것입니다. 그리고 녹화 버튼과 녹화 상태를 확인할 수 있는 이벤트 목록을 추가하기 위해 캡처 창 아래쪽에 비정형 대화 상자를 사

Naver Blog

[금배씨/C언어실습] C언어 프로그램의 기본 구성에 대한 설명 - Step 1

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 금배씨 강좌에서는 C언어 실습을 진행하기 위해 사용하는 기본 소스 구성에 대해 소개하고 전체적인 문법 개념이나 용어에 대해 설명합니다. C언어 실습을 시작하시는 분들은 필수적으로 이 동영상 강좌를 보셔야 합니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. // [금배씨] C언어 실습 강좌 // C언어 프로그램의 기본 구성에 대한 설명 - Step 1 #include <stdio.h> int main() { int num = 5; num = num + 1; printf("Hello C!!\n"); printf("num : %d", num); re

Naver Blog

[LxMFC] GDI+ 실습을 위한 기본 코드 구성하기

이 동영상 강좌는 LxMFC를 사용해 GDI+ 실습을 할 때 기본 코드를 구성하는 방법에 대해 소개하는 동영상 강좌입니다. 이 강좌는 아래에 링크한 자료의 동영상 강좌 버전입니다. 대화상자에서 LxGDIP를 직접 사용할 때 기본적으로 사용하는 코드 요즘은 간단하게 예제를 구성하기 위해 윈도우를 추가하지 않고 LxGDIP 객체를 대화 상자에 직접 생성해서 사용하고 있습니다. 그래서 아래와 같은 순서로 작업을 많이하기 때문... cafe.naver.com 이 강좌에서 완성된 프로그램은 아래와 같이 실행됩니다. 이 동영상 강좌에서 완성된 소스는 아래의 첨부 파일에 포함되어 있습니다. 첨부파일 TestLxApp_Step1.zip 파일 다운로드 그리고 아래의 소스 코드는 이 예제에서 사용된 메인 대화 상자 클래스의 헤더 파일 내용입니다. // TestLxAppDlg.h: 헤더 파일 #pragma once #include "c:\LabX\LxMFC\h\LxMFC.h" #include "c:\L

Naver Blog

[금배씨/C언어실습] C언어 프로그램의 기본 구성에 대한 설명 - Step 2 (자료형, 변수, 상수)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 C언어를 배우게 되면 자료형과 변수, 상수를 개별적으로 공부하게 되는데 사실 이 내용이 전체적으로는 연결된 내용이라서 어떤 관계를 가지고 있는지 모른 상태에서 개별적으로 배우면 이해하는데 어려움이 생길 수 있습니다. 그래서 이번 금배씨 강좌에서는 자료형, 변수, 상수 문법을 배우기 전에 예습 차원으로 이 세 가지 내용을 함께 설명합니다. C언어 실습을 시작하시는 분들은 필수적으로 이 동영상 강좌를 보셔야 합니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. // [금배씨] C언어 실습 강좌 // C언어 프로그램의 기본 구성에 대한 설명 - Step 2

Naver Blog

[LxMFC/응용예제] 스태프 관리 프로그램 - Step 2

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 1]을 실습하지 않았다면 [Step 1]부터 실습을 진행하세요. [LxMFC/실습과제] 스태프 관리 프로그램 - Step 1 LxMFC 라이브러리로 만들어진 관리 프로그램 형식의 예제가 부족하다는 피드백이 있어서 간단한 관리 ... blog.naver.com CImage 클래스가 내부적으로 GDI+를 사용해서 이미지를 처리하기 때문에 나름 렌더링이 괜찮은데 [Step 1]에서 목록에 사용한 staff 얼굴 사진이 너무 작아서 심하게 깨지는 문제가 있었습니다. 그래서 GDI+의 GpImage를 사용하도록 변경했습니다. 그래서 이제 목록에 사용된 얼굴 사진의 화질이 많이 개선되었습니다. 하지만 LxListBoxEx 클래스가 GDI 기반으로 만들어졌기 때문에 GpImage를 사용하려면 정보를 출력할 때 LxGDIP 클래스를 사용하게 변경해야 해서 StaffListBox 클래스의 출력 루틴을 GDI+ 기반으로 사용하게 수정했습니

Naver Blog

[LxMFC] 객체 지향 에디터 만들기 - Step 4

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [LxMFC] 객체 지향 에디터 만들기 - Step 3 이 예제는 아래에 링크한 예제에 연결된 내용입니다. 이번 단계에서는 추가된 객체를 선택해서 '복사&... blog.naver.com 이 예제는 TPA를 통해 진행되고 있는 예제인데 진행하는 TPA를 신청한 회사 측의 내부 사정으로 그동안 지연이 되다가 최근에 다시 요청이 들어와서 [Step 4] 버전이 어디까지 만들어졌는지 소개합니다. 일단 [Step 3]에서 버그가 수정되었습니다. 텍스트 객체를 복사해서 붙여넣기 할 때 속성이 제대로 복사되지 않는 문제가 있었는데 [Step 4] 버전을 만들면서 발견되어 관련 코드가 모두 수정되었습니다. [Step 4]에 추가된 주요 기능은 캔버스의 크기를 설정 가능하게 하고 배경 색상을 지정할 수 있도록 하는 것입니다. 그리고 배경으로 색상이 아닌 이미지를 사용하는 것도 가능하게 기능을 추가했습니다. 그래서 아래와 같이 툴바에 설정 버튼이

Naver Blog

[금배씨/C언어실습] 동적 메모리 할당 - Step 3 (2차원 배열 형태로 메모리 할당/배열을 가리키는 포인터)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 금배씨 강좌에서는 2차원 배열 형태의 메모리 구조를 동적으로 할당하는 방법을 소개하겠습니다. [Step 2]에서는 '포인터를 항목으로 가지는 배열 문법'을 사용해서 2차원 배열 형태의 메모리를 Heap 영역에 구성했는데 이번 강좌에서는 '배열을 가리키는 포인터 문법'을 사용해서 2차원 배열 형태의 메모리를 Heap 영역에 구성해 보겠습니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. 이 예제는 '포인터를 항목으로 가지는 배열 문법'을 사용해서 2차원 형식의 메모리 구조를 만드는 코드입니다. #include <stdio.h> // printf 함

Naver Blog

Visual Studio에서 구조체 멤버 정렬 상태 확인하기

이 글은 '구조체 멤버 정렬'이 무엇인지 알고 있다는 가정하에 적은 글입니다. 만약, '구조체 멤버 정렬에 대해서 모른다면 아래에 링크한 동영상 강좌를 먼저 보시기 바랍니다. 구조체 멤버 정렬 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이 강좌에서는 C언어에서 구조체를 선언할 ... blog.naver.com 그리고 제 책(Do it! C언어 입문)의 477 페이지 18-4 항목에 있는 '구조체로 만든 자료형의 크기'에도 잘 설명되어 있습니다. Do it! C언어 입문 김성엽2017이지스퍼블리싱 블로그 글 더보기 구조체 멤버 정렬의 상태를 확인하는 방법은 다양하지만 Visual Studio에서 제공하는 '메모리 레이아웃' 기능으로 확인하는 것이 제일 편합니다. '메모리 레이아웃' 기능은 Visual Studio 2022버전 기준으로 봤을 때 17.9버전(2024년 2월 13일 출시)부터 제공되었던 기능이지만 많은 분들이 프로그램 만

Naver Blog

[금배씨/C언어실습] 동적 메모리 할당 - Step 4 (2차원 배열 형태로 메모리 할당/2차 포인터)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 금배씨 강좌에서는 2차원 배열 형태의 메모리 구조를 동적으로 할당하는 방법을 소개하겠습니다. [Step 4]에서는 '2차 포인터 문법'을 사용해서 2차원 배열 형태의 메모리를 Heap 영역에 구성해 보겠습니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. 이 예제는 '포인터를 항목으로 가지는 배열 문법'을 사용해서 2차원 형식의 메모리 구조를 만드는 코드입니다. #include <stdio.h> // printf 함수를 사용하기 위해 #include <malloc.h> // malloc, free 함수를 사용하기 위해 int main() { sh

Naver Blog

[LxMFC/응용예제] MyThread 카페 관리 프로그램 만들기 - Step 10

MyThread 카페 관리 프로그램은 예전에 미가공 카페에서 Step 7까지 MFC 동영상 강좌로 소개했던 예제 프로그램입니다. LxMFC 라이브러리에 의해 감추어진 부분을 모두 보고 싶다면 아래에 링크한 예제를 Step 1부터 Step 7까지 보시면 됩니다. MyThread 카페 관리 프로그램 만들기 - Step 7 대한민국 모임의 시작, 네이버 카페 cafe.naver.com 기존 예제에서 기본적으로 구성해야 할 정보들은 이미 다 소스 레벨로 공개되었고 추가되는 기능들은 LxMFC로 변경해서 관리해도 될 것 같아서 이번에 LxMFC 버전으로 변경했습니다. 중간에 [Step 8]과 [Step 9]의 기능은 이번에 변경된 LxMFC 버전에 모두 포함되어 있어서 별도로 공개하지 않겠습니다. 그리고 이 예제는 기존 예제를 그대로 LxMFC로 변경된 버전이라서 기존 예제와 버전을 맞추기 위해 [Step 10]으로 공개합니다. 이 예제 프로그램은 간단한 관리 프로그램을 만드는 방법을 소개하

Naver Blog

[2025 마이 블로그 리포트] 데이터로 채워보는 내 블로그 취향 리포트

2026년에도 프로그래밍 관련 내용으로 블로그를 가득 채우겠습니다 :) 2025 블로그 취향 리포트 블로그를 보면, 나만의 취향이 보인다! event.blog.naver.com

Naver Blog

[LxMFC/응용예제] 클라이언트 영역이 비어있는 CWnd 기반의 응용 프로그램 만들기

이 예제는 아래의 그림처럼 윈도우의 클라이언트 영역이 투명할 뿐만 아니라 보이는 내용을 마우스로 클릭할 수 있는 형태의 윈도우를 만드는 방법에 대해 소개합니다. 즉, 윈도우의 클라이언트 영역이 비어있는 것처럼 만드는 것입니다. 예전에도 제가 이런 형식의 프로그램을 몇 번 만든 적이 있는데 이런 형식이 예외 사항이 많고 구현 코드 자체가 좀 어려워서 MyThread 카페에 공개하지 못했었습니다. 그런데 최근에 이 작업과 관련된 함수들이 LxMFC에 추가되면서 위 그림에서 소개한 기능을 쉽게 구현할 수 있게 되어 동영상 강좌로 소개하게 되었습니다. 그리고 이런 형식의 프로그램을 만들 때는 대화 상자 기반보다는 CWnd 기반으로 만드는 것이 더 유리하기 때문에 이번 강좌에서는 CWnd 클래스를 사용해서 소개했습니다. 위와 같은 형식의 응용 프로그램을 만들고 싶다면 아래에 링크한 동영상 강좌를 보시면 됩니다. (이 강좌는 미가공 카페 회원님들만 볼 수 있습니다) [LxMFC/동영상강좌] 클

Naver Blog

[LxMFC/응용예제] 대화 상자를 외부 스크립트로 생성하기 - Step 2

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 1]을 실습하지 않았다면 [Step 1]부터 실습을 진행하세요. [LxMFC/응용예제] 대화 상자를 외부 스크립트로 생성하기 - Step 1 프로그램에서 대화 상자는 보통 리소스에 추가해서 사용하지만 꼭 그렇게 할 필요는 없습니다. 그래서 Lx... blog.naver.com [Step 2]에서는 편집한 스크립트를 텍스트 파일에 저장했다가 다시 읽는 기능이 추가되었습니다. 아래의 그림에서 '스크립트 열기' 버튼을 누르면 원하는 스크립트 파일을 읽을 수 있고 '스크립트 저장' 버튼을 누르면 현재 편집 중인 스크립트 파일을 저장할 수 있습니다. 그리고 작업할 때 각 컨트롤에 대한 기본 스크립트 구성을 다 기억할 수는 없기 때문에 아래의 그림처럼 대표적으로 사용되는 컨트롤 형식을 선택해서 스크립트를 확인할 수 있는 기능도 추가되었습니다. 이 콤보 박스에서 원하는 컨트롤을 선택하면 오른쪽에 있는 에디트 컨트롤에 해당 컨트롤을 사

Naver Blog

[LxMFC] LxAPI_GetLastNameFromPath 함수에 대하여

LxAPI_GetLastNameFromPath 함수는 지정한 경로에서 마지막에 위치한 폴더나 파일의 이름을 얻는 함수입니다. 이 함수는 LxMFC.h 헤더 파일에 아래와 같이 정의되어 있고 ap_path에 경로를 지적하면 마지막 '\'문자 뒤에 있는 이름을 반환합니다. 즉, 이 함수가 반환하는 주소는 새로운 메모리의 주소가 아니라 ap_path에서 '\' 문자 뒤에 있는 주소가 반환됩니다. const wchar_t *LxAPI_GetLastNameFromPath(const wchar_t *ap_path); 예를 들어, 'c:\MyWork\temp\user.png' 경로를 LxAPI_GetLastNameFromPath 함수에 지정하면 'user.png' 문자열을 얻을 수 있습니다. const wchar_t *p_name = LxAPI_GetLastNameFromPath(L"c:\\MyWork\\temp\\user.png"); // p_name을 출력하면 'user.png'가 출력된다.

Naver Blog

[LxMFC] LxAPI_MakeWorkingSimplePath 함수에 대하여

LxAPI_MakeWorkingSimplePath 함수는 작업 경로 또는 작업 경로에 있는 디렉토리의 절대 경로를 얻는 함수입니다. 이 함수는 LxMFC.h 헤더 파일에 아래와 같이 정의되어 있고 첫 번째 인자에 작업 경로가 저장될 메모리의 주소를 지정하면 됩니다. int LxAPI_MakeWorkingSimplePath(wchar_t *ap_path, const wchar_t *ap_add_path = NULL, int a_auto_add_back_slash = 1); 예를 들어, 현재 작업 경로가 'c:\work\TestApp'이라면 아래와 같이 LxAPI_MakeWorkingSimplePath 함수 호출했을 때 temp_path 변수에 'c:\work\TestApp\' 경로가 저장됩니다. 그리고 이 함수의 반환 값은 temp_path에 저장된 문자의 개수입니다. 지금 같은 경우에는 16이 반환됩니다. wchar_t temp_path[MAX_PATH]; LxAPI_MakeWork

Naver Blog

[LxMFC] LxAPI_MakeTimeBasedFileName 함수에 대하여

LxAPI_MakeTimeBasedFileName 함수는 현재 시간을 기반으로 파일 이름을 생성해 주는 함수이고 이 함수는 LxMFC.h 헤더 파일에 아래와 같이 정의되어 있습니다. int LxAPI_MakeTimeBasedFileName(wchar_t *ap_file_path, int a_max_path_len, const wchar_t *ap_base_path, const wchar_t *ap_ext_name, UINT8 a_use_msec = 1, UINT8 a_use_date = 1, UINT8 a_use_under_line = 1); 이 함수의 첫 번째 인자는 구성된 파일 이름이 저장될 메모리의 주소이고 두 번째 인자는 첫 번째 인자로 전달된 메모리에 저장 가능한 최대 문자 개수를 지정하면 됩니다. 그리고 네 번째 인자는 생성될 파일 이름에 사용할 파일 확장자를 지정하면 됩니다. 예를 들어, 아래와 같이 코드를 사용하면 현재 시간을 사용해서 '20251217_023651_9

Naver Blog

[금배씨/C언어실습] 동적 메모리 할당 - Step 2 (2차원 배열 형태로 메모리 할당/포인터를 항목으로 가지는 배열)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 금배씨 강좌에서는 2차원 배열 형태의 메모리 구조를 동적으로 할당하는 방법을 소개하겠습니다. 동적 메모리 할당으로 2차원 구조를 만드는 방법이 세 가지 형태가 있는데 이번 강좌에서는 포인터를 항목으로 가지는 배열 문법을 사용해서 2차원 배열 형태의 메모리를 Heap 영역에 구성해 보겠습니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. #include <stdio.h> // printf 함수를 사용하기 위해 #include <malloc.h> // malloc, free 함수를 사용하기 위해 int main() { short data[2][3]

Naver Blog

[LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 4 & LxMFC 라이브러리 자동 업데이트 프로그램 - Step 2

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 3]을 실습하지 않았다면 [Step 3]부터 실습을 진행하세요. [LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 3 이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 2]를 실습하지 않았다면 [Step 2]부터 실습을... blog.naver.com 파일 자동 업데이트를 위한 서버 - Step 4 [Step 4]에서는 클라이언트 프로그램(LxMFC 라이브러리 자동 업데이트 프로그램 - Step 2)과 통신할 프로토콜을 추가하고 업데이트 파일 목록을 전송하는 코드를 추가했습니다. 이번 업데이트에서는 아래의 그림처럼 사용자 환경이 변경되지는 않았습니다. 그리고 이전에 사용하던 클라이언트와 함께 사용하던 프로토콜 호환성을 제거하기 위해 프로토콜을 번호를 아래와 같이 변경했습니다. #define REQ_GET_UPDATE_FILE_LIST 21 // C -> S 현재 업데이트 정보 요청 #def

Naver Blog

[LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 5 & LxMFC 라이브러리 자동 업데이트 프로그램 - Step 3

이 자료는 아래에 링크한 자료에 연결된 내용입니다. 서버 버전은 [Step 4]를 실습하지 않았다면 [Step 4]부터 실습을 진행하세요. 그리고 클라이언트 버전도 [Step 2]를 실습하지 않았다면 [Step 2]부터 실습을 진행하세요. [LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 4 & LxMFC 라이브러리 자동 업데이트 프로그램 - Step 2 이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 3]을 실습하지 않았다면 [Step 3]부터 실습을... blog.naver.com 파일 자동 업데이트를 위한 서버 - Step 5 [Step 5]에서는 클라이언트 프로그램(LxMFC 라이브러리 자동 업데이트 프로그램 - Step 3)과 통신해서 업데이트에 사용할 실제 파일을 전송하는 코드가 추가되었습니다. 등록된 모든 파일을 전송하는 방식이 아니고 클라이언트에서 이미 설치된 버전과 비교하여 실제로 업데이트가 필요한 파일만 요청하기 때문에 일부 업데이

Naver Blog

LxMFC 라이브러리 자동 업데이트하기!!

제가 LxMFC를 사용해서 다양한 예제를 만들다 보니 LxMFC 라이브러리 업데이트가 자주 있는 편입니다. 그런데 업데이트가 있을 때마다 매번 카페에서 파일 받아서 업데이트하기 귀찮으셨죠? 사실 매번 업데이트 파일을 업로드하는 저도 힘들답니다. 그래서 아래에 링크한 것처럼 LxMFC를 사용해서 업데이트 서버를 만들었습니다. (소스는 미가공 카페에 공개되어 있습니다) [LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 5 & LxMFC 라이브러리 자동 업데이트 프로그램 - Step 3 이 자료는 아래에 링크한 자료에 연결된 내용입니다. 서버 버전은 [Step 4]를 실습하지 않았다면 [Step 4... blog.naver.com 그리고 완성된 업데이트 서비스를 지원하는 서버 프로그램은 저희 회사의 한 컴퓨터에 아래와 같이 실행되어 있습니다. 특별한 서버 컴퓨터가 있는 건 아니고 일반 컴퓨터인데 원격 컴파일을 지원하기 위해 24시간 켜놓는 컴퓨터가 있는데 해당 컴퓨터에

Naver Blog

[LxMFC] LxNeoServerSocket에서 SendCommonFrameData 함수와 SendCommonFrameDataEx 함수의 차이

LxNeoServerSocket는 사용자가 구성한 정보를 소켓을 사용해 클라이언트로 전송할 때 앞쪽에 헤더 정보를 붙입니다. 따라서 전송 함수 내부적으로 봤을 때는 "사용자가 전송하려는 데이터의 크기 + 헤더 크기" 만큼의 메모리가 필요하기 때문에 사용자 데이터를 바로 전송하지 않고 서버 내부 버퍼에 헤더와 사용자 데이터를 복사해서 한 개의 프레임을 구성한 다음 클라이언트로 전송합니다. 따라서 SendCommonFrameData 함수를 사용해서 사용자 데이터를 전송하는 경우 사용자 데이터의 크기만큼 메모리 복사가 발생합니다. 그래서 데이터가 큰 사용자 데이터를 매번 소켓 전송 버퍼로 복사하는 작업은 성능에 영향을 미치기 때문에 사용자가 데이터를 구성할 때 앞쪽에 HEADER_FRAME_SIZE 크기만큼 공간(헤더 정보가 저장될 공간)을 추가해서 데이터를 구성한 다음 SendCommonFrameDataEx 함수를 사용해서 데이터를 전송하면 사용자 데이터에 헤더 정보를 기록해서 전송하기

Naver Blog

오늘 금배씨 강좌는 하루 쉬어갑니다.

[금배씨 강좌]는 주말에는 녹화를 진행하지 않고 평일에만 진행하고 있습니다. 가능하면 '1일 1 금배씨'를 목표로 꾸준히 찾아뵙고자 노력하고 있는데 오늘은 제가 컨디션이 좋지 않아 목소리가 나오지 않네요. 내용을 준비해서 몇 번 녹화를 시도해보았지만 시청자분들께 좋은 품질의 강좌를 제공하기 어렵다고 판단하여 오늘은 부득이하게 녹화를 중지하기로 결정했습니다. 간단한 강좌지만 혹시라도 기다리는 분이 계실까 하여 간단하게 글 남깁니다. 빠른 시일 내에 좋은 컨디션으로 돌아와 유익한 강좌로 찾아뵙겠습니다. 감사합니다.

Naver Blog

[금배씨/C언어실습] 1차원 배열과 2차원 배열

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 금배씨 강좌에서는 1차원 배열과 2차원 배열을 구성하는 방법과 선언된 배열을 사용하는 방법에 대해 설명하겠습니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. #include <stdio.h> int main() { short a = 0, b = 1, c = 2, d = 3, e = 4, f = 5; // 0차 표현 printf("%hd, %hd, %hd, %hd, %hd, %hd,\n", a, b, c, d, e, f); return 0; } 위 예제는 아래와 같이 출력됩니다. 0, 1, 2, 3, 4, 5, 이 창을 닫으려면 아무 키나 누르세

Naver Blog

[LxMFC] LxAPI_RedrawDarkModeCaption 함수에 대하여

MFC로 만든 대화 상자 기반의 응용 프로그램은 아래와 같이 캡션 색상이 흰색으로 밝게 표시됩니다. 따라서 어두운 색상 테마를 사용하는 경우 캡션 색상은 항상 문제가 됩니다. 하지만 캡션의 색상을 직접 변경하는 작업이 생각보다 난이도가 있어서 저희도 그렇지만 많은 프로그래머들이 윈도우즈에서 제공하는 DWM API 함수를 사용해 캡션 색상을 어둡게 변경해서 사용합니다. 예를 들어, 다음과 같이 코드를 구성하면 아래와 같이 캡션 색상이 어둡게 출력됩니다. BOOL dark_mode = TRUE; // 윈도우 캡션을 어두운 색상으로 지정 DwmSetWindowAttribute(m_hWnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &dark_mode, sizeof(dark_mode)); 캡션에 다크 테마 적용하기 (타이틀 바를 어둡게 표시하기) 제가 소개하는 예제들이 배경을 어둡게 처리하다 보니 아래의 그림처럼 캡션이 너무 밝다는 피드백이 많았... blog.naver.co

Naver Blog

[LxMFC/실습과제] 스태프 관리 프로그램 - Step 1

LxMFC 라이브러리로 만들어진 관리 프로그램 형식의 예제가 부족하다는 피드백이 있어서 간단한 관리 프로그램 몇 가지를 실습 과제 형식으로 소개하려고 합니다. 그리고 이전 실습 과제에서 나온 피드백 중에 [Step 1]의 내용이 많아 [Step 1]의 실습이 제일 힘들다는 의견이 좀 있어서 이제부터는 단계를 좀 더 세분화해서 진행하도록 하겠습니다. 이번 실습 과제의 첫 번째 단계는 아래와 같은 형식의 프로그램을 만드는 것입니다. 이 프로그램은 스태프 관리하는 프로그램을 만든 것이고 예제로 구성하기 위해 스태프의 정보는 최소한으로 줄여 사용했습니다. [Step 1]에서는 특별한 정보 입력 없이 소스 코드에서 스태프 세 명의 정보를 추가해 목록으로 보여주는 기능만 구현하면 됩니다. 스태프 목록은 LxListBox 클래스를 사용해도 되고 LxListBoxEx를 사용해도 되지만 이번 실습에서는 LxListBoxEx 클래스를 사용해 구현할 생각입니다. 제가 답안으로 소개하는 소스 코드와 비교

Naver Blog

[금배씨/C언어실습] 동적 메모리 할당 - Step 1 (1차원 배열 형태로 메모리 할당하기)

이 강좌는 '금배씨'로 공부하는 분들을 위해 만든 실습 강좌입니다. 금배씨(금방 배우는 C언어)는 'Do it! C언어 입문' 책과 동영상 강좌로 공부하신 분들이 공부한 내용을 빠르게 복습할 수 있도록 만든 동영상 강좌입니다. 금배씨 목차: https://blog.naver.com/tipsware/222617024788 이번 금배씨 강좌에서는 Heap 영역에 동적으로 메모리를 할당하는 방법에 대해 설명합니다. 1차원 배열을 사용해서 stack 메모리를 사용하는 코드를 malloc, free 함수를 사용해 heap 메모리를 사용하는 코드로 변경하는 실습을 진행합니다. 강의를 시작할 때 사용한 기본 소스 코드는 다음과 같습니다. #include <stdio.h> int main() { char data[3] = { 1, 2, 3 }; // stack 메모리(1Mbytes)에 3바이트 할당 for (int i = 0; i < 3; i++) printf("%hhd, ", data[i]);

Naver Blog

[LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 2

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 1]을 실습하지 않았다면 [Step 1]부터 실습을 진행하세요. [LxMFC/응용예제] 자동 업데이트 프로그램 만들기 - Step 1 제가 네이버 블로그를 기반으로 자동 업데이트를 구현하는 예제는 몇 번 만들어서 소개한 적이 있습니다. ... blog.naver.com 일단 서버 버전의 기능이 너무 많이 추가되면 실습이 어려워질 것 같아서 업데이트 파일 목록을 구성하는 부분만 분리해서 [Step 2]로 구성했습니다. 그래서 프로그램의 UI가 아래와 같이 수정되었습니다. '상태'는 등록된 업데이트 파일을 일시적으로 보류 시킬 수 있습니다. 업데이트 파일이 '보류' 상태로 변경되면 이 파일은 업데이트에 사용되지 않습니다. '파일 경로'는 업데이트에 포함된 파일의 경로가 표시됩니다. 경로는 마우스 더블 클릭이나 F2 또는 'Space' 키를 눌러서 직접 편집을 하거나 '선택'에 표시된 '...'을 더블 클릭해서 파일 열기 대화

Naver Blog

[LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 3

이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 2]를 실습하지 않았다면 [Step 2]부터 실습을 진행하세요. [LxMFC/응용예제] 파일 자동 업데이트를 위한 서버 - Step 2 이 자료는 아래에 링크한 자료에 연결된 내용입니다. [Step 1]을 실습하지 않았다면 [Step 1]부터 실습을... blog.naver.com [Step 3]에서는 자동 업데이트 서비스를 위한 사전 정보를 구성하는 기능이 추가되었습니다. 클라이언트가 접속했을 때 요청하는 업데이트 가능 파일 목록이나 개별 업데이트 파일 내용을 클라이언트가 접속할 때마다 다시 구성하면 비효율적이고 다른 클라이언트와 리소스 공유 문제 그리고 서버 시스템 내구성과 관련된 이슈 문제가 생길 수 있습니다. 그래서 서비스 효율과 안정성을 높이기 위해 메모리를 활용하는 방법을 사용할 것입니다. 다만, 이 방법을 사용할 때 주의해야 할 점은 업데이트 서비스가 진행 중에는 업데이트 파일 목록이나 버전 정보를 변경하지

Naver Blog

기술에 대해 잘 모르면서 보고 싶은 것만 보면 봐야 할 것을 못 보게 됩니다.

요즘 C 언어 입문자들에게서 두드러지는 특징은 바로 '보고 싶은 것만 골라 보는' 단편적인 학습 방식입니다. 궁금한 부분만 인터넷 검색이나 AI에게 물어봐서 답을 얻고 당장 필요한 기능만 구현하려는 경향이 강합니다. 물론 빠르고 효율적인 학습이 중요한 시대입니다. 하지만 기본기를 다져야 하는 입문 단계에서는 이러한 방식이 오히려 독이 될 수 있습니다. 왜 '보고 싶은 것만' 보면 문제가 될까요? 축구 선수가 되고 싶은 학생이 기초 체력 훈련 없이 멋진 프리킥 동영상만 보고 그대로 따라 한다고 실력이 늘까요? 불가능합니다. 기초 체력이 없으면 따라 하고 싶은 그 슈팅 자체를 지속적으로 할 수 없다는 것을 깨닫게 될 것입니다. 운동이든 기술이든 체계적인 지식 기반 없이는 단단한 실력을 쌓기 어렵습니다. 필요한 것만 보고 따라 하는 행위는 자신의 기술로 흡수되지 못하고 쉽게 잊힙니다. 따라서 해당 기술에 대한 이해도가 떨어져 기술을 응용하는 단계에 도달할 수도 없습니다. 결국 지식 간의

1