추가된 기능 및 개선 사항

  1. 이미지 다중 선택기능 -  [파일 찾기] 시 ctrl+ 클릭 또는 shift+클릭 해서 여러 개의 이미지 파일 동시 선택 가능
  2. UI 개선 - 배경색, 상단바, 아이콘을 변경하여 더 깔끔해 보이도록 함

소스 코드(이미지 다중 선택 관련)

void CImageConverterDlg::OnBnClickedBtnopen()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	static TCHAR BASED_CODE szFilter[] =
		_T("이미지 파일 (*.BMP;*.GIF;*.JPG;*.JPEG;*.PNG)|")
		_T("*.BMP;*.GIF;*.JPG;*.JPEG;*.PNG;*.bmp;*.gif;*.jpg;*.jpeg;*.png|")
		_T("모든 파일 (*.*)|*.*||");

	CFileDialog dlg(TRUE, _T("*.jpg"), _T("image"), OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY, szFilter);
	// 다중 선택 시 리스트에 파일 목록 추가

	if (IDOK == dlg.DoModal())

	{
		for (POSITION pos = dlg.GetStartPosition(); pos != NULL;)
		{
			CString pathName = dlg.GetNextPathName(pos);

			int nPos = pathName.ReverseFind(_T('\\'));
			CString fileName = pathName.Mid(nPos + 1);

			if (!isDuplicatedFile(pathName))
			{
				int nIndex = m_FileList.InsertItem(m_FileList.GetItemCount(), fileName);
				m_FileList.SetItemText(nIndex, 1, pathName);
				m_FileList.SetCheck(nIndex, TRUE);
			}
		}
	}
}

OFN_ALLOWMULTISELECT 옵션을 추가 하여, 파일 탐색기를 열었을 때 복수의 파일을 선택 가능하게 만들었다.

파일을 다중선택을 지원할때는 GetStartPosition() 을 통해 루프를 돌며 선택한 파일을 모두 처리해야 한다.

isDuplicatedFile() 함수는 리스트에 같은 파일이 중복으로 들어가는 것을 막기 위해 넣었다.

리스트 추가 전에 리스트를 돌며 동일한 이름의 파일이 있으면 추가하지 않도록 작동한다.

다음 개발 과제

  1. webp 형식 지원(변경전 및 변경후 형식)
  2. 파일 저장 위치 선택 기능 추가

webp 형식 지원은 MFC 기본 라이브러리로 변환 가능한지 확인 필요.

불가능할 시 다른 라이브러리 사용 혹은  파이썬 병행 사용도 검토 필요

 현재는 기존파일 위치에 변환된 파일이 저장됨,

[저장 위치 선택] 버튼을 추가하여, 지정한 위치에 변환된 파일이 저장 가능하도록 기능 추가 예정 

 

GitHub 링크

https://github.com/Chaeyunbyun/Image_Converter

 

GitHub - Chaeyunbyun/Image_Converter: 이미지 형식 변환 프로그램 (jpg, jpeg, png, gif, bmp 등 지원)

이미지 형식 변환 프로그램 (jpg, jpeg, png, gif, bmp 등 지원) . Contribute to Chaeyunbyun/Image_Converter development by creating an account on GitHub.

github.com

 

이미지 파일 형식 변환이 필요할 때가 있는데, 

웹사이트는 무료 사용이 제한되어 있거나, 한번에 여러 파일 변환 등의 기능이 막혀 있는 경우가 많다.

 MFC의 CImage 를 이용해서 이미지를 간단하게 변환하는 프로그램을 개발하고자 함

 

프로그램 기능 설명

[파일 선택] 버튼을 누르면 파일 탐색기가 열린다.

여기서 변환할 이미지를 선택하면 하단 리스트 컨트롤에 추가 된다.

[삭제] 버튼을 누르면 리스트에서 체크된 항목은 리스트에서 삭제된다.

우측 상단 콤보 박스는 jpg, jpeg, png, gif, bmp 중에 변환할 파일 형식을 선택한다.

[이미지 변환] 버튼 누를 시 체크된 모든 파일이 변환된다.

 

다음 개발 과제

1. 파일 선택 시 복수 파일 선택 기능

2. UI 개선

3. 아이콘 추가

 

소스 코드

https://github.com/Chaeyunbyun/Image_Converter

 

GitHub - Chaeyunbyun/Image_Converter: 이미지 형식 변환 프로그램 (jpg, jpeg, png, gif, bmp 등 지원)

이미지 형식 변환 프로그램 (jpg, jpeg, png, gif, bmp 등 지원) . Contribute to Chaeyunbyun/Image_Converter development by creating an account on GitHub.

github.com

 

개인적으로 자주 사용하는것들만 정리함.

Win + R 입력 후 실행창에서 입력

업무나 pc 다룰때 알고있으면 편리한 경우가 많음

단축키 프로그램 /  설명
regedit 레지스트리 편집기
winver 윈도우 버전 확인
shell:startup 시작 프로그램
control 제어판
explorer 파일 탐색기
services.msc 서비스
calc 계산기
notepad 메모장
sinppingtool 화면 캡쳐
desk.cpl 시스템> 디스플레이 설정
cmd 명령 프롬프트
taskmgr 작업 관리자

 

'기타' 카테고리의 다른 글

XML -> PNG 파일 변환 사이트 (www.coolutils.com)  (0) 2026.08.12
SQLD 59회 합격후기  (0) 2026.01.27

https://www.coolutils.com/online/XML-to-PNG

 

Convert XML to PNG Online for Free | CoolUtils

DescriptionXML is a versatile kind of language, which resembles HTML. Although they seem to have pretty much in common, as both are based on tags and define documentsí content and structure, they cannot replace each other. First, HTML demonstrates data, w

www.coolutils.com

무료/  회원가입 불필요

XML-> PNG 를 드래그 앤 드롭 또는 파일 업로드로 간편하게 할 수 있다.

변환할 XML 파일을 저기 회색 박스 영역에 드래그하고 다운로드 버튼누르면 된다.

 

여러개의 파일을 한번에 변환은 회원 전용 기능이지만

하나씩해도 금방되서 이거만해도 충분할것같다

 

그밖에 이미지 파일 변환 기능 등 여러 기능이 있는데 나머지는 유료기능이라 안써봤다

'기타' 카테고리의 다른 글

Win + R 명령어 모음  (0) 2026.11.04
SQLD 59회 합격후기  (0) 2026.01.27

설명

서버에 ping을 전송하여 현재 정상적으로 통신이 되는지 확인하는 코드이다.

하단 코드에 대상서버는 필요에 따라 변경하면 된다.

응답처리부분을 추가 하면은 에러 코드를 확인하여 어떤 네트워크 문제가 있었는지도 확인 가능하다.

(ex: 권한 없음, 호스트 오류, 서버 오류)

 

전체 코드

#include <iostream>
#include <vector>
#include <string>
#include <afxstr.h>
#include <cstring>
#include <winsock2.h>
#include <mstcpip.h>
#include <iphlpapi.h>
#include <icmpapi.h>
#include <Windows.h>
#include <WinUser.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sstream>
#include <exception>
#include <ws2tcpip.h>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "iphlpapi.lib")

using namespace std;
// 특정 서버 ping 전송 테스트
bool PingtoHost()
{
	try
	{
		// 타겟 주소
		std::string target = "www.naver.com";
		DWORD pingTimeout = 1000;
		char sendData[] = "Ping Test";

		HANDLE hIcmpFile = IcmpCreateFile();
		if (hIcmpFile == INVALID_HANDLE_VALUE)
		{
			return false;
		}

		BYTE replyBuffer[1024];
		DWORD replySize = sizeof(replyBuffer);

		PICMP_ECHO_REPLY pEchoReply = (PICMP_ECHO_REPLY)replyBuffer;

		// 도메인 이름을 IP 주소로 변환
		sockaddr_in destAddr;
		ZeroMemory(&destAddr, sizeof(destAddr));
		destAddr.sin_family = AF_INET;

		struct addrinfo* result = nullptr;
		struct addrinfo hints;
		ZeroMemory(&hints, sizeof(hints));
		hints.ai_family = AF_INET; 

		int iResult = getaddrinfo(target.c_str(), NULL, &hints, &result);
		if (iResult != 0)
		{
			IcmpCloseHandle(hIcmpFile);
			WSACleanup();
			return false;
		}

		destAddr.sin_addr = ((struct sockaddr_in*)result->ai_addr)->sin_addr;


		// ping 전송
		DWORD dwResult = IcmpSendEcho(
			hIcmpFile,
			destAddr.sin_addr.s_addr, // 변환 IP 주소
			sendData,
			sizeof(sendData),
			NULL,
			replyBuffer,
			replySize,
			pingTimeout
		);

		if (result == 0)
		{
			DWORD error = GetLastError();
			CString errorMessage;
			return false;
		}
		else
		{
			return true;
		}

		IcmpCloseHandle(hIcmpFile);
	}
	catch (std::exception ex)
	{
	}
}

 

