abwiki @ ウィキ (ActiveBasic非公式wiki)内検索 / 「ステップ20 「プロセス デバッガによるデバッグに挑戦」」で検索した結果

検索 :
  • ステップ20 「プロセス デバッガによるデバッグに挑戦」
    プログラミングはしてみたけど、いざ実行すると強制終了してしまう。なんでぇ~( _ ) この変数の値がちゃんとしてるか、MessageBoxでいちいちチェックするのって面倒… そこのあなた、こんなお悩み抱えていませんか?こんなときに登場するのが「プロセス デバッガ」。デバッグのやり方さえ覚えてしまえば、これらの問題はスマートに解決できます。 そもそも、デバッグって何? 「デバッグ」=「バグを取り除く」などという意味を持ちますが、一般的に、作ったプログラムに不具合はないかを、コードを一つ一つチェックしながら実行したり、任意のタイミングで変数の内容を表示しながら実行するといったことをしてチェックします。 論より証拠、実際にデバッギングを体験してみましょう。 まずは誰が見てもおかしいことに気付くプログラムをリリース コンパイル(F7キー)し、実行してみます。 Dim i...
  • Win32プログラミング講座 for AB4.24
    ...ーションの作成」 ステップ20 「プロセス デバッガによるデバッグに挑戦」 ステップ21 「ステータスバーを使う①」 ステップ22 「ステータスバーを使う②」 ステップ23 「ステータスバーを使う③」 ステップ24 「ツールバーを使う①」 ステップ25 「ツールバーを使う②(ボタンが浮き出すフラットツールバー)」 ステップ26 「ツールバーを使う③(ホットイメージ)」 ステップ27 「メモリ監視ツールを作る①」 ステップ28 「メモリ監視ツールを作る②(設定をレジストリに保存)」 ステップ29 「WAVEファイルを再生する」 ステップ30 「MCIコマンドで音楽ファイルを再生する」 ステップ31 「ツールバーを使う④(ツールチップを表示する)」 ステップ32 「アナログ時計を作る」
  • ステップ4 「RADツールに初挑戦」
    (Verによって画面がやや異なる。) 今まではMessageBox関数のみを使用した素朴な画面出力やったが、ここで本格的なGUIプログラムの開発に挑戦してみまひょ。「いろんな種類のウィンドウを、関数やらをいくつも使って生成するやつでしょ?」なんてゆう方、お絵かき感覚のウィンドウ デザインを是非、お試しおくんなはれちゅーワケや。 プロジェクトを生成してみまひょ RADツールを利用するためには、ノーマルウィンドウをベースにしたプロジェクトを作成する必要がおます。作り方は至って簡単、新規作成でプロジェクトを選択し、後は画面の指示に従って設定を施すだけや。 さっそく、プロジェクトの作成をしてみまひょ。 初めに、新規作成でプロジェクトを選択し、OKボタンをクリックしまんねん。 次に、プロジェクト名、保存先のディレクトリを設定しまんねん。プロジェクト名は...
  • file:/c:/windows/system32/cmd.exe
    CMD.EXEはWindows上で動作するシェルと呼ばれる機能を実現する。 WindowsはMSDOSから進化しMSDOSとよく似たコマンド対話環境を持つ。 cmd.exeは対話的コマンドを処理する機能。 キーボードを使ったコマンド対話環境は有用なため現在でも使われ続けている。 一般にはCUI,コマンドインターフェース、NT系の現在のWindowsではコマンドプロンプト、 Windows95/98/me系ではMSDOSプロンプト等と呼ばれる。 MSDOSの時代にはcommand.comと呼ぶ対話環境が存在し、現在のWindowsでも全く同様の コマンド、バッチファイル体系を持つ。 NT/2000/XP以降のNT系OSではCUIコマンド対話環境はcmd.exeが担当する。 Windows95/98/meではcommand.comが担当する。 Win95/...
  • 決定論、非決定論性
    決定論、非決定論ちう表現は、しばしば哲学や科学的宗教的側面で語られるが、 コンピュータプログラムにおける決定論とは、プログラムコード実行時における、 その動作や振る舞いにあいまいな点が無く、記述されたコード内容から振る舞いが予測でき、 何度実行しても同じ結果を返すコードの事を言うんや。 これに対し非決定論的なプログラムコードとは、プログラムコード実行時までその動作や 振る舞いが不明である様子を指し、具体的な例としては、入力データを要求するがデータが不定な プログラム、またはコンピュータゲームにおける人間のコントローラ操作による 未知の要素が含まれる場合が該当するちうわけや。 厳密には異なるが理解しやすい例としては、バグが内在するフィルタプログラムに対し、 前提としていっぺんも実行またはデバックされておらへんちう条件下で、未知のデータを入力する 状況では、プロ...
  • スレッド
    掲示板におけるスレッド スレッドとは。掲示板の構成要素のこと。トピックとも言われる。 スレッドは掲示板に特定のテーマを持つ小さな掲示板のようなものである。 扱う話題が多岐に渡る場合や人数の多い大きな掲示板では、話題が散漫になりがちで、議論が進行しなくなることがなくもない。 コンピュータにおけるスレッド スレッドとは、軽量プロセスと呼ばれる実行の主体。 スレッドとプロセスとマルチタスク WindowsなどのOSは、一つのCPUであっても同時に複数のソフトウエアが動作するように設計されている。 単一のCPUでも複数のソフトウエアを同時に利用可能なOSをマルチタスクOSと呼ぶ。 現在、一般的となったパーソナルコンピュータ用OSはマルチタスクOSである。 プログラムが実行される時、必ず一つのプロセスとしてコンピュータ上で実行される。OSからは 一つ...
  • GDIでバックバッファを用いてウインドウに線を書く
    ウインドウ再描画のもう一つは、メモリー内にGDIビットマップを保持するヴぃでおめもり領域を確保し、ペイントいべんとでバッファヴいでおめもりを描画。 描画はバッファヴぃでおめもりに対して行う。 MainWnd.sbp '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainWnd' TODO この位置にグローバ...
  • Gotoによる最適化;分岐予測およびキャッシュヒット率の向上
    昨今CPUではますます分岐予測やキャッシュヒット率の向上が、大きな要素を占めている。 分岐予測 キャッシュメモリ Gotoはうまく使うことで、ループや分岐のの単純化出来る場合がある。 処理の大半はループ(とそれに絡む分岐)なので、Gotoは積極的につかうべきである。 キャッシュコンシステンシイ プロセッサのキャッシュメモリに入るコードか、そうでないコードでのレイテンシの問題のこと。 もし、ループ構文の中でロングジャンプが発生していた場合、キャッシュメモリの範囲を 超えたアドレスに頻繁にジャンプする事になる。 この振る舞いは、命令キャッシュの範囲を超えているので、命令キャッシュのコンシステンシイ に問題が生じキャッシュレイテンシに差が生じる。 一例としてはCore2マイクロアーキテクチャでは、一次命令キャッシュ内に収まるような小さな ジャ...
  • C
    C (C言語 , C Language) 汎用プログラミング言語。1972年にベル研で開発された。BASICとは異なる流れで発展した。 我が国では業界標準【要出典】とされていた言語。 歴史的には、Algol60を参考にCPLが作られ、BCPLが開発された。その後、B言語となり、C言語が開発された。 OSを開発するために用いられた言語で、コンパイラの移植に適した構造であった。 より規模の大きい、WindowsやUNIX等のOSが動作するコンピュータでは、C言語が標準的な開発言語 となっている為、システム開発は次第にC言語中心となっていった。 現在では、Windows環境で動作するC言語のコンパイラは数種類存在する。 C言語は、時代と共に仕様が変更され、現在では、携帯電話やモバイルデバイス、パーソナル コンピュータから大型計算機まで、数多くの種...
  • VB
    VB(Microsoft Visual Basic) Microsoft社が開発したBASIC言語でWindows環境での動作に適した拡張を行った BASIC処理系。 歴史 Microsoft社が開発した初期のMicrosoftBASICを拡張し、構造化構文と構造体など 変数型の改良、インタプリタ+コンパイラの対応を経てQuickBASICが開発された。 この時点で言語処理系として他の処理系と比べて引けを取らない拡張が行われ 旧式のMicrosoftBASICと比べて先進的な機能が実装された。 QBasicはコマンドCUIで行番号編集のエディタからフルスクリーンエディタ を含む統合開発環境とデバッカを新たに備えたインタプリタで コンパイラ機能を取り除いた簡易的なQuickBASICと呼べるもので、 英語版MSDOSやWindows95CDROMな...
  • ステップ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...
  • ステップ31 「ツールバーを使う④(ツールチップを表示する)」
    ステップ26 「ツールバーを使う③(ホットイメージ)」の続きです。ホットイメージツールバーにツールチップを表示してみます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Toolbar4.zip(プロジェクトに必要なファイルがすべて入っています) ツールチップの表示方法 WM_NOTIFYメッセージを感知し、ツールチップ用の文字列をセットするだけという、非常に簡単な流れになります。具体的には、以下のような流れになります。 ① WM_NOTIFYメッセージがメッセージコードTTN_NEEDTEXTとともに送られる ② TOOLTIPTEXT構造体のlpszTextメンバに文字列を示すポインタをセットする Type TOOLTIPTEXT hdr As NMHDR NMHDR構造体にコマンド情報...
  • ステップ26 「ツールバーを使う③(ホットイメージ)」
    フラットツールバーにホットイメージ機能を付け加えます。ホットイメージとは、1つのボタンに対し、通常画像と浮き上がったときの画像を持たせる機能のことです。今回は、フルカラーのボタンイメージを採用するので、なかなかの見栄えになるかと思います。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Toolbar3.zip(プロジェクトに必要なファイルがすべて入っています) 前回(ステップ25)のソースプログラムに変更を加える形で作業を進めていきます。前回からの変更箇所を太字で示しています。新規にプロジェクトを作成させる方は、プロジェクトオプションで「コモンコントロールを使用する」にチェックを入れておくのを忘れないようにしましょう。 チェックしておきたい関数は? コモンコントロールのイメージリスト機能を使用するため、Imag...
  • ステップ10 「プログレスバーとタイマー処理」
    型変換の警告が出るが公式の解説でOK プログレスバーとは、インストール画面などでよく見かけますね。処理の進行具合を示すメーターのようなものです。今回は、タイマー処理とプログレスバーを組み合わせ、カウントプログラムを作ってみます。 早速、新規プロジェクトを作るわけですが、注意点が1つ。プログレスバーはコモンコントロールの部類に入り、新規プロジェクト ダイアログの2つ目の画面(プロジェクト オプションが設定できるところ)で、「コモンコントロールを使用する(api_commctrl.sbp)」にチェックを入れておかなければなりません。その点を踏まえ、プロジェクトを作成してみましょう(プロジェクト名は "TimeCount" とします)。 ちなみに、プロジェクト オプションは、プロジェクト作成後、メニューの「表示」→「プロジェクト オプション」からも変...
  • ステップ9 「ビットマップビューワを作る」
    今回は、メニューコントロールや「ファイルを開く」ダイアログボックス、ビットマップ用のAPI関数を活用し、ビットマップビューワの作成にチャレンジしてみます。 プロジェクトの作成 ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "BmpViewer" とします)を作成し、メニューの作成(IDは "MainMenu")、メインウィンドウへのメニューの貼り付けを行っておきましょう。 "MainWnd" のプロパティ設定 まずは、ベースとなる "MainWnd" を開き、ウィンドウ プロパティの設定を行います。 背景色のボタンをクリックし、"NULL" に設定しておきます。 メニューを "なし" から "MainMenu&qu...
  • GDI
    Windowsのグラフィクス全般を扱うサブシステムで、その内容は比較的広範囲で難易度は高め。 Windowsではすべてのグラフィクスはデバイスコンテキストというハンドル(ポインタ) によって示されるメモリー領域にアクセスする。 このデバイスコンテキストは、デバイスに依存しない形でデータを保存している。 データタイプが汎用的で特定のグラフィクスデバイスに依存しないが、やや抽象的で 実体がないデータだ。これをDIBといい、デバイス非依存ビットマップという。 通常、ウインドウズ上でグラフィクスを扱う時は、このDIBを扱っている事になる。 これに対し、DDBというものがある。これはデバイス依存ビットマップと呼ぶ。 データの構造がディスプレイデバイスに強く依存したもので、ウインドウズでは、 これらのDDB,DIBというレイヤーを通してグラフィクスを扱っている。 ...
  • ステップ23 「ステータスバーを使う③」
    型の不一致による警告がでるが動作には問題無し。 どうしても気になるならキャストして黙らせてもよいのですが、 読みにくくなるだけだと思われるので、#strictを外すのがいいかもしれない。。 今回はステータスバーの各パーツにアイコンを表示してみます。少し細工を加えるだけで、ちょっとした機能も見栄えが良くなります☆ ※Comctl32.dllのバージョンが4.71以降であることが必要です ということで、上の画像にあるような三つのアイコン(16*16)をstateプロジェクトの中に用意しておきましょう。 icon1.ico(日付用)、icon2.ico(時刻用)、icon3.ico(サイズ用) ※右クリックで「対象をファイルに保存」 ステップ22でstateプロジェクトを作成されている方は今回のプログラムの太字の部分を参考にソースを編集してみて下さい。プロジ...
  • ステップ16 「RPGのマップ移動機能を作る①」
    今回はスプライト処理をはじめとするテクニックを利用し、マップ、および主人公の描画をRPGライクに行います。 なお、今回からの解説は、First Seed Materialで公開されているRPG用素材を利用させていただきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy.zip(プロジェクトに必要なファイルがすべて入っています) このステップの要点は、スプライト処理です。ビットマップのマスク処理などといったほうが、親しみがあるかもしれません。具体的には、ビットマップに対して以下のような演算をさせ、画面に出力します。 = AND OR これを動かすとなると少し大変なので、まずは右上にあるような画面を作ってみることにしましょう。 ノーマル ウィンドウ ベースの新規プロジェクトを作成し...
  • 機械
    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で与えた速度で指定位置に反時計回りで移...
  • ステップ11 「テキスト エディタを作る」
    Sub MainWnd_IDM_OPEN_MenuClick()の Dim buffer As StringをDim buffer As *Byteに、 buffer=ZeroString(dwFileSize)をbuffer=malloc(dwFileSize)に それぞれ変更。 今回は、必要最小限の機能がついたテキスト エディタを製作します。 必要最小限の機能ってどんなものがあるの? 開く、保存 だけです(キッパリ)。しかし、これではさすがに寂しすぎるので、コピー&ペーストなどの編集メニューまでをこのページで解説することにします。 さっそく作ろう! ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "TextEditor" とします)を作成し、メニューの作成(IDは "MainMenu")...
  • トップページ
    abwikiへようこそ!! abwikiは作者が大風呂敷を広げたものの結局回収できなくなり放置、 そして公式ページは繋がらないというヘタレ言語 ActiveBasicの情報集約が目的です。 当wikiでは安定版と思われるVersion 4.24.00を使用しよう! とおもひます。。。 テスト←wiki練習用。好きに使ってくださいね!雑談、悩み告白、暴れたい人もどうぞ。 ※注意 当wikiの記述は信頼性を保証するものではありません。 ActiveBasicはバージョンごとの互換性に問題があります。 コーディングスタイルは人それぞれです。ABのような始まってもいないものでは議論するだけムダです。だからといって IOCCC のようなスタイルは控えた方が無難です。 個人情報の書き込みはおやめください。 目次 基本←基本的な使い方 応用←実践的用法 リファレンス←関数、命令の...
  • コールバック関数って何?
    コールバック関数は、事前に登録しておき、その後必要に応じて呼ばれる関数のことである。 通常、関数やプロシージャなどは、プログラム内のコードから呼び出され実行される。一例としてsin()、Math.sin() などの三角関数は、print sin(pi)などのようにプログラム内で記述が現れた際に実行される。 一般的な関数は、すべて手続きに従って呼び出され実行される。 これに対して、コールバック関数は通常の手続きの流れとは異なり、関数がプログラム内部の 主としたフロー内から呼ばれないものの事を指す。 コールバック関数は、与えられた関数名を予め登録しておき、主たる処理のフローとは個別に、 何らかの処理が必要になった場合に、システムによって呼び出される。 この仕組みは割り込みなどの仕組みに応用出来る。 コールバック関数は、言語上、明確に区別されるものではな...
  • ステップ18 「RPGのマップ移動機能を作る③」
    前回の解説で主人公キャラが自由に動け回れるようになったので、今回は任意のマップを描けるようにしてみます。 マップ図にマップチップを割り当てるという、非常にシンプルな細工をするわけですが、マップチップの種類が非常に多いため、数字攻めになってしまうかもしれませんが、根気良くがんばりましょう。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy3.zip(プロジェクトに必要なファイルがすべて入っています) 今回も、ステップ17「RPGのマップ移動機能を作る②」で掲載したプログラムの変更点を太字で表しているので、参考にして下さい。 また、以下のようなマップの配置図(25*20)をCSV形式で用意しておく必要があります。プロジェクトが保存されているディレクトリに "map.csv" というファイル...
  • メニュー
    STR$( - ) 目次 トップページ 基本 応用 リファレンス AB以外の開発環境 便利ツール ABによる生成物集積所 FAQ N88BASIC 2ch過去ログ Win32プログラミング講座 for AB4.24 ABによるアルゴリズム事典 検索 リンク 公式 ActiveBasic Web Ring "ACBAS" 2ch 会議所 投票 更新履歴 取得中です。 ここを編集
  • 応用
    実践的なプログラミング、コンピュータ理論(仕組み)、アルゴリズムなど 何か要望ある?(あったら作ってね的な) アルゴリズム関連 暗号化 最適化 2進数に変換してみる Base64 エンコード DCT(離散コサイン変換) 基数変換 画像の回転 ビットカウント xorshift システム関連 ファイル圧縮してみよう htmlhelp 文字コードの変換 マルチスレッド デッドロック ダイアログボックスをリソースから読み出してみよう プログレスバー ステータスバー ウインドウの列挙 CPU使用率の取得と表示 GDIでお絵かき 壁紙チェンジャー スクリーンセーバーを作る必要性 メモリ上の機械語プログラム タイマー ラーメンタイマー デジタル時計 HDD温度を調べる メッセージフック レジストリをいじってみたい INIファイル コマンドライン引数 クリップボード マニフェスト埋め込み(XPスタ...
  • 安定版
    安定版(あんていばん、あんじょうばん)とは、正式版やベータ版、新旧は問わず、そのプログラムでもっとも目立ったバグが無く安定しているバージョンのこと。 ABはバージョンアップごとにバグフィックス、機能追加とそれによるエンバグ、デグレードが多々発生した経緯があり一概にバージョンアップを推奨できなかった。 しかしそれももうおしまい。5年という月日は長すぎた。
  • ファイル圧縮してみよう
    Common Archivers Library からCAB32.DLL 開発者 SDK v0.98をダウソしましゅ。 展開して、cab32.dllを、システムホルダに投入します。 ABのプロジェクトでウインドウにリストボックス(ID=ListBox1)とボタン(ID=CommandButton1) だけの画面を作ります。このとき、MainWndの拡張スタイルでドラッグ&ドロップを許可にします。 イカのコードをコピペします。終わり。 ----------------------------------------------------------------------------- イベント プロシージャ --------------------------------------------------------------------...
  • Apple
    アップルとは、コンピューターやそれに関連するソフトを開発する世界的な会社。 一番偉い人はジョブスさん。 日本ではNECという会社がPC88シリーズを発売し、国内で圧倒的なシェアを獲得していた1980年代。 アップルはAppleIIというコンピュータで牙城を崩そうと奮戦した。 1990年代前半のNECのPC98時代にはMacintoshが軌道に乗り、 NECが死滅したWinows95以降のMS偏重時代にも一定のシェアを維持をした。 2001年WindowsがXPを発表。アップルは新しいUnixベースのMac OS Xを発表、これに対向した。 このことは、Unixが世界を支配したことを意味している。(WindowsNT系はPOSIX準拠) アップルは携帯音楽プレイヤーiPodの成功を皮切りに、iPhone,ipadとモバイル機器にも力を入れており、 とくにi...
  • 歴史
    太古 ABは1999年にバージョン1がリリースされたらしい。 そして2.62まではインタプリタとして機能していた。 この時代はよくHSPと比較されていたが、当然AB2に勝ち目はなかった。 Ver3 AB3の正式版リリースは2003年7月。 ついにABはコンパイラを持つようになった。 ここからしばらくの間、ABは絶頂期を迎える。 当時も無料でexeを吐く処理系はあったが、ABのように国産でIDEの環境なんてなかったはずなの。 こんな美味しい環境を使わないアホはいないということで、きっとユーザーも増えたはずだ。 このころ登場した一部のヘヴィーユーザーは未だに語りぐさとなっている。 山本氏がカンパを始めたのもこのころである。 この時代はよくVBと比較されていたが、当然AB3に勝ち目はなかった。 Ver4 バージョン3で勘違いしたのが悪夢の始まりである…。 A...
  • ステップ17 「RPGのマップ移動機能を作る②」
    前回やった、草原マップ、主人公キャラの描画に引き続き、今回はキー操作に反応し、キャラが自由に歩き回れるようにするプログラムを作成していきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy2.zip(プロジェクトに必要なファイルがすべて入っています) 今回も、First Seed Materialで公開されているRPG用素材を利用させていただきます。 前回作成したプログラムがある方は、MainWnd.sub のプログラムを変更するだけで実現できます。このページのプログラムリストは、前回からの変更点を太字で示してあるので、それを参考に改良してみて下さい。 新規にプログラムを作成する方は、まずはプロジェクトを作成しておきましょう。新規作成→プロジェクトで、"Fantasy" などという名前のプロ...
  • エディットボックス(1)
    エディットボックスについて † エディットボックスは文字や数字を入力できるコントロール 作られた直後は32KBまで編集可能 EM_SETLIMITTEXTメッセージを使うと最大で2GBか4GBまで増やせるが、9x系のOSだと64KBまでという制限がある エディットボックスのスタイル † RADで変更できるエディットボックスのスタイルについて 無効(使用不可) 入力エリアが灰色になって入力フォーカスを受け付けないが、Set、GetWindowTextは普通に使える 可視 チェックしておかないとエディットボックスが見えない グループ グループボックス?を参照 タブストップ 加筆plz 複数行 複数行のテキストが扱えるようになる 水平スクロールバー、垂直スクロールバー、垂直オートスクロールのスタイルが使用可能になる パスワードスタイルは使えない ...
  • ステップ28 「メモリ監視ツールを作る②(設定をレジストリに保存)」
    前回と同じ修正が必要。 またこのサンプルを実行するとレギストリに永遠に値が残るのでこれは重大な問題だと癒える。 前回に引き続き、メモリ監視ツールに、オプション項目を付け足してみます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ SystemWatcher2.zip(プロジェクトに必要なファイルがすべて入っています) オプション項目って何をするの? 更新間隔の設定 最前面表示のオン/オフ 今回は、上記の2点と、それら設定項目のレジストリへの保存を試みます。 レジストリ操作 ① RegOpenKeyEx関数でレジストリキーをオープン ② RegQueryValueEx関数で値を読み込む / RegSetValueEx関数で値をセットする ③ RegCloseKey関数でレジストリキーを閉じる ...
  • 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より驚くほ...
  • オブジェクト指向入門
    歴史的には、オブジェクト指向言語の源流は、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 という構造体...
  • 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...
  • ステップ21 「ステータスバーを使う①」
    ステータスバーとはウィンドウアプリケーションでよく見かける左のようなものです。ちょっとした情報を表示するために使われるポピュラー機能ですね。 どーやって埋め込むの? イメージ画像では、ウィンドウにスッポリとはまっていますね。一見、スタティックコントロールのようにも見えますが、常にクライアント領域の端っこに表示されたり、分割表示できたりと、少し用途が違います。 具体的には、CreateStatusWindow関数を使用してステータスバーを生成し、表示するだけなので、作成方法はとてもシンプル。なにかしらアプリケーションを作るときには積極的に活用してしまいましょう(^^; CreateStatusWindow (style As Long, lpszText As BytePtr, hwndParent As DWord, wID As DWord) As DWord...
  • ステータスバー
    ステータスバーの中にプログレスバーを入れる。 プログレスバーをステータスバーの子にして、 SB_GETRECTでサイズ調整するのがミソ。 ↓プロジェクト名を"SPSP"にして、コモンコントロールを使用するにチェクを入れる。 '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainW...
  • 初めてのプログラム
    プロジェクトエディタを起動して 新規作成→Basicプログラムと進む。 エディタ画面に次のコードを貼りつけてリリースコンパイルのボタンを押す。 Dim myname[1208] As Byte wsprintf(myname, "平井公彦") MessageBox(0,myname, "名前", MB_OK) 名前を付けて保存するが出てくるので、適当なところに好きな名前で保存。 するとその名前のexeができる。 このexeをダブクリすると こんなのが出てくる。おめでとう! プログラムの経験が無い人は何がどうなっているのかわからないだろうが、今すぐに理解出きなくても良い。 これをいろいろいじってみることでどんな結果になるか試してみよう。 そして新しい単語が出てきたら、ヘルプに眼を通すことと、いろいろやってみること...
  • マウスストーカー
    マウスに画像が追従するやつ。 CreateイベントでSetTimerして DestroyイベントでKillTimerすればあとは Timerイベント内でカーソル位置にSetWindowPosすれば良い。 以下はプロジェクト名"jama"で作成。 '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル h...
  • ウインドウにファイルをドラックドロップする方法
    メインウインドウのプロパティ、拡張属性から、ドラックドロップを許可する、をちぇっく。 ウインドウのイベントコードの中から、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 複数のファイルを受け取る場合も同様...
  • N88BASIC互換モードでドラッグドロップを受け付ける
    #N88BASIC'自分のウインドウハンドルを取得Dim hwnd As HWNDhwnd = GetForegroundWindow()DragAcceptFiles(hwnd, TRUE)'どrを受け入れる'ウインドウプロシージャのサブクラス化Dim default_wndproc As *Function(a As Long, s As Long, d As Long, f As Long) As Longdefault_wndproc = GetWindowLong(hwnd, GWL_WNDPROC)SetWindowLong(hwnd, GWL_WNDPROC, AddressOf(Subclass1))'俺のプロシジャーFunction Subclass1(a As Long, s As Long, d As Long, f As Lo...
  • 文字列処理
    文字列処理は重要です。ポインタが理解出来ているかどうかの重要な見極めにもなります。 基本 "今日は○○する気分ではない" という文字列は最後に0(ナル文字)がつきます。 ナル文字とヌルとヌルポインタの違いはその意味にあり、 ナル文字(NUL)はゼロ終端系文字列(*1)に於ける文字の終了 nullは無効な値 null pointerは無効なポインタ をそれぞれ意味します。 補足 1)ゼロ終端系でない文字列にはPASCAL文字列等があり、PASCAL文字列は処理速度に優れた特性があるため、Excel内部等で用いられている。 実際に使ってみよう Sting型に慣れている人は面倒だと思うけど、ついてきて欲しい。 1 byte型配列を使おう! #N88BASICDim mes[123] As Byte'1...
  • GDIでお絵かき
    プロジェクトエディターにてウインドウを作成。 プロジェクト名 = hiraiGDI '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainWnd' TODO この位置にグローバルな変数、構造体、定数、関数を定義します。Const ToRad(x) = (x * 3.14/180)Class HIRAIGDIPriv...
  • DLLでAVGが反応する
    概要 コンパイルしたDLLプログラムがWin32/Heurと認識される。 原因 誤認識だと思われます。 AVGには内部にヒューリスティックエンジンが搭載されており、 VisualC++などで作成されたDLLと異なる形式のDLLがABによって作成 されるために怪しいと判定され検知されるようです。 Win32/Heurは現存するウイルス種別の定義ではなく内部の分析エンジンの警告名です。 対処法 AVGおぷしょんの除外を適用するか、VisualC++などでDLLを作成する。
  • ステップ12 「N88BASICスタイルで行こう!(一休み?)」
    回までのページをちゃんと読んでくれた皆さん、少しお疲れのようですので、今回は幼少に戻った気分で、N88BASIC遊びをしてみます。 このページでは、技術的なことは忘れて、「あの頃」のプログラムをふんだんに使って懐かしむことにしましょう。思い出がない方も「元祖N88BASICはこんなもんだったんだ~」と頭の隅にでも入れておきましょう(私もその一人なのですが…)。このページに関しては、最新技術を無視し、時代に逆らった内容だということをお断りし、内容に入っていきます。 ということで、ここからは以下に示す2つの条件を除き、N88BASIC互換以外の命令語、関数は使いません!(命令語の詳細情報は、ヘルプファイルをご覧下さい) 条件1 ご存知の通り、ActiveBasicはWindowsプログラミング用に開発されているので、そのままではDOSみたいな画面は出てきませんし、Print...
  • BASIC
    BASIC(べいしっっく) 我が国では最もポピュラーとされていたホビー用プログラミング言語。 Beginner s All purpose Symbolic Instruction Code (初心者のためのすべて目的シンボリック命令コード) の略で、BASICの文字はすべて大文字で書く。 プログラミング初学者でも挫折しないように配慮されており、 FORTRANの子分として登場した。 1964年、米国ダートマス大学にてタイムシェアリングシステム"DTSS"(多人数が一台のマシンを 共有するもので、今で言うクラウド) 上の言語としてALGOLともう一つのユーザー言語として利用されるよう 設計されていた。 その後、マイクロコンピュータの発明によりパーソナルコンピュータが自作され、BASIC言語の移植が 盛んに行われるように...
  • Bessel(ベッセル)関数
    ベッセルの微分方程式におけるy(x)の特異解である。 ベッセルの微分方程式は2階の線形微分方程式であるため、線形独立な2つの解が存在するが、その内n→∞で0に収束するものを第1種ベッセル関数と呼びJn(x)と表す。また逆にn→∞で発散するものを第2種ベッセル関数(もしくはノイマン関数ないしウェーバーの関数)とよびYn(x)とする。 第1種ベッセル関数は級数展開によっても定義されるが、変数xが大きいと桁落ちが生じる。そこで下記プログラムでは漸化式(1)を用いて求める  Jn+1(x) = (2*n/x)Jn(x) - Jn-1(x) ・・・ (1) 十分大きな整数Nに対してJN(x)=ε、JN+1(x)=0とする初期条件よりJN-1(x)、JN-2(x)・・・を漸化式で求めることで目的の解を得る。出発点NはJ0(x)からJx(x)まではほぼ々大きさで、...
  • @wiki全体から「ステップ20 「プロセス デバッガによるデバッグに挑戦」」で調べる

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