VS(비쥬얼 스튜디오, Visual Studio)사용시 가끔 접할 수 있는 문제.. 엄밀히 말하면 PCH(미리 컴파일된 헤더)는 에러는 아니구요.. 하지만 코딩하다보면 아래와 같은 문장을 가끔 볼 수 있죠. unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file 프로젝트를 생성할때 '미리 컴파일된 헤더'에 체크한 기억이 있으세요? 그것땜에 그렇습니다. 미리 컴파..
#include "stdafx.h" int *returnarray(int*); int _tmain(int argc, _TCHAR* argv[]) { int k[10] = {10,9,8,7,6,5,4,3,2,1}; int i; returnarray(k); for(i = 0;i < 10;i++) { printf("%d\n",i); } return 0; } int *returnarray(int a[]) { int i; for(i = 0;i < 10;i++) { a[i] = i; } return a; } int a[]로 선언한 배열에서.. a 라고만 적어주면 배열의 주소값을 의미합니다. 그래서.. 포인터형 함수인 returnarray가 return a를 해주면 a배열의 첫번째 주소를 반환합니다. 주소를 건드린 ..
extern을 사용하면 됩니다. extern을 사용하면 '이 변수는 이미 사용되었으니 컴파일 하지 말자'라고 컴파일러가 인식하고 다른 프로젝트내의 동일한 이름을 가진 다른 변수에서 값을 끌어다가 사용합니다. main.h를 사용하는 a.cpp와 b.cpp에서 동일한 전역변수 int t를 사용하고 싶다면 main.h에다가 extern int t; 를 선언해놓고 a.cpp나 b.cpp 둘중 하나에다가 전역변수로 int t;를 선언하면 됩니다. 둘다 선언하면 안돼요. 한곳에만 선언해야해요. 꼭 헤더에다 할 필요는 없습니다. a.cpp랑 b.cpp랑 c.cpp가 있고 a에 int t;가 선언되있는데 b랑 c에서 t를 사용하고 싶으면 각각 extern int t;를 선언해 주면 됩니다~ 근데 이러면 귀찮겠죠? ㅎㅎ..
http://www.winapi.co.kr 의 '더블 버퍼링' 강좌 부분에서 가장 눈에 띄는 부분. 이 코드에서 흔히 오해하기 쉬운 것이 있는데 메모리 비트맵인 hBit와 메모리 DC인 hMemDC와의 관계이다. GDI 출력 함수들은 반드시 DC 핸들을 요구하며 비트맵에 출력하기 위해서는 이 비트맵을 선택하고 있는 메모리 DC의 핸들이 필요하다. 그래서 화면 DC와 호환되는(=비트맵과 호환되는) hMemDC를 생성하고 여기에 비트맵을 선택한 후 출력했다. 이 DC는 어디까지나 비트맵 출력을 위한 임시 DC이므로 비트맵을 다 작성하고 난 다음에는 해제되어야 한다. 더블 버퍼링에서 내부 버퍼라고 칭하는 것은 비트맵이지 메모리 DC가 아니다. 메모리 DC는 비트맵을 선택하기 위해 잠시만 사용되는 DC일 뿐인데..
1. 유닉스에서의 파일 유닉스에서의 파일이 가지는 의미는 타 OS들과는 다른 독특한 의미를 지닌다. "유닉스 시스템에서는 모든것이 파일로 돌아간다" 란 말이있다. 장치나 혹은 네트웍통신을 위한 소켓,또한 파이프, FIFO등을 다룰때도 파일개념이(실지로 파일이다.)적용되기 때문이다. 그만큼 파일이 중요하기 때문에 우리는 가장 처음 LOW LEVEL(저수준) 파일입 출력을 보겠다. 2. 왜 LOW LEVEL File IO 인가? 일반적으로 C프로그래밍을 하면서 printf()나 scanf()등의 입축력 함수들을 많이 다뤄봤을것이다(이들을 표준 라이브러리라 한다). 하지만 우리가 여기서 습득할 함수들은 일명 System Call 함수 즉, 커널에서 제공해주는 저수준의 함수이다. 이말은 그만큼 더 커널,시스템에..
Edit Control에는 WM_COPY라는 메세지가 있는데요, Edit Control에서 WM_COPY를 사용 할 경우 셀렉트된 부분을 복사하게 되지요. 하지만 셀렉트 하지 않고 Edit Control내의 모든 내용을 한번에 복사 할 수 있습니다. 이렇게~ SendMessage(Edit1,EM_SETSEL,0,-1); SendMessage(Edit1,WM_COPY,0,0); EM_SETSEL은 선택 영역의 시작과 끝점을 변경 하는 메세지인데요, wParam으로 시작점, lParam으로 끝점을 전달합니다. wParam에 0, lParam에 -1을 넣으면 전체 선택이에요 :) 아 그리고 wParam이 -1이면 선택영역을 해제하게 된답니다! p.s>Edit Control에 지정된 문자를 샥~ 하고 입력해주고..
분명히 WM_LBUTTONDBLCLK: 라는 더블클릭 메세지가 존재함에도 불구하고 더블클릭 할 경우 실행되지 않아요. 어떻게 해결해야 할까요? 윈도우를 생성할 때 style에다가 CS_DBLCLKS를 추가해 주면 됩니다~~ wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; 이렇게요~ 그리고.. 리스트박스에서 더블클릭 했을때의 메세지는 LBN_DBLCLK:인데.. 이것역시 그냥은 먹지 않아요. 역시나~ 생성할때 스타일에 LBS_NOTIFY를 써줘야 합니다. hList=CreateWindow("listbox",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | LBS_NOTIFY,10,10,300,300,hWnd,(HMENU)..
프로그래밍 되어있는 소스들을 건들다 보면 #ifdef #ifndef #endif #include #define 이런것들을 볼 수 있는데~~ '전처리기'라고 하죠~ #include와 #define은 모두 아실테고.. 나머지 세개를 볼까요? 너무나 쉽습니다 #ifdef STAR //STAR가 define되어 있다면 #define A B #endif #ifndef STAR //STAR가 define되어있지 않다면 #define A C #endif 이게 다에요~ #endif는 반드시 #ifdef또는 #ifndef와 함께 쓰입니다. stdafx.h를 보면 #define WIN32_LEAN_AND_MEAN // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다. // Windows 헤더 파일: #incl..
- Total
- Today
- Yesterday
- source
- Cloud
- 드라이버
- Quiz
- 프로그래밍
- 안드로이드
- C++
- driver
- MFC
- AWS
- it
- android
- winapi
- 리눅스
- NDK
- db
- jni
- Visual C++
- jni강좌
- API
- gcc
- Troubleshooting
- C
- linux
- java
- kering
- Python
- database
- algorithm
- 음악
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |