abwiki @ ウィキ (ActiveBasic非公式wiki)内検索 / 「ステップ8 「構造体とファイルオープンダイアログ」」で検索した結果

検索 :
  • ステップ8 「構造体とファイルオープンダイアログ」
    今回は、RADツールとは離れ、構造体についての説明をします。扱うプログラムも、プロジェクトではなく、単体ファイル(*.abp)になるので、そのつもりで読んでいって下さい。 構造体 いくつかの変数を集めたものを、構造体と呼びます。1つのものに対して、複数のデータが存在するときに利用されます。構造体の定義方法、利用方法は下のようになります。 構造体の定義 Type 構造体名 メンバ変数1 As データ型1 メンバ変数2 As データ型2 メンバ変数3 As データ型3 ... End Type 構造体を利用するとき Dim a As 構造体名 a.メンバ変数1 = ... a.メンバ変数2 = ... 構造体の定義はType ~ End Type文を利用します。構造体の中に構造体を定義することも可能です。 Dim...
  • Win32プログラミング講座 for AB4.24
    ...ロールを使う②」 ステップ8 「構造体とファイルオープンダイアログ」 ステップ9 「ビットマップビューワを作る」 ステップ10 「プログレスバーとタイマー処理」 ステップ11 「テキスト エディタを作る」 ステップ12 「N88BASICスタイルで行こう!(一休み?)」 ステップ13 「アプリケーション アイコンを設定する」 ステップ14 「DLLを作る」 ステップ15 「Byte配列で行う文字列操作」 ステップ16 「RPGのマップ移動機能を作る①」 ステップ17 「RPGのマップ移動機能を作る②」 ステップ18 「RPGのマップ移動機能を作る③」 ステップ19 「DOS窓で動くコンソール アプリケーションの作成」 ステップ20 「プロセス デバッガによるデバッグに挑戦」 ステップ21 「ステータスバーを使う①」 ステップ22 「ステータスバーを使う②...
  • ステップ11 「テキスト エディタを作る」
    ...eName関数は前のステップ8でやりましたね。ファイルオープンにCreateFile関数が、ファイルからのデータの読み込みにReadFile関数などが利用されているところもおさえておくと良いでしょう。 プロシージャの最後の部分で、ファイル データが格納されている文字列変数bufferの内容を、SetWindowText関数を利用してウィンドウに反映させています。 Sub MainWnd_IDM_OPEN_MenuClick() Dim hEdit As Long Dim ofn As OPENFILENAME Dim hFile As Long Dim dwFileSize As DWord Dim dwAccessByte As DWord Dim FileName[MAX_PATH-1] As Byte Dim buffer...
  • ステップ9 「ビットマップビューワを作る」
    今回は、メニューコントロールや「ファイルを開く」ダイアログボックス、ビットマップ用のAPI関数を活用し、ビットマップビューワの作成にチャレンジしてみます。 プロジェクトの作成 ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "BmpViewer" とします)を作成し、メニューの作成(IDは "MainMenu")、メインウィンドウへのメニューの貼り付けを行っておきましょう。 "MainWnd" のプロパティ設定 まずは、ベースとなる "MainWnd" を開き、ウィンドウ プロパティの設定を行います。 背景色のボタンをクリックし、"NULL" に設定しておきます。 メニューを "なし" から "MainMenu&qu...
  • ステップ20 「プロセス デバッガによるデバッグに挑戦」
    プログラミングはしてみたけど、いざ実行すると強制終了してしまう。なんでぇ~( _ ) この変数の値がちゃんとしてるか、MessageBoxでいちいちチェックするのって面倒… そこのあなた、こんなお悩み抱えていませんか?こんなときに登場するのが「プロセス デバッガ」。デバッグのやり方さえ覚えてしまえば、これらの問題はスマートに解決できます。 そもそも、デバッグって何? 「デバッグ」=「バグを取り除く」などという意味を持ちますが、一般的に、作ったプログラムに不具合はないかを、コードを一つ一つチェックしながら実行したり、任意のタイミングで変数の内容を表示しながら実行するといったことをしてチェックします。 論より証拠、実際にデバッギングを体験してみましょう。 まずは誰が見てもおかしいことに気付くプログラムをリリース コンパイル(F7キー)し、実行してみます。 Dim i...
  • ステップ10 「プログレスバーとタイマー処理」
    型変換の警告が出るが公式の解説でOK プログレスバーとは、インストール画面などでよく見かけますね。処理の進行具合を示すメーターのようなものです。今回は、タイマー処理とプログレスバーを組み合わせ、カウントプログラムを作ってみます。 早速、新規プロジェクトを作るわけですが、注意点が1つ。プログレスバーはコモンコントロールの部類に入り、新規プロジェクト ダイアログの2つ目の画面(プロジェクト オプションが設定できるところ)で、「コモンコントロールを使用する(api_commctrl.sbp)」にチェックを入れておかなければなりません。その点を踏まえ、プロジェクトを作成してみましょう(プロジェクト名は "TimeCount" とします)。 ちなみに、プロジェクト オプションは、プロジェクト作成後、メニューの「表示」→「プロジェクト オプション」からも変...
  • ステップ28 「メモリ監視ツールを作る②(設定をレジストリに保存)」
    前回と同じ修正が必要。 またこのサンプルを実行するとレギストリに永遠に値が残るのでこれは重大な問題だと癒える。 前回に引き続き、メモリ監視ツールに、オプション項目を付け足してみます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ SystemWatcher2.zip(プロジェクトに必要なファイルがすべて入っています) オプション項目って何をするの? 更新間隔の設定 最前面表示のオン/オフ 今回は、上記の2点と、それら設定項目のレジストリへの保存を試みます。 レジストリ操作 ① RegOpenKeyEx関数でレジストリキーをオープン ② RegQueryValueEx関数で値を読み込む / RegSetValueEx関数で値をセットする ③ RegCloseKey関数でレジストリキーを閉じる ...
  • スプラッシュウインドウ
    スプラッシュウインドウとは、起動の重いソフト、フォトショとかの 黄不動したときに出てくる画面のこと。 ABでこれを再現するには、メインウインドウが表示される前に DialogBoxでモーダルダイアログを読み出す。 このときモーダルダイアログはスタイルをポップアップ、枠なしにしておくと見た目がカッコいい。 処理がダイアログに移るので、 ダイアログ内でスレッドを立てスレッド内で初期化しつつ ダイアログに進捗を表示してやると体感速度が上がって楽しい。 サンプル
  • 応用
    実践的なプログラミング、コンピュータ理論(仕組み)、アルゴリズムなど 何か要望ある?(あったら作ってね的な) アルゴリズム関連 暗号化 最適化 2進数に変換してみる Base64 エンコード DCT(離散コサイン変換) 基数変換 画像の回転 ビットカウント xorshift システム関連 ファイル圧縮してみよう htmlhelp 文字コードの変換 マルチスレッド デッドロック ダイアログボックスをリソースから読み出してみよう プログレスバー ステータスバー ウインドウの列挙 CPU使用率の取得と表示 GDIでお絵かき 壁紙チェンジャー スクリーンセーバーを作る必要性 メモリ上の機械語プログラム タイマー ラーメンタイマー デジタル時計 HDD温度を調べる メッセージフック レジストリをいじってみたい INIファイル コマンドライン引数 クリップボード マニフェスト埋め込み(XPスタ...
  • FAQ
    FAQ(Frequently Asked Questions)よくある質問と答え 全般的なこと Q どこからダウンロードできるの? |A 公式サイトが死んでいる場合は vector からでも。 Q 利用にお金はかかりますか? |A いいえ。ABは無料です。 Q 商用利用してもいいの? |A 誰も止めはしない。 Q 関数や命令、文法の仕様は無いの? |A すべて作者の頭の中に入っていますよ。 Q ActiveBasicはActiveBasicで作ってるの? |A CかC++で作っているらしい。 Q ActiveBasicのプログラミングコンテスト無いの? |A RADツールに関すること Q RADツールで[x]の無いウインドウをテストしたのですが…閉じ方が分かりません。 |A A...
  • ステップ24 「ツールバーを使う①」
    今回は、Windowsアプリでは非常に需要が高い、ツールバーについて話を進めます。 ステータスバーに続き、今回のツールバーもアプリケーションの雰囲気や使い勝手を大幅に向上させることができるでしょう。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Toolbar.zip(プロジェクトに必要なファイルがすべて入っています) ツールバーを生成するにはCreateToolbarEx関数を! このCreateToolbarEx関数、パラメータが多くて面倒ですが、難しい内容はありません。一つ一つ見ていきましょう。 CreateToolbarEx ( _ hWnd As DWord, _ 親ウィンドウのハンドル ws As DWord, _ ツールバーのウィ...
  • ステップ32 「アナログ時計を作る」
    公式で配布されているプロジェクトファイルはAB5であるため、AB5プロジェクトファイルをAB4で開くを参照。 秒針、短針、長針がついているアナログ時計を作ってみます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ clock.zip(プロジェクトに必要なファイルがすべて入っています) 早速作ろう! "clock" などという名前で、ノーマルウィンドウベースのプロジェクトを新規作成します。 MainWndはいじるところがないので、次はメニュー(IDは "OptionMenu")を挿入し、以下のような構成になるよう、メニューアイテムをいれていきます。 キャプション ID 備考 dummy - ポップアップ 常に前面に表示( T) IDM_TOPMOST - ...
  • ステップ31 「ツールバーを使う④(ツールチップを表示する)」
    ステップ26 「ツールバーを使う③(ホットイメージ)」の続きです。ホットイメージツールバーにツールチップを表示してみます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Toolbar4.zip(プロジェクトに必要なファイルがすべて入っています) ツールチップの表示方法 WM_NOTIFYメッセージを感知し、ツールチップ用の文字列をセットするだけという、非常に簡単な流れになります。具体的には、以下のような流れになります。 ① WM_NOTIFYメッセージがメッセージコードTTN_NEEDTEXTとともに送られる ② TOOLTIPTEXT構造体のlpszTextメンバに文字列を示すポインタをセットする Type TOOLTIPTEXT hdr As NMHDR NMHDR構造体にコマンド情報...
  • ステップ7 「メニュー コントロールを使う②」
    回は「終了」ボタンだけという非常にシンプルなメニューでしたが、今回は、ポップアップを取り入れ、複数の項目を持つメニューを作成してみます。 前回同様、ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "MenuTest2" とします)を作成し、メニューの作成(IDは "MainMenu")、メインウィンドウへのメニューの貼り付けを行ってみて下さい。やり方をもう一度確認したいよ、という方は、前回「ステップ6」のページをご確認下さい。 それでは、"MainMenu" を開き、メニュー項目を追加していきましょう。まずは「挿入」ボタンをクリックし、1つ目の項目を挿入します。以後、メニューを挿入するときは、挿入したい場所の1つ上の項目を選択した状態で「挿入」ボタンをクリックするようにすることを覚えておくと便利です...
  • RunBASICの使い方
    RunBASICはサーバーサイドのBASIC。基本はcgiと同じ。perlやphpをwebサーバに置いて、 ブラウザ側から動的にwebページを表示可能。 従来のBASIC言語としても利用できるし、Webアプリケーション作成も可能。携帯などからも 利用出来る。 cgiと異なる点は、BASICインタプリタとWebサーバがオールインワンで含まれ、動作させる BASICコードをブラウザ上で編集できる事。通常はperlやphpのソースコードをftpでサーバへ 転送するが、その必要が無い。 その場でwebアプリケーションとして動作させ、編集画面から直接実行することができる。 さらに、記述はBASICとhtmlを使用し、html記述言語として利用可。BASICコードを使って htmlのマクロ的記述が可能。どちらかというとphpに近い。 RailsとかFrameworkより驚くほ...
  • エディットボックス(1)
    エディットボックスについて † エディットボックスは文字や数字を入力できるコントロール 作られた直後は32KBまで編集可能 EM_SETLIMITTEXTメッセージを使うと最大で2GBか4GBまで増やせるが、9x系のOSだと64KBまでという制限がある エディットボックスのスタイル † RADで変更できるエディットボックスのスタイルについて 無効(使用不可) 入力エリアが灰色になって入力フォーカスを受け付けないが、Set、GetWindowTextは普通に使える 可視 チェックしておかないとエディットボックスが見えない グループ グループボックス?を参照 タブストップ 加筆plz 複数行 複数行のテキストが扱えるようになる 水平スクロールバー、垂直スクロールバー、垂直オートスクロールのスタイルが使用可能になる パスワードスタイルは使えない ...
  • ボタン類
    コマンドボタン † マウスクリックなんかの入力を受け付けるコントロール ↑ [edit] コマンドボタンのスタイル † RADで設定できるスタイルについて 無効(使用不可) 押せない 可視 チェックしておかないとボタンが見えない グループ グループボックス?を参照 タブストップ 加筆plz 標準のボタン 入力フォーカスを持ったボタンになる が、なぜかENTER押しても反応しない ABのダイアログボックスは擬似的な物なのでそれが本物だと反応すると思う。 オーナー描画 ボタンが描画されるタイミングでWM_DRAWITEMが親ウィンドウに送られます またボタンのウィンドウプロシージャは描画操作を全くしません(自分で描画しないと何も表示されない) アイコン 使ったこと無いからなんとも言えんがアイコンを表示するんじゃないの? ビットマップ ...
  • ステップ26 「ツールバーを使う③(ホットイメージ)」
    フラットツールバーにホットイメージ機能を付け加えます。ホットイメージとは、1つのボタンに対し、通常画像と浮き上がったときの画像を持たせる機能のことです。今回は、フルカラーのボタンイメージを採用するので、なかなかの見栄えになるかと思います。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Toolbar3.zip(プロジェクトに必要なファイルがすべて入っています) 前回(ステップ25)のソースプログラムに変更を加える形で作業を進めていきます。前回からの変更箇所を太字で示しています。新規にプロジェクトを作成させる方は、プロジェクトオプションで「コモンコントロールを使用する」にチェックを入れておくのを忘れないようにしましょう。 チェックしておきたい関数は? コモンコントロールのイメージリスト機能を使用するため、Imag...
  • ステップ4 「RADツールに初挑戦」
    (Verによって画面がやや異なる。) 今まではMessageBox関数のみを使用した素朴な画面出力やったが、ここで本格的なGUIプログラムの開発に挑戦してみまひょ。「いろんな種類のウィンドウを、関数やらをいくつも使って生成するやつでしょ?」なんてゆう方、お絵かき感覚のウィンドウ デザインを是非、お試しおくんなはれちゅーワケや。 プロジェクトを生成してみまひょ RADツールを利用するためには、ノーマルウィンドウをベースにしたプロジェクトを作成する必要がおます。作り方は至って簡単、新規作成でプロジェクトを選択し、後は画面の指示に従って設定を施すだけや。 さっそく、プロジェクトの作成をしてみまひょ。 初めに、新規作成でプロジェクトを選択し、OKボタンをクリックしまんねん。 次に、プロジェクト名、保存先のディレクトリを設定しまんねん。プロジェクト名は...
  • ステップ25 「ツールバーを使う②(ボタンが浮き出すフラットツールバー)」
    こんな風に、マウスポインタを合わせるとボタンが浮き出てくるツールバーのことを、フラットツールバーと言います。今回は前回の標準ツールバーのプログラムにちょっと手を加え、オシャレなフラットツールバーにしてみましょう。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Toolbar2.zip(プロジェクトに必要なファイルがすべて入っています) どこに手を加えるかというと… ツールバーのウィンドウスタイルに TBSTYLE_FLAT を加えるだけです。 えー、めっちゃ簡単じゃん。それではCreateToolbarEx関数の第1パラメータを… ちょっとお待ちください。実験してみると分かりますが、ツールバー生成時にダイレクトに TBSTYLE_FLAT を指定してしまうと、不思議なことにツールバーの背面が白になってしまいます。 と...
  • ステップ13 「アプリケーション アイコンを設定する」
    今回は、自作アプリケーションの作成をしたらまずは行いたい項目「アイコンの設定」についての解説をします。コーディング作業はなく、とても簡単ですので、5分で終わってしまうかも!? ステップ11で作成したTextEditorのプロジェクトファイルを再利用し、アプリケーション アイコンの説明をしていきます。といっても、TextEditor以外のプロジェクトを使ってもらってもなんら差し支えありません。 なにはともあれ、アイコンファイルがなければお話にならないので、まずは作ってみましょう。アプリケーション用アイコンの編集には dotwork などのソフトウェア(フリー)がお勧めです。「作るの面倒~」な方は、サンプルを用意しましたので、ご利用下さい。 アイコン サンプル(右クリック&「対象をファイルに保存」をクリック) アイコン ファイルは、32*32、16*16の2...
  • ウインドウにファイルをドラックドロップする方法
    メインウインドウのプロパティ、拡張属性から、ドラックドロップを許可する、をちぇっく。 ウインドウのイベントコードの中から、DropFilesをコーディング。 Sub MainWnd_DropFiles(hDrop As HDROP) Dim FileName[MAX_PATH-1] As ByteDim fpath As String 'FileName配列にファイルパスを1つ格納 DragQueryFile(hDrop,0,FileName,MAX_PATH) '使用後はドラッグ&ドロップに関する情報を解放 DragFinish(hDrop)fpath=MakeStr(FileName)msgbox hMainWnd,fpath,"File Path"End Sub 複数のファイルを受け取る場合も同様...
  • ステップ29 「WAVEファイルを再生する」
    今回は、WAVEファイルを再生するだけの超簡単プログラムを作ってみます。 同期式でのWAVE再生 #include api_mmsys.sbp 'WAVEファイルを再生PlaySound("C \Winnt\Media\Notify.wav",0,SND_FILENAME)'プロセスを終了するEnd っと、これだけです(^^; 1行目の "#include " で、マルチメディア用の関数が定義されているファイルを読み込みます(PlaySound関数が利用可能になります)。 次に、PlaySound関数を呼び出し、WAVEファイルを再生します。第1パラメータに適当なWAVEファイルへのパスを指定します。第2パラメータは、リソースを利用する場合に指定しますが、今回はリソースを利用しないので、0を指定し...
  • ステップ22 「ステータスバーを使う②」
    今回はステータスバーを複数のパーツに振り分け、日付、時刻、ウィンドウサイズを表示してみます。 どうやって振り分けるの? CreateStatusWindow関数を使ってステータスバーを生成したら、ステータスバーのハンドルに向けて、SB_SETPARTS メッセージを送ります。SB_SETPARTS メッセージのパラメータは以下の通り… wParamにはパーツ数を指定します。 lParamには、各パーツの長さ(ピクセルサイズ)が格納されたLong配列へのポインタを指定します。 また、各パーツへ文字列を設定するときには、SB_SETTEXT メッセージを使うわけですが、wParam部分にパーツ番号を指定する点をおさえておくと良いでしょう。 作ってみよう! ステップ21で作成したプログラムがある場合は上書き方式でプログラムを加工してみて下さい(変更点は...
  • ステップ23 「ステータスバーを使う③」
    型の不一致による警告がでるが動作には問題無し。 どうしても気になるならキャストして黙らせてもよいのですが、 読みにくくなるだけだと思われるので、#strictを外すのがいいかもしれない。。 今回はステータスバーの各パーツにアイコンを表示してみます。少し細工を加えるだけで、ちょっとした機能も見栄えが良くなります☆ ※Comctl32.dllのバージョンが4.71以降であることが必要です ということで、上の画像にあるような三つのアイコン(16*16)をstateプロジェクトの中に用意しておきましょう。 icon1.ico(日付用)、icon2.ico(時刻用)、icon3.ico(サイズ用) ※右クリックで「対象をファイルに保存」 ステップ22でstateプロジェクトを作成されている方は今回のプログラムの太字の部分を参考にソースを編集してみて下さい。プロジ...
  • オブジェクト指向入門
    歴史的には、オブジェクト指向言語の源流は、Simula。それらを参考にEiffelやSmalltalkが 作られ、C++やらなんやらが作られはった。 オブジェクト指向の能書きは、シミュレーションの際に扱うデータの抽象化にあるんや。 たとえばやなあ、ウインドウを抽象的に扱う場合、座標をx,yと個々に変数を扱うより、 ウインドウちうオブジェクトのx,yちう抽象データ型があったほうが取り扱いやすいちうわけや。 プログラム中、変数を無数に無作為に定義するよりも、座標やベクトルちう構造を持って いたほうが理解しやすいやろ。 例えば、 dim x1 as integer dim y1 as integer ... という変数が、無数にあるよりも、 type axis x1 as integer y1 as integer end type という構造体...
  • VB
    VB(Microsoft Visual Basic) Microsoft社が開発したBASIC言語でWindows環境での動作に適した拡張を行った BASIC処理系。 歴史 Microsoft社が開発した初期のMicrosoftBASICを拡張し、構造化構文と構造体など 変数型の改良、インタプリタ+コンパイラの対応を経てQuickBASICが開発された。 この時点で言語処理系として他の処理系と比べて引けを取らない拡張が行われ 旧式のMicrosoftBASICと比べて先進的な機能が実装された。 QBasicはコマンドCUIで行番号編集のエディタからフルスクリーンエディタ を含む統合開発環境とデバッカを新たに備えたインタプリタで コンパイラ機能を取り除いた簡易的なQuickBASICと呼べるもので、 英語版MSDOSやWindows95CDROMな...
  • ステップ30 「MCIコマンドで音楽ファイルを再生する」
    今回はMCIコマンドを使って、WAVE、MIDI、MP3等の音楽ファイルを再生することができる簡易プレーヤーを作ってみます。 MCIコマンドって何? "Multimedia Control Interface" のことです。ようは、音楽ファイルをオープンしたり、再生、停止したりする、サウンド関連のコマンドのことです。 mciSendCommand関数を使用すれば、MCI_OPEN、MCI_PLAY、MCI_STOPなどのMCIコマンドを送ることができます。 mciSendCommand ( _ mciId As Long, _ MCIデバイスのID uMsg As Long, _ コマンド(MCI_OPEN、MCI_PLAY、MCI_STOPなど…) dwParam1 As L...
  • シリアルポートを使う
    本家掲示板のtxrx1.sbpをインクルード。 使用例 #console#include "txrx1.sbp"Dim hComm As LongDim stDCB As DCBDim timeout As COMMTIMEOUTSDim dummy As LongDim comnum[10] As Byte'comポート設定ZeroMemory(comnum,10)lstrcpy(comnum,"COM3")hComm=CreateFile(comnum,GENERIC_READ or GENERIC_WRITE,0,ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0)'Openエラー処理IF hComm=-1 Thenprint "comm が使えない"...
  • AB以外の開発環境
    フリーのもの ActivePerl |WinでPerlを使うならこれ。 StrawberryPerl |WinでPerlを使うものその2。 Digital Mars C, C++ and D Compilers |D言語。C/C++コンパイラもある。omf形式を吐くのでMS厨とは相性悪し。 FreeBASIC |マルチプラットホームかつオープンソースなBASICコンパイラ。インタプリタではない。 基本構文はQBasic互換であるがオブジェクト指向やポインタなど独特の言語拡張の導入は ActiveBasicと似ていてANSI非互換である。非常に多くのライブラリがある。 Ver1.0から64bit環境に対応。(フリーなBASICの64bit環境はActiveBASICとFreeBASICしかない) Smal...
  • ステップ16 「RPGのマップ移動機能を作る①」
    今回はスプライト処理をはじめとするテクニックを利用し、マップ、および主人公の描画をRPGライクに行います。 なお、今回からの解説は、First Seed Materialで公開されているRPG用素材を利用させていただきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy.zip(プロジェクトに必要なファイルがすべて入っています) このステップの要点は、スプライト処理です。ビットマップのマスク処理などといったほうが、親しみがあるかもしれません。具体的には、ビットマップに対して以下のような演算をさせ、画面に出力します。 = AND OR これを動かすとなると少し大変なので、まずは右上にあるような画面を作ってみることにしましょう。 ノーマル ウィンドウ ベースの新規プロジェクトを作成し...
  • ファイル圧縮してみよう
    Common Archivers Library からCAB32.DLL 開発者 SDK v0.98をダウソしましゅ。 展開して、cab32.dllを、システムホルダに投入します。 ABのプロジェクトでウインドウにリストボックス(ID=ListBox1)とボタン(ID=CommandButton1) だけの画面を作ります。このとき、MainWndの拡張スタイルでドラッグ&ドロップを許可にします。 イカのコードをコピペします。終わり。 ----------------------------------------------------------------------------- イベント プロシージャ --------------------------------------------------------------------...
  • ステップ18 「RPGのマップ移動機能を作る③」
    前回の解説で主人公キャラが自由に動け回れるようになったので、今回は任意のマップを描けるようにしてみます。 マップ図にマップチップを割り当てるという、非常にシンプルな細工をするわけですが、マップチップの種類が非常に多いため、数字攻めになってしまうかもしれませんが、根気良くがんばりましょう。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy3.zip(プロジェクトに必要なファイルがすべて入っています) 今回も、ステップ17「RPGのマップ移動機能を作る②」で掲載したプログラムの変更点を太字で表しているので、参考にして下さい。 また、以下のようなマップの配置図(25*20)をCSV形式で用意しておく必要があります。プロジェクトが保存されているディレクトリに "map.csv" というファイル...
  • GDIでバックバッファを用いてウインドウに線を書く
    ウインドウ再描画のもう一つは、メモリー内にGDIビットマップを保持するヴぃでおめもり領域を確保し、ペイントいべんとでバッファヴいでおめもりを描画。 描画はバッファヴぃでおめもりに対して行う。 MainWnd.sbp '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainWnd' TODO この位置にグローバ...
  • ステータスバー
    ステータスバーの中にプログレスバーを入れる。 プログレスバーをステータスバーの子にして、 SB_GETRECTでサイズ調整するのがミソ。 ↓プロジェクト名を"SPSP"にして、コモンコントロールを使用するにチェクを入れる。 '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainW...
  • gogo.sbp
    Const ME_NOERR = 0 return normally;正常終了 Const ME_EMPTYSTREAM = 1 stream becomes empty;ストリームが最後に達した Const ME_HALTED = 2 stopped by user;(ユーザーの手により)中断された Const ME_INTERNALERROR = 10 internal error; 内部エラー Const ME_PARAMERROR = 11 parameters error;設定でパラメーターエラー Const ME_NOFPU = 12 no FPU;FPUを装着していない!! Const ME_INFILE_NOFOUND = 13 can t ope...
  • ABによる生成物集積所
    ActiveBasicで作成したプログラムをアップロードする場所です。 上にあるメニューから[編集]→[このページにファイルをアップロード]でアップロードできます。 説明も忘れずに付けましょう。 当然ここにあるものが全てではありません 簡単なメディアプレイヤー |AB4プロジェクト形式。 上手く動作しない部分もありますが基本的なことは出来ます。 EasyMediaPlayer.zip 手抜きゲーム(タイピング練習ソフト) |AB4.24でコンパイル確認。問題が少ないけど、結構楽しめると思います。 TypeOfAB.zip タイムスタンプ変換君(ユーティリティソフト) |AB4.24でコンパイル確認。ファイルのタイムスタンプ(作成日時、アクセス日時、更新日時)を任意に変更。ただし1600年1月1日以降 timemachin...
  • ステップ21 「ステータスバーを使う①」
    ステータスバーとはウィンドウアプリケーションでよく見かける左のようなものです。ちょっとした情報を表示するために使われるポピュラー機能ですね。 どーやって埋め込むの? イメージ画像では、ウィンドウにスッポリとはまっていますね。一見、スタティックコントロールのようにも見えますが、常にクライアント領域の端っこに表示されたり、分割表示できたりと、少し用途が違います。 具体的には、CreateStatusWindow関数を使用してステータスバーを生成し、表示するだけなので、作成方法はとてもシンプル。なにかしらアプリケーションを作るときには積極的に活用してしまいましょう(^^; CreateStatusWindow (style As Long, lpszText As BytePtr, hwndParent As DWord, wID As DWord) As DWord...
  • GDI
    Windowsのグラフィクス全般を扱うサブシステムで、その内容は比較的広範囲で難易度は高め。 Windowsではすべてのグラフィクスはデバイスコンテキストというハンドル(ポインタ) によって示されるメモリー領域にアクセスする。 このデバイスコンテキストは、デバイスに依存しない形でデータを保存している。 データタイプが汎用的で特定のグラフィクスデバイスに依存しないが、やや抽象的で 実体がないデータだ。これをDIBといい、デバイス非依存ビットマップという。 通常、ウインドウズ上でグラフィクスを扱う時は、このDIBを扱っている事になる。 これに対し、DDBというものがある。これはデバイス依存ビットマップと呼ぶ。 データの構造がディスプレイデバイスに強く依存したもので、ウインドウズでは、 これらのDDB,DIBというレイヤーを通してグラフィクスを扱っている。 ...
  • リストビュー(3)
    リストビューにアイコンを付ける~他タイプのリストビューについて † ↑ [edit] リストビューにアイコンをつける † 特定フォルダ内のファイルリストをリストビューに表示しアイコンをつけてみます ↑ [edit] 準備 † iml.sbp ↑を前回までのプロジェクトに追加 ↑ [edit] イメージリスト † イメージリストというのはコモンコントロールの一種で同サイズのイメージをインデックスで管理できるようにしたものです コモンコントロールでアイコンを使う場合はほぼ例外なくイメージリストを要求されますが 画像を用意するのが面倒くさいので今回はシステムが持っているイメージリストを使います iml.sbpをインクルードしてあればGetSystemImageList関数で取得できます GetSystemImageList(IconTyp...
  • 機械
    NC工作機械を動かすには、ハンドルなどを使う方法とNC言語を使う方法がある。 NC言語は、単純な記号によって構成されており可読性が低い。 かの有名なアセンブラにも及ばない。 NC言語の例 G00 X0.Y0.Z10.; G01 Z0.; Y20.; X10.Y10.; X20.Y20.; Y0.; G00 Z10.; X0.Y0.; NC言語は基本的には Gコード(準備機能) Mコード(補助機能) XYZABC(アドレス) SFT(工具に関する命令) で構成される。 Gコード Gコードは機械に今からこれこれをしますよという意志を伝える。 G00 早送り 機械の最高速度で移動 G01 直線補間 Fで与えた速度で指定位置に直線で移動 G02 円弧補間 Fで与えた速度で指定位置に時計回りで移動 G03 円弧補間 Fで与えた速度で指定位置に反時計回りで移...
  • コンボボックス
    コンボボックスはエディットボックスとリストボックスを組み合わせたコントロール ユーザーにアイテム選択をさせるために使う 標準ではエディットボックス脇のボタンを押すことによってリストが表示されるドロップダウンタイプになっている [edit] コンボボックスのスタイル † RADで設定できるスタイルについて 無効(使用不可)~タブストップ 他と同じなので省略 タイプ コンボボックスの種類 ドロップダウン、ドロップダウンリスト、デフォルトの3種類 デフォルトはエディットボックスにリストボックス付けただけの代物。別々に作った方が良いと思う ドロップダウンはコントロール右側の▼を押すとリストボックスが表示されるタイプ。空白部分はエディットボックスで編集可能 ドロップダウンリストはドロップダウンと大体同じだがエディットボックス部分は編集できない オーナー描画~文字列あ...
  • コールバック関数って何?
    コールバック関数は、事前に登録しておき、その後必要に応じて呼ばれる関数のことである。 通常、関数やプロシージャなどは、プログラム内のコードから呼び出され実行される。一例としてsin()、Math.sin() などの三角関数は、print sin(pi)などのようにプログラム内で記述が現れた際に実行される。 一般的な関数は、すべて手続きに従って呼び出され実行される。 これに対して、コールバック関数は通常の手続きの流れとは異なり、関数がプログラム内部の 主としたフロー内から呼ばれないものの事を指す。 コールバック関数は、与えられた関数名を予め登録しておき、主たる処理のフローとは個別に、 何らかの処理が必要になった場合に、システムによって呼び出される。 この仕組みは割り込みなどの仕組みに応用出来る。 コールバック関数は、言語上、明確に区別されるものではな...
  • リストボックス
    リストボックスはコントロールが所有するアイテムを一覧の中から選択できるコントロール [edit] リストボックスのスタイル † RADで設定できるスタイルについて 無効(使用不可)~タブストップ 他と同じなので省略 選択 一度に選択できるアイテムの数 選択無し、単一選択、複数選択。拡張はよくわからん オーナー描画 加筆plz ソート リストボックスに追加された文字列が自動的にソートされる これをチェックして無い場合は終端に文字列が追加される 複数列 アイテムを追加していって下端を超えた時に次の列の一番上にアイテムが追加される これを指定していると垂直スクロールバーは動作しない 通知 クリックイベントやダブルクリックイベントを親ウィンドウに通知する チェックされていないとRADのイベント処理でクリックを検出できない 水平スクロールバー 複数列の...
  • AVIファイルの操作
    #N88BASICDeclare Sub AVIFileInit Lib "avifil32" ()Declare Sub AVIFileExit Lib "avifil32" ()Declare Function AVIFileOpen Lib "avifil32" Alias "AVIFileOpenA" (ppfile As **DWord, szFile As *Byte, mode As Long, pclsidHandler As VoidPtr) As LongDeclare Function AVIFileRelease Lib "avifil32" (pfile As *DWord) As LongDeclare Function AVIFileInfo Lib "...
  • ステップ17 「RPGのマップ移動機能を作る②」
    前回やった、草原マップ、主人公キャラの描画に引き続き、今回はキー操作に反応し、キャラが自由に歩き回れるようにするプログラムを作成していきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy2.zip(プロジェクトに必要なファイルがすべて入っています) 今回も、First Seed Materialで公開されているRPG用素材を利用させていただきます。 前回作成したプログラムがある方は、MainWnd.sub のプログラムを変更するだけで実現できます。このページのプログラムリストは、前回からの変更点を太字で示してあるので、それを参考に改良してみて下さい。 新規にプログラムを作成する方は、まずはプロジェクトを作成しておきましょう。新規作成→プロジェクトで、"Fantasy" などという名前のプロ...
  • abでpdfを扱う
    http //homepage3.nifty.com/e-papy/pdftool/index.html からpdftool.zipをだうんろーどし、pdftool.dllを得る。 テキストファイルをpdfに変換。 #promptDeclare Function WritePDFText Lib "pdftool.dll" (openfile As BytePtr,savefile As BytePtr) As LongDim opf(63) As ByteDim svf(63) As ByteDim rtn As Longlstrcpy(opf,"readme.txt")lstrcpy(svf,"readme.pdf")rtn=WritePDFText(opf,svf) ビットマップ画像をpdfに変換 ...
  • ステップ1 「変数の扱いと演算子」
    公式の説明でok 「変数」とは、データを記憶するためのメモリの一部分やと考えておくんなはれ。変数にはいくつかの種類があり、整数を記憶できるもん、小数部分の数値も記憶できるもん、文字列を記憶できるもんやらなんやらが存在しまっせ。 変数を利用する前にはじぇったい、「変数の定義」をせなあかんなりまへん。例えば、 Dim a As Long この一行は、「"a" ちう名前のLong型変数を利用します」ちう意味を持ち、この次の行から変数aを利用するっちうことができるようになるんですわ。Long型とは、整数を扱うための変数型のことや。こないな風に、変数の定義を行う場合は、Dim命令語を利用するもんやいうことを覚えておきまひょ。 早速、Dim命令語で変数宣言を行い、値を代入してみまひょ。 Dim a As Long a=20 Messag...
  • プラグイン/ニュース
    ニュース @wikiのwikiモードでは #news(興味のある単語) と入力することで、あるキーワードに関連するニュース一覧を表示することができます 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_174_ja.html たとえば、#news(wiki)と入力すると以下のように表示されます。 ウィキペディアを作ったiMacが箱付きで競売に登場。予想落札価格は約96万円!(ギズモード・ジャパン) - Yahoo!ニュース - Yahoo!ニュース メトロイド ドレッド攻略Wiki - Gamerch(ゲーマチ) ツムツム攻略Wiki|ゲームエイト - Game8[ゲームエイト] 【グランサガ】リセマラ当たりランキング - グランサガ攻略wiki - Gamerch(ゲーマチ) アイプラ攻略Wiki|アイドリー...
  • マルチプルインスタンス
    マルチプルインスタンスとは 疑りぶかいあなたのためのオブジェクト指向再入門 を100回読んでください。 要するにオブジェクトをいっぱい作ることが出来るわけです。 例えばウインドウを操作するWINDOWSUKIクラスを作ればウインドウが3つあればこのクラスを3つ宣言すれば良いのです。 ドラクエの戦闘システムなら戦うキャラクラスを作ればそれで参加する人数分宣言すればいいわけなんですが、 うまく作らないとあとあと大変な事になります。 Class AKB48Privatename As String'名前hp As Long'HPpp As Long'攻撃力Public'コンストラクタSub AKB48(aname As String, ahp As Long, app As Long)name = anamehp = ahppp = ...
  • @wiki全体から「ステップ8 「構造体とファイルオープンダイアログ」」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索