我希望在我正在开发的项目中使用Win32 API。但是我不知道如何从我的cygwin项目中调用Win32 API。有人能指出我正确的方向吗?
答案 0 :(得分:7)
可以通过包含“windows.h”头文件从cygwin程序访问Win32 API。这意味着你安装了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;
}
这可以编译并与“make filename”链接,其中filename.cpp包含上述源。然后在bash提示符下键入./filename xxxx来执行。然后xxxx将出现在消息框窗口中。
答案 1 :(得分:2)
您可以查看Cygwin FAQ(特别是6.9如何使用Win32 API调用?)
当然,您需要获取WIN32API标头 - 您最好的选择是下载/安装fre c ++编译器(例如MinGW)并参考其标题。
答案 2 :(得分:1)
如果您了解Perl,则可能需要使用win32 :: GUI模块来创建窗口和对话框。确保perl5包含在你的cygwin安装中。
从cygwin命令行运行 cpan 以获取cpan解释器,然后执行 get 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;
}