2013-03-18 3 views
-1

닫힌 나의 recent question 때문에, 여기에 같은 질문에 대한 다른 접근법이 있습니다.WinAPI 대안이 필요합니다.

나는 winAPI를 배우려고 시도하는 것이 어렵다는 것을 알았으며 (Spook 덕분에) 기본 기능을 이용할 수있는 대부분의 시간을 요구하지 않으며 다른 접근 방식이 필요합니다.

저는 C++을 선호하고 Qt에 약간의 경험이 있지만, take advantage of platform specific features으로하고 싶기 때문에 Qt는 실행 가능한 솔루션이 아닙니다.

또한 이식성에 신경을 씁니다. .NET Framework 설치 프로그램에 포함 된 리소스 대신 로컬 리소스를 사용하는 방법이 없으면 .NET을 사용할 수 없습니다.

그래서 대안을 열거하십시오. 이러한 것들을 할 수 있기 위해 공부할 수 있습니다.

예를 들어 에어로 투명도를 사용하는 제품을 this과 같이 만들거나 최소화/최대화와 같은 다른 창을 조작 할 수있는 프로그램이 필요하면 winAPI 이외의 다른 도구를 사용할 수 있습니까?

+0

'MFC'와'Windows Template Library' 그럼? 윈도우 중심의 C++ 라이브러리, 마이크로 소프트 이외의 다른 소스가 그들을 어떻게 만들까? –

+0

@ Arioch'The 잘 나는 자습서를 위해 msdn을 보았습니다. 그러나 그들은 winapi를 참조합니다. 나는 틀린 장소를보고 있어야한다. –

+0

winapi와 플랫폼 간 라이브러리를 모두 배워야합니다. C++을 사용하고 싶다면 그것을 피할 방법이 없습니다. –

답변

2

Qt (또는 다른 x 플랫폼 프레임 워크)를 사용하는 경우에도 플랫폼 관련 기능을 사용하는 데 방해가되므로 이해할 수 없습니다. 지원하려는 다른 플랫폼에 대해 서로 다른 컴플라이언스 단위로 특정 기능을 분리하면됩니다. 그것보다 더 많은 것이 없습니다.

일반적으로 헤더 파일에 인터페이스/클래스를 정의한 다음 해당 인터페이스/클래스를 여러 플랫폼 파일 (각 플랫폼은 특정 플랫폼의 구현 인 f.i)으로 구현할 수 있습니다. Win32/Mac OS X/Linux. 헤더 (.H 파일)에서

파이 : (

std::string MyXPlatformClass::getMachineName() { 
    char buffer[256]; 
    GetComputerNameA(buffer, sizeof(buffer)); 
    return buffer; 
} 

맥 OS X :

는 Win32 :

class MyXPlatformClass { 
public: 
    static std::string getMachineName(); 
} 

그런 다음 당신은 CPP 파일이 "인터페이스"를 구현 및 Linux?) :

std::string MyXPlatformClass::getMachineName() { 
    char buffer[256]; 
    gethostname(&buffer, sizeof(buffer)); 
    return buffer; 
} 

이것은 크로스 플랫폼 코딩이 수행되는 방식이며 작업하기로 선택한 프레임 워크와는 아무런 관련이 없습니다. Qt는 상당히 "완전"하기 때문에 Qt를 사용하는 것이 좋습니다. 즉, 플랫폼 별 코드를 신경 쓸 필요가없는 모든 도구가 있다는 의미입니다. 그러나 필요한 경우 위의 방법을 사용할 수 있습니다.

+0

더 자세히 설명해주십시오. 나는 분명히 이것에 대해 모른다. 내가 그랬다면, 나는 묻지 않을 것이다. –

관련 문제