2013.07.08 21:09


1. 아이콘 변경하는 방법.

 

첫째, 우선 비쥬얼 스튜디오를 끈다.

둘째, "res" 폴더에 보면 "프로젝트이름.ico" 라는 파일이 있다. 이것을 본인이 원하는 아이콘으로 대체.

셋째. 비쥬얼 스튜디오를 열어서, 재컴파일 하면, 아이콘이 변경되어 있다.

 

- 주의 사항 -

반듯히 첫째 과정을 거쳐야 합니다.

 

2. 프로그램 버전 및 정보 고치기

 

프로젝트의 리소스뷰어에 보면, 프로그램 버전 및 정보에 관련된 리소스가 있습니다.

잘 찾아 보시면 있습니다.

이 부분을 수정해서, 고친다.

재컴파일 하시면 됩니다.

 

3. Release 로 배포하기

 

프로젝트 속성에 보면,

공유 DLL 을 사용할지, 정적 라이브러리를 사용할지 , 정적 API를 사용할지 등

여러가지 옵션이 있습니다.

그중 정적인것을 선택하시면 DLL 배포도 필요하지 않습니다.


MFC 제작된 프로그램을 다른 컴퓨터에서 실행하려고 하면 에러 메세지가 뜨면서 실행이 되질 않는다 (초기화 할 수 없다나..DLL이 없다나..)

    1) 프로젝트 속성->구성 속성(Configuration Properties)->일반(General)의 MFC사용(Use of MFC)를 Static Library 사용으로 바꾼다.

    2) 프로젝트 속성-> C/C++ -> 코드 생성(Code Generation)에서 런타임라이브러리(Runtime Library) 항목을  MD에서 MT로 변경해준다.

    3) Release 모드로 컴파일 한다.

이렇게 하면 런타임이 설치되지 않은 컴퓨터에서도 실행이 된다.




 

단 GDI+ 를 사용하시거나 다른 라이브러리를 사용하신 프로젝트라면 관련 라이브러리나 DLL 은 배포하셔야 합니다.

 

그리고 Release 로 재 컴파일 하면, 그것은 바로 배포가 가능합니다.



Posted by injunech
2013.07.06 23:48


CString 사용 예제
 

1. 문자열 복사 하기

단순히 대입만 하면 된다.


CString str1("어쩌구");

CString str2;


str2=str1;       //대입

str2='A';        //단일문자

str2="ABC";   //문자열


2. 문자열 추출 하기

Left, Mid, Right 를 사용하여 추출한다. 직관적으로 왼쪽,중간,오른쪽이라는 것을 알 수 있다.


CString str1("ABCDE");

CString str2;


//왼쪽에서부터 i 개의 글자를 추출하여 Str2에 넣음

str2=str1.Left(i);


//오른쪽에서부터 i개의 글자를 추출하여 Str2에 넣음

str2=str1.Right(i);


//중간에 a번 건너뛰고 i개의 글자를 추출하여 Str2에 넣음

str2=str1.Mid(a,i);


EX) 

str2=str1.Left(3);

printf("%s",str2);       //"ABC"


str2=str1.Right(2);

printf("%s",str2);       //"DE"


str2=str1.Mid(2);

printf("%s",str2);       //"CDE"


str2=str1.Mid(2,2);

printf("%s",str2);       //"CD"


3.문자열 연결하기

신기하게도 더하기 처럼 사용한다.


CString str;


str = "ab";
str = str + "c" + "d";
str += "e";
printf( str );               // "abcde"


4.문자열 비교하기

비교하여 정수를 리턴한다


CString str( "ABC" );
int bRet;


bRet = str.Compare( "ABC" );
//  0 , 같음 "ABC" == "ABC"

bRet = str.Compare( "abc" );
// -1 , 작음 "ABC" < "abc"
 
bRet = str.Compare( "123" );
//  1 , 큼   "ABC" > "123"

bRet = str.CompareNoCase( "abc" );
//  0 , 같음 "ABC" == "abc"

bRet = str.CompareNoCase( "ABC" );
//  0 , 같음 "ABC" == "ABC"


// oprator ==, !=, <, >, <=, >=

( str == "ABC" ) ?  "true" : "false"         // true
( str != "ABC" )  ?  "true" : "false"        // false
( str <  "ABC" ) ?  "true" : "false"        // false
( str >  "ABC" ) ?  "true" : "false"        // false
( str <= "ABC" ) ?  "true" : "false"       // true
( str >= "ABC" ) ?  "true" : "false"       // true



5.문자열 검색하기

찾을 문자열을 쓰면 성공/실패 리턴



int nIndex;
CString str("abcde abc");


nIndex = str.Find( 'a' );
//  0, 성공

nIndex = str.Find( 'k' );
// -1, 실패

nIndex = str.Find( "bc" );
//  1, 성공

nIndex = str.Find( "bcdef" );
// -1, 실패

nIndex = str.Find( "abc", 5 );      //5번째 이후부터 찾고, 찾은 위치 리턴
//  6, 성공

nIndex = str.ReverseFind( 'e' );  //뒤에서부터 찾아 위치 리턴
//  4, 성공




6. 문자세트 검색하기

과연 쓸모가 있을까 하는 기능

가장 비슷한 문자열을 찾아 준다고 하는데...


int nIndex;
CString str( "abcde abc" );


nIndex = str.FindOneOf( "1c23e" );   //이것같은 경우는 c를 찾아서 위치값리턴한다.
//  2, 성공

nIndex = str.FindOneOf( "123" );       //같은게 없으니까 당연히 실패
// -1, 실패



7. 문자세트 추출하기

추출이 진짜 추출이 아닌것같다. 문자열 걸러내기가 더 어울리는 것같은데...ㅎ

 

CString str( "age is 30 ~*^^*" );
CString spnstr;
 

// str은 변하지 않습니다.
// 소문자 a ~ z 그리고 공백 문자가 포함된 문자열까지 추출합니다.

spnstr = str.SpanIncluding( "abcdefghijklmnopqrstuvwxyz" );

// str      출력시   "age is 30 ~*^^*"
// spnstr 출력시   "age is "

 

// "~!@#$%^&*()-=_+[]{},.<>/?;:'`" 를 포함하지 않는 문자열까지 추출합니다.

spnstr = str.SpanExcluding(" ~!@#$%^&*()_=+[]{},.<>/?;:'`" " );

// str      출력시    "age is 30 ~*^^*"
// spnstr 출력시    "age is 30"

 

 

 

8. 문자열의 공백 및 문자 제거하기

제거하고 원래 문자열에 저장까지...이걸쓸껄...ㅋ

 

CString str1( "  abcd \t\n" );
CString str2( "abcd1234" );
CString str3( "(***abcd1234***)" );
 
str1.TrimLeft();                //아무것도 안쓰면 공백 제거하기 왼쪽부터~
// "abcd \t\n"

 

str1.TrimRight();              //\t\n은 개행문자인데 따로 지정안해도 지워져버린다. 오른쪽~
// "abcd"

 

str2.TrimLeft( 'a' );           //특정문자 지정해서 지우기 왼쪽부터~
// "bcd1234"

 

str2.TrimRight( "234" );      //오른쪽부터~
// "bcd1"

 

str3.TrimLeft( "(*" );          //해봐야겠는데...
// "abcd1234***)"

 

str3.TrimRight( "*)" );         //왜 자동으로 **마저 지워지지?
// "abcd1234"



Posted by injunech
2013.07.06 15:09


KeyKey Code
048
149
250
351
452
553
654
755
856
957


KeyKey Code
A65
B66
C67
D68
E69
F70
G71
H72
I73
J74
K75
L76
M77
N78
O79
P80
Q81
R82
S83
T84
U85
V86
W87
X88
Y89
Z90


KeyKey Code
F1112
F2113
F3114
F4115
F5116
F6117
F7118
F8119
F9120
F10121
F11122
F12123


KeyKey Code
Number Pad 096
Number Pad 197
Number Pad 298
Number Pad 399
Number Pad 4100
Number Pad 5101
Number Pad 6102
Number Pad 7103
Number Pad 8104
Number Pad 9105


KeyKey Code
BACKSPACE8
TAB9
ENTER13
SHIFT16
CTRL17
ALT18
PAUSE/BREAK19
CAPS LOCK20
ESCAPE27
PAGE UP33
PAGE DOWN34
END35
HOME36
LEFT ARROW37
UP ARROW38
RIGHT ARROW39
DOWN ARROW40
INSERT45
DELETE46
LEFT WINDOW KEY91
RIGHT WINDOW KEY92
SELECT KEY93
MULTIPLY106
ADD107
SUBTRACT109
DECIMAL POINT110
DIVIDE111
NUM LOCK144
SCROLL LOCK145
SEMI-COLON186
EQUAL SIGN187
COMMA188
DASH189
PERIOD190
FORWARD SLASH191
GRAVE ACCENT192
OPEN BRACKET219
BACK SLASH220
CLOSE BRAKET221
SINGLE QUOTE222


'Computer > CPP' 카테고리의 다른 글

멀티바이트와 유니코드  (0) 2013.07.27
BroadCasting 참고 코드  (0) 2013.07.09
Virtual Key Code  (0) 2013.07.06
키보드 이벤트 처리하기  (0) 2013.07.05
Visual Studio 2012 단축키  (0) 2013.07.05
소켓통신  (0) 2013.07.05


Posted by injunech