HINSTANCE ShellExecute (
	HWND hwnd,					
	LPCTSTR lpOperation,		
	LPCTSTR lpFile,				
	LPCTSTR lpParameters,		
	LPCTSTR lpDirectory,		
	INT nShowCmd			
);

hwnd 인자는 부모 윈도우의 핸들이며, 이 값이 NULL이면 부모 윈도우는 바탕 화면이 됩니다. lpOperation 인자에는 함수가 어떤 동작을 할 것인지 명시합니다. 


* lpOperation 인자값 설명

 명령

설명

 open

파일을 연다. 실행 파일일 경우 곧바로 실행되며 데이터 파일은 연결된 프로그램이 실행된다. 

 edit

편집기를 열어 편집한다. 데이터 파일만 열 수 있다. 

 explorer

폴더를 연다. 

 print

문서 파일을 인쇄한다. 

 NULL

디폴트를 실행한다. 


중요한 점은 lpFile 인자로 전달받는 것이 실행 파일이 아닌 경우 레지스트리의 내용을 참조하여 연결 프로그램을 실행하여 내용을 보여준다는 것입니다. 만일 lpFile 인자로 URL을 준다면 브라우저를 실행하여 해당 사이트로 접속을 시도합니다 

* 실행되는 브라우저는 기본 브라우저로 설정된 브라우저가 실행되고, 실행하였을때 브라우저가 열려 있는 상태일땐 열려 있는

   브라우저에서 실행된다.

ShellExecute(NULL, 
		TEXT("open"), TEXT("http:⁄⁄www.naver.co.kr"), 
		NULL, NULL, SW_SHOW);


lpParameters 인자에는 lpFile 인자가 실행 파일인 경우 실행할 파일의 실행 인자를 명시 합니다. lpDirectory 인자에는 실행할 프로그램의 현재 폴더 경로를 명시합니다. 이 값이 NULL이면 윈도우 기본(Default) 설정을 적용합니다.


ShellExcute 함수는 성공적으로 파일을 열었을 경우 32보다 큰 값을 리턴하며 에러 발생시 32이하의 값을 리턴한다. 16비트와의 호환을 위해 HINSTANCE 타입을 리턴하지만 실제로는 int 타입이므로 int로 캐스팅하여 점검하면 된다.



[ 출저 ] - 윈도우즈 API 정복 하 Page 1520 - 1521, VISUAL C++ 2008 MFC 윈도우 프로그래밍 Page 280 - 282


더 세부적인 사항은 아래의 사이트를 참고

Link : http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx

Link : http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=779



블로그 이미지

행복그리고..

,
CWnd* pWndDesktop = GetDesktopWindow();
CWindowDC ScrDC(pWndDesktop);

CWnd 클래스의 GetDesktopWindow() 함수는 바탕 화면 윈도우 객체의 포인터를 반환합니다. 

윈도우 전체에 대한 DC가 필요할때 GetDesktopWindow() 함수를 이용


[ 출저 ] - VISUAL C++ 2008 MFC 윈도우 프로그래밍 Page 275 - 279

'MFC' 카테고리의 다른 글

[MFC] - CDialogBar 버튼 이미지 초기화  (0) 2014.09.08
블로그 이미지

행복그리고..

,

StringBuffer 클래스는 스레드에 안전하게 설계되어 있으므로, 여러 개의 스레드에서 하나의 StringBuffer 객체를 처리해도 전혀 문제가 되지 않는다. 하지만 StringBuilder는 단일 스레드에서의 안전성만을 보장한다. 그렇기 때문에 여러 개의 스레드에서 하나의 StringBuilder 객체를 처리하면 문제가 발생한다.


CharSequence는 인터페이스이다. 

이 인터페이스를 구현한 클래스로는 CharBuffer, String, StringBuffer, StringBuilder가 있으며 

StringBuffer나 StringBuilder로 생성한 객체를 전달할 때 사용된다.


두 클래스에는 아래 표와 같이 4개의 생성자가 있다. 필요에 따라서 생성자를 선택해 사용하기 바란다.



생성자

 StringBuffer(), StringBuilder()

아무 값도 없는 객체를 생성한다. 기본용량은 16개의 char이다. 

 StringBuffer, StringBuilder

(CharSequence seq)

CharSequence를 매개변수로 받아 그 seq 값을 갖는 객체를 생성 

 StringBuffer, StringBuilder

(capacity)

 capacity에 지정한 만큼의 용량을 갖는 객체를 생성한다.

 StringBuffer, StringBuilder

(String str)

str의 값을 갖는 객체를 생성한다. 


public class Test {
	public static void check(CharSequence cs) {
		StringBuffer sb = new StringBuffer(cs);
		System.out.println("sb.length() : " + sb.length());
	}
	
	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		sb.append("Test");
		check(sb);
	}
}

String의 길이는 정상적으로 처리된다. StringBuffer나 StringBuilder로 값을 만든 후 굳이 toString을 수행하여 필요 없는 객체를 만들어서 넘겨주기 보다는 CharSequence로 받아서 처리하는 것이 메모리 효율에 더 좋다.


[ 출저 ] - 자바 성능 튜닝 이야기 Page 45 - 49


블로그 이미지

행복그리고..

,