일반적으로 MFC등과 같은 프로그램을 개발할 때, "C:\Program Files\..."와 같은 파일 위치를 참조하거나 레지스트리의 HKLM/softwoare/... 등의 키를 참조하는 등의 일을 진행한다. 더 나아가서는 C:\Windows\System32\drivers\etc\hosts 와 같은 파일을 읽거나 쓰는 등의 일을 담당할 수도 있다. XP 이하, 9x, NT, 200x 등에서 어드민 계정으로 로그인 하여 아무 이상없이 작동하던 코드가 있다면, 이를 비스타 하에서 재 컴파일하서 돌려보면 제대로 되기는 커녕, 시스템 call에서 계속 에러가 발생하기 쉽다. 가장 큰 이유는, 기존과 같이 로그인 한 계정이 admin계정이면 거기에서 실행되는 모든 프로그램은 모두 admin 계정을 갖는 기존 경우..
MFC에서 다이얼로그 내에 컨트롤의 위치 좌표를 구하려는데.. 왠지 GetClientRect일것 같은데 이건 위치는 안구하고 크기만 구한다. GetWindowRect를 하면 바탕화면 전체 대비 컨트롤 위치가 나온다. 그렇다면 .. 쉽게 this->GetWindowRect로 구한 좌표해서 컨트롤.GetWindowRect 로 구한 좌표를 빼주면 땡 아닌가? 근데 이러면 간지가 안난다.. Static Control을 m_static으로 변수 추가 한 후 CRect rect; m_static.GetWindowRect(&rect); ScreenToClient(&rect); 해주면 위치 딱 나온다~ 근데 문제는 제목 표시줄 크기는 제외하고 구하기 때문에 결국에 보정은 해줘야 한다는거;;;
잘은 모르겠지만 이것저것 뒤져보니 꽤 나왔다. 일단 응용프로그램을 여러개로 쪼개서 만든 후 ShellExecute에서 lpOperation값을 runas로 하여 실행하는게 가장 간단한 것 같다. 이 경우 관리자 권한으로 상승 시킬지 요구하는 창이 하나 뜬다고 한다. 그리고 COM ATL을 써서 하는 The COM Elevation Moniker 라는게 있는 것 같다. 링크는 http://msdn.microsoft.com/ko-kr/library/ms679687.aspx http://blogs.msdn.com/b/vistacompatteam/archive/2006/09/28/cocreateinstanceasadmin-or-createelevatedcomobject-sample.aspx 이거고 예제 소스는 ..
DLL이나 LIB 파일 추가 하는 방법! Visual Studio에서는 프로젝트 속성 들어가서 해야되는지 알았는데.. 알고보니 간단한게 있었다.. 헤더는 그냥 추가하면 되고 #pragma comment(lib, "라이브러리이름") 써주면 되더라.. 예를 들어 NetApi32.lib 파일을 라이브러리로 추가할려면 #include //NetApi32의 헤더 #pragma comment(lib, "NetApi32") //또는 #pragma comment(lib, "NetApi32.lib") 해주면 된다!!
virtual은 3가지 정도로 사용됩니다. OOP에 대한 개념이 잡혀있어야 설명을 제대로 이해하실 수 있을텐데.. 최대한 쉽게 설명 해보도록 하죠. 일단 OOP 개념 중 클래스 상속에 대한 것은 잘 아실겁니다. 이마저도 모르신다면 virtual에 대해서는 전혀 궁금해하실 필요가 없으니 그냥 넘어가시면 되구요.. 진도를 앞서나가는 호기심은 해롭습니다! :-) class Bird { // 중략 }; class Chicken : public Bird { // 중략 }; class Eagle : public Bird { // 중략 }; 와 같은 구조가 있다고 합시다. C++에서 public 상속은 is-a 관계로 설명할 수 있는데 쉽게 말하자면 Chicken is a Bird. 입니다. 따라서 Bird *pBi..
FTP를 사용 할수 있게 처음 설정 하는부분과 FTP에 파일을 Upload 한후 FTP에 Upload 한 파일을 다시 Download 한후 FTP에 Upload 한 파일을 Delete 하는 간단한 예제 입니다. 장황한 설명보다는 간단하게 만들어 놓은 예제가 공부하기 쉬울거 같아 몇자 글적여 봅니다. ^^ 함수 각각의 옵션이나 설명은 MSDN을 참조하세요 ^^ // FTP Open HINTERNET m_hOpen = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); if(NULL == m_hOpen) { AfxMessageBox("Open Error"); return; } HINTERNET m_hConnect = InternetConnect..
int main(){while(bLove);return FALSE;} 내가씀
- Total
- Today
- Yesterday
- winapi
- API
- driver
- 드라이버
- db
- Python
- 음악
- java
- Quiz
- 리눅스
- C++
- jni
- 안드로이드
- source
- kering
- database
- android
- NDK
- it
- algorithm
- C
- MFC
- jni강좌
- AWS
- linux
- Troubleshooting
- 프로그래밍
- Cloud
- Visual C++
- gcc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |