집에서 심심하면 만들고 있는 토이 프로젝트가 있는데 익숙치 않은 mfc라 힘들다~ 위와 같이 기본 list control을 생성 후각 컬럼과 열에 data를 넣어준 뒤 클릭벤트를 걸어주면row 전체가 선택이 되는게 아니라 첫번째 열(column)만이 선택이된다. 이럴때 마법과 같은 코드 한줄이면 전체 선택이 된다. 리스트컨트롤 변수를 생성하여 아래의 코드를 onInitDialog쪽에 쳐주면 끝 CListCtrl test;test.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); LVS_EX_FULLROWSELECT만 적용된 경우 LVS_EX_FULLROWSELEC | LVS_EX_GRIDLINES 적용된 경우 그 이외에 스타일 추가는 msdn에 있을..
void CAVI_PROJECTDlg::OnBnClickedBtnFind() { BROWSEINFO BrInfo; TCHAR szBuffer[512]; // 경로저장 버퍼 ::ZeroMemory(&BrInfo,sizeof(BROWSEINFO)); ::ZeroMemory(szBuffer, 512); BrInfo.hwndOwner = GetSafeHwnd(); BrInfo.lpszTitle = _T("파일이 저장될 폴더를 선택하세요"); BrInfo.ulFlags = BIF_NEWDIALOGSTYLE | BIF_EDITBOX | BIF_RETURNONLYFSDIRS; LPITEMIDLIST pItemIdList = ::SHBrowseForFolder(&BrInfo); ::SHGetPathFromIDList(..
1. OCI (Oracle Call Interface) - Application과 Oracle Database와 상호작용할 수 있도록 오라클에서 지원하는 Low-Level api이다. 일반적으로 C/C++에서 많이 사용된다. 그런데 OCI 프로그래밍은 Low-Level API를 사용하는것이라 매우 어렵다. 다만 ODBC처럼 Oracle Client를 설치하지 않고 oci 관련된 dll을 같이 배포할때 포함해주면 되기 때문에 사용자가 oracle 을 설치하지 않아도 된다는 이점이 있다. 물론 단점은 위에서 언급했듯이 개발자가 사용하기 쉬운 API는 아니라른점. 2. OCCI (Oracle C++ Call Interface) - 약자와 같이 OCCI는 C++에서 오라클DB를 조작할 수 있게금 도와주는 API..
1. JNI 변수 타입 JNI 변수 타입은 Java의 변수를 C++/C 에서 사용 할수 있게끔 호환해주는 변수 타입이다. jni.h를 인클루드하면 사용이 가능한데 자세한 정보는 아래의 표를 보면 알 수 있다. JAVA C++/C C++/C 배열 boolean jboolean jbooleanArray byte jbyte jbytArray char jchar jcharArray short jshort jshortArray int jint jintArray long jlong jlongArray float jfloat jfloatArray void jvoid jvoidArray Object jobject jobjectArray String jstring jstringArray java의 기본 변수형은 c++/..
앞서 C++에서 JNI를 사용하기위해 프로젝트 셋팅작업을 끝냈습니다. 이번에는 간단하게 Java class를 생성하여 클래스안에 있는 메서드를 호출하는 예제를 만들어보겠습니다. 코드는 어려운게 없으니 천천히 따라오시면 쉽게 구현하실수 있습니다. 1. Hello.class 만들기 public class Hello { void sayHello() { System.out.println("Say HELLOOO"); } } 생성자가없는 Hello.java 파일입니다. 간단하게 sysout으로 인사말을 프린트 하는 메서드입니다. 위의 코드를 코딩하셔서 java파일로 만드시고 javac 명령어를 사용하여 java파일은 class파일로 컴파일 시켜주세요 javac Hello.java 위에서 생성한 Hello.class..
JNI란 JAVA에서 NATIVE영역으로 들어가 호출 또는 NATAVIE에서 JAVA로 호출하는 인터페이스를 말한다. 쉽게 말해 JNI는 JAVA와 다른 언어를 연동하는 라이브러리? 솔루션? 이라고 말할 수있다. JAVA JNI C/C++ 이런 형태로 서로 다른 언어에서 메소드(함수)를 호출하여 사용할 수 있는데 기존에 작성된 방대한 C/C++ 라이브러리를 JAVA에서 이용하기 위한 방법으로 사용된다고 한다. 회사 프로젝트로 이번에 JNI를 담당하게 됬는데 생각보다 C++에서 사용하기위해 JAVA함수를 호출하는 예제가 없거나 너무 옛날 글들이 많았다. 수많은 뻘짓을 통해 성공을 했는데 막상 해보고나니 소스가 어렵다기보단 프로젝트 환경설정해주는거에서 막혔던 부분이였다. 포스팅을 하기 앞서 이번 가이드에서 ..
소켓 프로그램 프로토콜별 계층 구조국제표준화기구인 ISO에서는 서로 다른 긱종의 컴퓨터 간에 이루어지는 통신을 위해 OSI 7계층을 규정하고 있다. TCP/I 프로토콜에서는 TCP/IP 4계층 구조를 규정하고 있다. 이와 같이 계층별로 역할을 나누어서 규정하는 이융는 상호 접속에 필요한 통신 규약을 정의하고, 유사 기능을 갖는 모듈을 동일 계층으로 묶기 위해서이다. OSI 7계층 구조나 TCP/IP 4계층 구조를 설명하기에 앞서 프로토콜 계층 구조를 이해하기 쉽도록 일상의 예를 가지고 설명하고자 한다. 다른 지역의 친구에게 편지를 보내는 경우이다. 1. 사용자 계층- 사용자 S는 친구에게 보낼 편지를 작성하고 봉투에 넣는다. 겉면에 보내는 사람과 받는 사람의 주소를 적은 후 우편함에 넣는다.- 이 과정에..
가상함수 가상함수는 virtual 예약어를 앞에 붙여서 선언한 메서드를 말한다. 따라서 가상 함수라는 말은 메서드라는 말을 내포하여, 이 가상 함수는 기본적으로 '자기 부정'을 전제로 작동한다. 달리 말해 파생 형식 에서 메서드를 재정의하면 가거의 정의가 완전히 무시된다는 특징이 있다. java와 비교하자면 자식클래스에서의 부모클래스의 함수를 오버라이드 하는 개념으로 이해했다. 하지만 재정의 이후에 호출하는 과정에서는 자바와는 조금 다른 방식을 취한다. 가상함수는 다음과 같이 선언한다.virtual void PrintData(); // #include "stdafx.h" #include using namespace std; class CMyData { public: virtual void PrintDat..
클래스 템플릿- '클래스 템플릿'은 클래스를 찍어내는 모양자라고 생각하면 이해하기 쉽다. 그리고 이 모양자에 구멍이 뚫려 있는 부분은 '자료형'이다. 클래스 템플릿은 다음과 같인 선언할 수 있다. templateclass 클래스명 {.....} 함수 템플릿처럼 선언에 앞서 template 예약어와 tpyename 예약어를 적어 넣어야한다. 그러나 함수 템플릿과 달리 인스턴스를 선언할떄는 typename을 반드시 적어야 한다. templateclass MyData{public(T param) : m_Data(param) { }T GetData() const { return m_Data; } operator T() { return m_Data; }void SetData(T param) { m_Data = p..
일반적으로 소켓 프로그램은 서비스를 요청하는 클라이언트측과 클라이언트로부터의요청을 받아 서비스하는 서버측, 이렇게 두 곳에 상주하는 프로그램으로 구성된다. 우리가 구현할 소켓 스포르갬은 c언어로 작성했던 한 줄 짜리 문자열 출력 프로그램에 네트워크 기능을 부여하여 호스트사이세서 서로 통신하며 자료를 송수신할 수 있게 한것이다. 즉 클라이언트 프로그램이 네트워크상에서 통신 채널을 통해 서버측에 연결되면 서버 프로그램은 즉시 문자열 hello world를 클라이언트에게 전송하고 클라이언트 프로그램은 전송받은 문자열을 화면에 출력한다. 일반 프로그램에서는 문자열 출력이 한 컴퓨터에서 이루어졌던 것에 비해 소켓프로그램에서는 네트워크상에 있는 호스트 간에 문자열을 받아 출력하기 때문에 소켓과 같은 네트워크 연결 ..
- Total
- Today
- Yesterday
- 대항해시대
- OSI 7Layer
- 빈파일
- 정보처리기사 실기 후기
- Linux
- JNI 시그니처
- 대항해시대 넷마블 런처
- JNI
- 합격 후기
- 위대한 쇼맨 후기
- 다클 빈
- 대항해시대 로그인
- 위대한 쇼맨 ost
- 대항해시대 런처
- 구글 클라우드 플랫폼
- 데스큐어
- 대항해시대 다음 런처
- JNI INVOKE
- 다클 코드
- 대항해시대 다클
- React.js
- 정보처리기사 2018 2회
- 정처기 실기
- EACCES: permission denied
- vite.js
- 폴더선택다이얼로그
- 위대한 쇼맨
- HTTPie
- JNI SIGNITURE
- lxd
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |