• ベストアンサー

Win32APIで入力した数値を反映させたアプリケーションを動かすにはどうすればよいでしょうか?

C++をはじめたばかりなのですが、waveout関数に興味を持ち、今現在勉強中です。 http://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_stereo_16.cppに載っているサンプルをhttp://oshiete1.goo.ne.jp/qa5223409.htmlで頂いたアドバイスを参考にして、「CPad for Borland C++ Compiler」でも警告なしでコンパイルできるようにしました。 サンプルでは、 >#define F 400 //周波数(1秒間の波形数) で周波数が設定されてあります。 これを、ユーザがキーボードで数値を入力して自由に周波数を設定できるように変更しようと思いました。 コマンドプロンプトで数値を入力するのではなく、新しくウィンドウを開いて、数値を入力するためのボックスを開きたいと思います。 ですが、これをC++とWin32APIで実行するための専用の関数が見当たりません。 たとえば、『C/C++によるWin32API -APIサンプル集(http://homepage1.nifty.com/MADIA/vc/api/)』にあるサンプルプログラムを拝見させていただいたのですが、発見することができませんでした。予め設定された選択肢から選択するメニューについては紹介されていたのですが、入力フォームを作る方法については紹介されていなかったように思えます。 Win32APIで数値を入力して >#define F 400 の「400」の部分を変えるためには、どのようにすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • isle
  • ベストアンサー率51% (77/150)
回答No.3

『猫でもわかるプログラミング』というサイト(参考URL)の Windows SDK編 第34章 エジットコントロールの張り付け という記事が参考になるかもしれません。

参考URL:
http://www.kumei.ne.jp/c_lang/
time0space
質問者

お礼

エジットコントロールを自分なりに応用してみたところ、目標のプログラムができました。ありがとうございました。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> Win32APIでは、入力ボックスに関する関数というのはあるのでしょうか? ありません。 各種のコントロールを組み合わせてご自分でおつくりになってください。 Windowsプログラミングの入門書でもあたったほうが結局は早道っぽいですね。

time0space
質問者

お礼

入門書は図書館にいっぱいあったので助かりました。ありがとうございます。

回答No.1

サンプルファイルとかろくに見てないけどアドバイス まず、入力と処理を別々にしてみたら? #defineは、変数に変更する int F = 400; んで、wavデータを再生するスレッド立てる前に F = 200; とかに変更して再生できればOKじゃないかなー んで、入力は、次の手順で (1) 新しくウィンドウを作り、表示させる (2) 数値を入力するボックスをそのウィンドウ上に表示させる (3) ボックスに入力された値を取り込む これができれば入力はほぼOKだから、上の F = 200; のところを、ボックスに入力された値を取り込む部分に変えて、 試す、って感じで

time0space
質問者

補足

大まかな方向性としては理解しているのですが、 >(2) 数値を入力するボックスをそのウィンドウ上に表示させる >(3) ボックスに入力された値を取り込む を実行するための適切な関数がわからず、困惑しております。 関数一覧が載っているhttp://www.monmon-dance.com/win32api/index.htmlなどで調べてみたのですが、入力ボックスに該当するものを見つけることができませんでした。 Win32APIでは、入力ボックスに関する関数というのはあるのでしょうか?

