2012-04-02 3 views
4

내가 작업중인 프로젝트에서 Win32 API를 사용하려고합니다. 그러나 Cygwin 프로젝트에서 Win32 API를 호출하는 방법을 모른다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?Cygwin 프로그램에서 Win32 API를 호출하는 방법

+0

당신은 당신이하려는 일에 대해 더 구체적으로 할 수 있습니까? –

+0

예. 이것은 내가 물었던 또 다른 질문에 대한 것입니다 : [장치에서 바이트를 읽는 방법] (http://stackoverflow.com/questions/9946795/how-to-read-bytes-from-a-device-using-cc- in-windows # comment12708876_9946795) – redhotspike

답변

6

Win32 API는 "windows.h"헤더 파일을 포함하여 cygwin 프로그램에서 액세스 할 수 있습니다. 물론 win32 패키지가 설치되어 있음을 의미합니다.

#include <iostream> 
#include <string> 
#include <windows.h> 

int main(int argc, char *argv[]) 
{ 
    std::string val; 

    if (argc > 1) 
    { 
     val = argv[1]; 
    } 

    std::cout << "You typed: " << val << std::endl; 
    ::MessageBox(NULL, val.c_str(), "You Typed:", MB_OK); 

    return 0; 
} 

이 컴파일 filename.cpp 위의 소스가 들어있는 "파일 이름을"로 링크 할 수 있습니다 예를 들면 다음과 같습니다 프로그램입니다. 그런 다음 bash 프롬프트에서 ./filename xxxx를 입력하여 실행하십시오. 그러면 xxxx가 메시지 상자 창에 나타납니다. 당신은 Cygwin FAQ 볼 수 있었다

+1

흥미 롭 ... 나는 이것을 시도 할 것이다. 이 예제의 모습에서 팝업 창이 생성됩니까? * ponders * 그렇다면, 이것은 참으로 멋진 것일 수 있습니다! – redhotspike

+1

예, 팝업 창이 생성됩니다. win32 개발 패키지가 설치되어 있는지 확인하십시오. 나는 일반적으로 Cygwin의 전체 설치를 수행하므로 어떤 특정한 것들을 처리 할 수 ​​있는지 말할 수 없습니다. –

+1

나는 방금 $ 100의 계산서를 발견했다고 느낀다. .. 진지하게 : 이것은 내가 찾고 있었던 정확하게 것이다! – redhotspike

1

(특히 6.9은 어떻게 Win32 API를 호출을 사용합니까?) 물론

당신이 WIN32API 헤더의 보류를 얻을 필요가있을 것이다 - 당신의 최선의 선택을 다운로드하는 것입니다/A를 설치 fre C++ 컴파일러 (예 : MinGW)의 헤더를 참조하십시오.

+0

좋은 물건! 고맙습니다. 추가 참조를 위해 나는 Cygwin 응용 프로그램에서 Win32 파일 API 사용하기 (http://cygwin.com/cygwin-ug-net/using.html#pathnames-win32-api)를 찾았습니다. – redhotspike

0

Perl을 알고 있다면 win32 :: GUI 모듈을 사용하여 창과 대화 상자를 만들 수 있습니다. perl5가 cygwin 설치에 포함되어 있는지 확인하십시오.

실행 CPAN 인터프리터를 얻을 수있는 Cygwin에서 명령 줄에서 CPAN은 다음 이는 Win32 :: GUI받을 수 있나요.

**To Get Familiar with win32::GUI** 
=========================================== 
win32-gui-demos.pl for a tutorial 
man 1 win32-gui-demos.pl for an overview -or- 
perldoc win32-gui-demos.pl for an overview 
perldoc win32::GUI for an intro 

자습서가 메뉴에서 실행되지 않으면 vi 파일에 복사하여 붙여 넣기 만하면 저장됩니다.

예 : (간단한 대화 상자가 향상)

#!perl -w 
use strict; 
use warnings; 

use Win32::GUI(); 

my $main = Win32::GUI::DialogBox->new(
    -name => 'Main', 
    -text => 'Continue with Outlook Backup?', 
    -width => 200, 
     -height => 200 
); 

$main->AddButton(
    -name => 'Default', 
    -text => 'Ok', 
    -default => 1, # Give button darker border 
    -ok  => 1, # press 'Return' to click this button 
    -width => 60, 
    -height => 20, 
    -left => $main->ScaleWidth() - 140, 
    -top  => $main->ScaleHeight() - 30, 
); 

$main->AddButton(
    -name => 'Cancel', 
    -text => 'Cancel', 
    -cancel => 1, # press 'Esc' to click this button 
    -width => 60, 
    -height => 20, 
    -left => $main->ScaleWidth() - 70, 
    -top => $main->ScaleHeight() - 30, 
); 

$main->Show(); 
Win32::GUI::Dialog(); 
exit(0); 

sub Main_Terminate { 
    return -1; 
} 

sub Default_Click { 
    print "OK to Proceed Selected\n"; 
    return 0; 
} 

sub Cancel_Click { 
     print "Cancel Backup Selected\n"; 
     return 1; 
} 
관련 문제