GitHub

https://github.com/Chaeyunbyun/Network_Utils/blob/main/Http_Utils.cpp

 

Network_Utils/Http_Utils.cpp at main · Chaeyunbyun/Network_Utils

Http/ Https 통신 및 소켓 통신 관련 함수. Contribute to Chaeyunbyun/Network_Utils development by creating an account on GitHub.

github.com

 

'C++, MFC' 카테고리의 다른 글

C++ 클래스 정리  (2) 2025.08.14

헤더

#include <bitset>

선언

 // 사이즈 5인 이진 배열
 bitset<5> bit;

10진수 -> 2진수

int n = 10;
bitset<6> b(n);

2진수-> 10진수

bitset<6> bit("1010");
int n = bit.to_ulong();

비트 검사

// 모든 비트가 1이면 true
bit.all()
// 하나 이상의 비트가 1이면 true
bit.any()
// 모든 비트가 0이면 true
bit.none

bitset는 여러 비트연산을 할 수 있도록 지원한다.

비트마스크 연산 또는 이진수 변환시 유용하게 사용가능하다.

 

비트마스크 연산

and, or, not , xor, 시프트 연산 등이 있다.

'C++, MFC > STL 정리' 카테고리의 다른 글

[c++ STL정리] - vector  (0) 2025.02.04

https://www.acmicpc.net/problem/15688

문제 분석

입력된 숫자들을 비내림차순으로 정렬하여 출력하는 문제입니다.

비내림차순하고 오름차순이랑 뭐가다른진 모르겠네요. 

vector로 받은 다음에 sort 로 정렬해서 오름차순으로 출력해서 풀었습니다.

 

소스 코드

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
using std::cin;
using std::cout;

int main()
{ 
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int n;
	cin >> n;
	vector<int> v(n);
	for (int i = 0; i < n; i++)
	{
		int k;
		cin >> k;
		v[i] = k;
	}
	sort(v.begin(), v.end());
	for (auto a : v)
	{
		cout << a << "\n";
	}
}

 

'백준 > 실버' 카테고리의 다른 글

[백준 1622]- 공통 순열(c++)  (0) 2026.04.03
[백준 15729]- 방탈출(c++)  (0) 2026.03.25
[백준 3060]- 욕심쟁이 돼지(c++)  (0) 2026.03.23
[백준 14916] - 거스름돈(c++)  (0) 2026.03.16
[백준 1340] - 연도 진행바  (0) 2026.03.05

https://www.acmicpc.net/problem/1622

문제 분석

순열이라 되어있지만 실제론 문자열 a, b 에서 일치하는 문자들을 붙이면된다.

사전순으로 출력 하라고되어 있으므로 정렬 후에 출력 하면 된다.

string 문자열도 sort() 를 사용해서 바로 정렬 할 수 있으니 사용해 주었다.

for (int i = 0; i < a.size(); i++)
	{
		for (int j = 0; j < b.size(); j++)
		{
			if (a[i] == b[j])
			{
				tmp += a[i];
				a[i] = ' ';
				b[j] = ' ';
				break;
			}
		}
	}

같은 문자가 여러 번 나오는 경우 중복으로 카운트 하는것을 방지하기 위해

해당위치의 문자를 공백으로 바꾸고,

break 를 빠져나온다.

소스코드

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
using std::cin;
using std::cout;

int main()
{ 
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	string a, b;
	while (getline(cin, a) && getline(cin, b))
	{
		string tmp = "";
		for (int i = 0; i < a.size(); i++)
		{
			for (int j = 0; j < b.size(); j++)
			{
				if (a[i] == b[j])
				{
					tmp += a[i];
					a[i] = ' ';
					b[j] = ' ';
					break;
				}
			}
		}
		sort(tmp.begin(), tmp.end());
		cout << tmp <<"\n";
	}
	return 0;
}

 

'백준 > 실버' 카테고리의 다른 글

[백준 15688]- 수 정렬하기(c++)  (0) 2026.04.03
[백준 15729]- 방탈출(c++)  (0) 2026.03.25
[백준 3060]- 욕심쟁이 돼지(c++)  (0) 2026.03.23
[백준 14916] - 거스름돈(c++)  (0) 2026.03.16
[백준 1340] - 연도 진행바  (0) 2026.03.05

+ Recent posts