MFC 제작된 프로그램을 다른 컴퓨터에서 실행하려고 하면 에러 메세지가 뜨면서 실행이 되질 않는다 (초기화 할 수 없다나..DLL이 없다나..) 1. 프로젝트 속성->구성 속성(Configuration Properties)->일반(General)의 MFC사용(Use of MFC)를 Static Library 사용으로 바꾼다. 2. 프로젝트 속성-> C/C++ -> 코드 생성(Code Generation)에서 런타임라이브러리(Runtime Library) 항목을 MD에서 MT로 변경해준다. 3. Release 모드로 컴파일 한다. 이렇게 하면 런타임이 설치되지 않은 컴퓨터에서도 실행이 된다.
와.... 진짜 이거 할려고 얼마나 뻘짓을 많이 했던가 -.-;; 국내에 있는 수 많은 게시글을 다 뒤지고 다녀도 찾을 수가 없어서 직접 알아냈다. 우선 링크는 http://msdn.microsoft.com/en-us/library/aa384006(v=VS.85).aspx 여기.. 문제가 뭐냐면 비스타에서 사용자 계정 컨트롤러(UAC라고 해서 User Account Control..)를 사용하여 보안모드 상태일 경우 프로그램 실행하는것 조차 까다롭게 된다. 프로그램 배포시에 사용자에게 'UAC를 풀고 사용해라!'라고 하면 참 좋겠지만 그게 어디 쉽나.. 여튼.. UAC가 활성화 된 상태에서 내가 만든 프로그램을 섣불리 Start Up(시작 프로그램)에 등록할려고 하면 Windows Defender가 우리..
http://sjpison.tistory.com/68 에서 펌 ------------------------------------------------------------------ 이 문제를 왜 고민하게 됐는고 하니… SendMessage를 사용하려고 하는데 자신보다 권한이 높게 설정된 프로그램에는 메시지를 보낼 수 없는 문제가 생겼습니다. UAC라고… 윈도우 Vista에 추가된 그 기능 때문에 프로그래머들은 한층 더 골치가 아프게 됐네요. 구글링도 해보고 여러가지 방법을 찾던 차에 매니페스트를 추가하면 된다는 사실을 알게 됐습니다. 그리고 VS2008부터 생긴 기능인지는 모르지만(전에는 고민해 본적이 없으니까요) 매니페스트를 VS자체에서 추가할 수 있더군요. 제가 검색했던 다른 사이트들은 mt.exe..
비스타 권한 상승 문제 해결을 위해 전전긍긍하다가 좋은 글이 있길래 http://blog.naver.com/lastday1225/150015292896 에서 퍼왔음. ------------------------------------------------------------------------------------------------- 환경: 난 VS8 닷넷2.0 랭귀지는 C# 을 사용하고 있다. 최대한 툴 사용해서 문제를 해결하고자 했다. 귀차니즘... 그러나 다른 툴들이나 c, c++은 별반 크게 다르지 않다. (델파이도 된다고 하네요. 다 될거 같네요 ㅎㅎㅎ) 상황 : 1. 비스타에서 관리자 권한이 요구되는 응용프로그램들은 실행시 관리자 권한 토큰을 획득해야 한다. 2. 실행시 관리자 권한을 획..
#include #include #include /*for _beginthreadex, _endthreadex*/ #pragma comment( lib, "ws2_32" ) unsigned WINAPI ThreadFunction(void* arg); int main(int argc, char** argv) { HANDLE hThread; DWORD dwThreadID; hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadFunction, NULL, 0, (unsigned*)&dwThreadID); if(hThread == 0) { puts("_beginthreadex() error"); exit(1); } printf("생성된 쓰레드의 핸들 : %d \n",hThread..
WM_MOUSEWHEEL은 그냥 선언한다고 되지 않아요. windows.h안의 WM_MOUSEWHEEL부분의 정의를 보면 #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define WM_MOUSEWHEEL 0x020A #endif 이렇게 되어있습니다. 따라서 stdafx.h에 보통 선언되어있는 #ifndef _WIN32_WINNT // Windows XP 이상에서만 기능을 사용할 수 있습니다. #define _WIN32_WINNT 0x0501 // 다른 버전의 Windows에 맞도록 적합한 값으로 변경해 주십시오. #endif 이부분에서 WINNT뒤의 값을 잘 조정해야겠지요~~ 보통 default값을 #ifndef WINVER // Windows..
제작환경 Visual Studio 2005 C++/Win32 API 그림을 확대/축소할 때 스무스하게 이루어지도록 코딩했습니다. 더블버퍼링 예제로도 도움이 될거에요. 감사합니다. 주요코드 case WM_TIMER: switch(wParam) { case 1: if(nSampleWidth != nDestWidth) { if(bZoomMode) { nCntWidth = abs(nDestWidth - nSampleWidth); nSampleWidth+=(nCntWidth/7); } else { nCntWidth = abs(nDestWidth - nSampleWidth); nSampleWidth-=(nCntWidth/7); } } if(nSampleHeight != nDestHeight) { if(bZoomMo..
http://www.winapi.co.kr 의 '더블 버퍼링' 강좌 부분에서 가장 눈에 띄는 부분. 이 코드에서 흔히 오해하기 쉬운 것이 있는데 메모리 비트맵인 hBit와 메모리 DC인 hMemDC와의 관계이다. GDI 출력 함수들은 반드시 DC 핸들을 요구하며 비트맵에 출력하기 위해서는 이 비트맵을 선택하고 있는 메모리 DC의 핸들이 필요하다. 그래서 화면 DC와 호환되는(=비트맵과 호환되는) hMemDC를 생성하고 여기에 비트맵을 선택한 후 출력했다. 이 DC는 어디까지나 비트맵 출력을 위한 임시 DC이므로 비트맵을 다 작성하고 난 다음에는 해제되어야 한다. 더블 버퍼링에서 내부 버퍼라고 칭하는 것은 비트맵이지 메모리 DC가 아니다. 메모리 DC는 비트맵을 선택하기 위해 잠시만 사용되는 DC일 뿐인데..
- Total
- Today
- Yesterday
- 리눅스
- java
- linux
- C
- winapi
- 안드로이드
- gcc
- db
- android
- 음악
- source
- API
- 드라이버
- algorithm
- jni강좌
- it
- jni
- MFC
- Troubleshooting
- 프로그래밍
- Visual C++
- Python
- NDK
- Quiz
- driver
- kering
- AWS
- C++
- database
- Cloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |