2012-04-02 35 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が上記のソースを含む "make filename"でコンパイルおよびリンクすることができます。次に、bashプロンプトで./filename xxxxと入力して実行します。次に、xxxxがメッセージボックスウィンドウに表示されます。

+1

面白い...私はこれを試してみます。この例の外見から、ポップアップウィンドウが作成されますか? * ponders *もしそうなら、これは確かにすばらしいことかもしれません! – redhotspike

+1

はい、ポップアップウィンドウが作成されます。 win32開発パッケージがインストールされていることを確認してください。私は通常、Cygwinをフルインストールしますので、どの特定のものを手に入れるかは分かりません。 –

+1

私はちょうど$ 100の法案を見つけたように感じる...真剣に:これは私が探していたものです! – redhotspike

1

あなたはもちろん(特に6.9は、どのように私は、Win32 API呼び出しを使用していますか?)Cygwin FAQ

を見ることができる、あなたはWIN32APIヘッダのホールドを取得する必要があります - あなたの最良のオプションは、ダウンロード/インストールすることです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; 
} 
関連する問題