私が投稿した元のコードは、混乱の原因と思われるので、編集されています。私はそれが間違っていることを知っていますが、私はそれを例として使用したかっただけです。私が一緒に仕事をしたいコードは、このいずれかになります。C++、新しい引数で実行中のプログラムを修正する方法
https://github.com/SFML/SFML/wiki/Source:-AnimatedSprite
あなただけのこの部分に焦点を当てることができます。
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
window.close();
}
sf::Time frameTime = frameClock.restart();
// if a key was pressed set the correct animation and move correctly
sf::Vector2f movement(0.f, 0.f);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
currentAnimation = &walkingAnimationUp;
movement.y -= speed;
noKeyWasPressed = false;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
currentAnimation = &walkingAnimationDown;
movement.y += speed;
noKeyWasPressed = false;
}
Let'sがとることの代わりに、
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
このコードの外側から受け取ったパラメータからこのプログラムを動作させたい。
これは私がフォローしたいスキームのようになります。
ShellExecute(NULL,NULL,"C:\\AnimatedSprite.exe",NULL ,NULL,SW_SHOWDEFAULT);
:私のC++コード(let'sが起源それを呼び出す)私はこのプログラムを呼び出しから
は、このコマンドで(AnimatedSprite.exeそれを呼び出すことができます)
これは、コマンドを送信せずにAnimatedSprite.exeを開きます。
今、私は私が既に開いたときAnimatedSprite.exeがARGVとして「MyCommandLetter」を受信するように
ShellExecute(NULL,NULL,"C:\\Try.exe",MyCommandLetter.c_str() ,NULL,SW_SHOWDEFAULT);
のように、開いたままとコマンド彼を送りたい(はい、私はのargcを宣言する必要があります知っているとARGVメインに、私は元のコードを変更する必要が)
それはのようなものを行います。
if (argv[1]=='a')
{
currentAnimation = &walkingAnimationUp;
movement.y -= speed;
noKeyWasPressed = false;
}
それがより明確になったと思います。
ShellExecute以外の関数を使用しなければならないかどうかは問題ではありません。どのように動作するのか分かります(この例ではOKです)。
ありがとうございます。
cout << * argv [1]; –
コンパイラの警告をオンにします。 –
正しい結果をコンパイル、実行、および検証しようとした実際のコードを投稿してください。ファンタジーコードの代わりに。 –