関連するQ&A

  • VC++でwin32APIを作っているのですが・・・

    こんにちは。私はwin32APIを勉強しているc言語初心者です。 私はMicrosoft Visual C++ 2008を使ってc言語のwin32APIをプログラミングしているのですが、独学でやっているので物凄く邪道なwin32APIプログラミングをしているような気がするのです。 ・c言語のプログラムを書いて、C++のwin32APIプロジェクトとしてビルドする。 ・ヘッダーファイルにwin32API関数がなかったので、自分のwindowOSからwin32API関数を探し出してVC++2008のなかのincludeフォルダ内にコピー&ペーストして使えるようにした。 これって邪道ですか?一応何の問題もなくwin32APIプログラムが作れるのですが、もっと正規なやり方があるでしょうか。回答よろしくお願いします。

  • Win32APIでのメモリ管理について

    C→malloc関数 C++→new演算子 Win32API→GlobalAlloc関数 とWin32APIでのメモリ管理の方法にはいろいろありますが、どれを使うのが一番実用的なのか、どれが一番効率的なのかが知りたいです。 あとWin32APIにはHeapAllocという関数もあるようですが、上記の3つは使わずにこの関数を使用したほうがよいのでしょうか。

  • VC++ .NETでWin32 APIの関数を呼び出すことは可能なのでしょうか?

    Visual C++ 2003 .NETで、Win32 APIの関数をSystem.Runtime.InteropServices名前空間を利用して呼び出したく、チャレンジしておりますが、C#のやり方でやると記述エラーになります。 Google等で調べても、C#のものばかり出てくるのですが、VC++ .NETではWin32 API関数を呼び出すことはできないのでしょうか?

  • サウンド関係のAPIで

    サウンド関係のAPIで PCのマイク端子から録音するためのWin32APIとその使い方を教えていただきたいです。 できれば、CかC++のサンプルコードもくれると助かります。 よろしくお願いします。

  • C言語でWin32API

    C言語を使ってWin32APIを呼び出すような、Windowsプログラミングを始めたいんですが、何かよい本やサイトはご存知ないでしょうか。 Visual C++6.0はあるんで、それを使えばいいと思うんです。 C言語はわかるんですが、Windowsプログラミングに関する知識はほとんどないので、ごく基本的なことから知りたいんです。 WinMain関数というのを書くようなんですが、その書き方すら知りません。  スケルトン(出来れば、それよりもっと基本的なこと)から書いてあるようなものです。

  • Excel関数と数値の違い?について知恵を貸していただけると幸いです

    いつも大変お世話になっております。 C14のセルにとある数値が入力されています。 F14のセルに =IF(IF(F15<>0,$C$14,"")="","",IF(F15<>0,$C$14,""))と関数が入力されています。 F15セルに =IF(IF(P15*10=0,"",P15*10)=0,"",IF(P15*10,"",P15*10))と関数が入力されています。 上記の関数を使うにあたり、P15のセルに数値を入力した時(初めて数値が入力された時)にF14のセルにC14の数値を表示させたいと思っているのですが、F15セルの関数にF14セルの関数が反応してC14の数値を表示してしまって困っています。 解決方法があるようでしたら皆様の知恵をお貸しいただけると幸いです、よろしくお願いいたします。

  • perlでWin32::APIを使用してDLLからバイナリデータを得たいのですが、

    perlでWin32::APIを使用してDLLからバイナリデータを得たいのですが、 データ途中できれてしまいます。 0x00を含むところで切れているように思えます。 $datの長さを指定する方法とかあるのでしょうか? どうか助言をお願いします。 $func=new Win32::API("sample.dll","func1",[P,N,P],P); $size=0; $dat = $func ->Call("TEST",100,\$size); open(F,">kekka"); binmode(F); print F "$dat"; close(F);

    • ベストアンサー
    • Perl
  • Win32APIを始めたのですが・・・。

    Window Handleについての質問です。Win32APIではCreateWindow()でチェックボックスを作ることが出来るのですが、 C++でプログラミングしていたところ、困ったことになりました。 まず、クラスのメンバーとしてHWND m_Hwndを宣言し、メンバー関数(CreateChk())において m_Hwnd = CreateWindow(...)とし、WM_CREATEのメッセージ処理内で関数CreateChk()を呼び出して チェックボックスを作るようにしたのですが、WM_CREATEのメッセージ処理を終えると同時にm_Hwndの内容が意味を持たないものに 変わってしまい、チェックボックスの状態を利用することが出来ません。 変数の寿命に関係したものだとは思うのですが、クラスを用いたオブジェクト指向プログラミングも始めたばかりでよくわかりません。 どなたか対処方法をご存知でないでしょうか?

  • WIN32API CreateFileのCOMx

    WIN32API CreateFile(…"COMx"…)のCOM番号「x」)は、1~256まで可能ですか。 MS-VC++でRS-232C通信のWIN32アプリケーションを作る必要が生じてきました。 VC++6.0やVS2005のシステムは所有していますが、WIN32アプリは初心者です。 (WIN32アプリが出来たらDLLに改造するつもりです。) http://www.saluteweb.net/~oss_winapi232.html ここにどなたかが、サンプルプログラムをアップされてます。 この中の("COM1")は、"COM1"~"COM256"まで、対応しているんでしょうか。

  • Win32APIの座標表示

     Win32APIを使用して録音した音のX軸(時間)、Y軸(音量)とする座標を表示したいのですが、waveIn関数で録音した後の座標表示がよくわかりません。調べたものではウィンドウ画面の座標を表すものばかりでした。  音の数値データを座標に表せる方法など、関係しそうなことを知っていましたらなんでもいいのでたくさんの情報提供をお願いします。