abwiki @ ウィキ (ActiveBasic非公式wiki)内検索 / 「領域」で検索した結果

検索 :
  • GDIでバックバッファを用いてウインドウに線を書く
    ...持するヴぃでおめもり領域を確保し、ペイントいべんとでバッファヴいでおめもりを描画。 描画はバッファヴぃでおめもりに対して行う。 MainWnd.sbp '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainWnd' TODO この位置にグローバルな変数、構造体、定数、関数を定義します。'バッ...
  • 変数
    ... 変数 メモリの領域に名前をつけたもの ポインタ メモリの領域を指すもの 関数 メモリ上の一連の処理に名前をつけたもの このようにすることで、変数も関数もオブジェクト(クラス)も あくまでコンピュータ上のものであると直感的に理解できるようになる。
  • 指す
    ポインタが任意メモリ領域を参照することを指すという。 int *px; int ix; px = ix;/* pxはixを指す
  • ヒープ
    メモリ領域に付けられた名前。 スタックとの対義語。 スタックが底を持ち、データの出し入れが限定的なのに対して ヒープは可変でデータのどの位置でもあくせすできる。
  • FFT (高速Fourier変換)
    ... この表のための記憶領域獲得に失敗すると1を返す (正常終了時 の戻り値は0). これらの表の記憶領域を解放するには $ n = 0$ として 呼び出す (このときは x[], y[] の値は変わらない).*/Dim last_n As Long /* 前回呼出し時の n */Dim bitrev As *Long /* ビット反転表 */Dim sintbl As *Long /* 三角関数表 */Function fft(n As Long,x As *Single, y As *Single) As LongDim i As Long, j As Long, k As Long, ik As Long, h As Long, d As LongDim k2 As Long, n4 As Long, inverse As LongDIm t As Single, s ...
  • 宣言と定義
    ...、変数データに必要な領域を確保します。 と書いてある。なんのこっちゃ。 まともな言語であればこれらは通常区別される。 宣言 そのオブジェクトを使いますよとコンパイラに知らせるだけ 定義 実際にそのオブジェクトがメモリに割り当てられる 宣言と定義の違いは微小にして多大である。 宣言は同じものが幾つあっても問題ないが定義は1つだけしか出来ない。
  • 支配
    支配(しはい)とは、特定のメモリ領域を名前で表現し、その名前でアクセスできることを言う。 例えば 変数の宣言 構造体やクラスのインスタンス化 などなど。 また、自動変数とそれを指すポインタがあったとき、このポインタは自動変数に支配されているという。 自動変数による支配は、ポインタそのものの生存期間が長いほど問題になりやすい。 { int a, *b; b = a; } 上記の場合ではa, *bともに寿命が同じであるため問題は起こりにくいが、 { int *b; { int a; b = a; } //何らかの処理 } この場合、aのスコープを抜けたあとに*bを使う可能せは0ではないため、アクセス違反などの問題が発生することがある。
  • 名前
    ...ェクト(特定のメモリ領域)に名前を付けるには宣言をしなければいけない。 このときに、ABではDim文やDeclare文などで明示的に宣言しなければいけない。 名前をつけるときに、昔のBASICはインタプリタであったため、文字数をすくなくしたり、 よく使う変数を先に使っておくといった裏技があったが コンパイラ言語では無意味であるばかりか、可読性の低下を招くだけである。 命名にあたっては、一定の規則をきめておこなうことが多く、 マイクロソフトではハンガリアン記法なるものに取り憑かれたことがあった。 一般的には次のような記法が有効であるとされる。 グローバル変数 g_ ポインタ変数 p_ メンバ変数 m_ スタティック変数 s_
  • ステップ21 「ステータスバーを使う①」
    ...が、常にクライアント領域の端っこに表示されたり、分割表示できたりと、少し用途が違います。 具体的には、CreateStatusWindow関数を使用してステータスバーを生成し、表示するだけなので、作成方法はとてもシンプル。なにかしらアプリケーションを作るときには積極的に活用してしまいましょう(^^; CreateStatusWindow (style As Long, lpszText As BytePtr, hwndParent As DWord, wID As DWord) As DWord styleにはウィンドウスタイル(WM_???)及びステータスバースタイルを指定します。 lpszTextにはステータスバーの初期文字列を指定します(省略時は0を指定)。 hwndParentには親ウィンドウのハンドルを指定します。 wIDにはステータスバーを示すIDナンバー...
  • GDI
    ...って示されるメモリー領域にアクセスする。 このデバイスコンテキストは、デバイスに依存しない形でデータを保存している。 データタイプが汎用的で特定のグラフィクスデバイスに依存しないが、やや抽象的で 実体がないデータだ。これをDIBといい、デバイス非依存ビットマップという。 通常、ウインドウズ上でグラフィクスを扱う時は、このDIBを扱っている事になる。 これに対し、DDBというものがある。これはデバイス依存ビットマップと呼ぶ。 データの構造がディスプレイデバイスに強く依存したもので、ウインドウズでは、 これらのDDB,DIBというレイヤーを通してグラフィクスを扱っている。 普段、画面の解像度を気にせずにソフトウエアを扱えるのも、こうした抽象レイヤーの存在が大きい。 例えば、画面の色数のプロパティが16bit(6万色)しかないのに、ほぼ全てのアプリケーション ...
  • 変数宣言どうやるの?
    変数って何? 変数とは、データを格納する名前の付いた領域のこと。 変数を使うことで、ユーザが打ち込んだデータを計算したり、計算結果を記憶することができる。 宣言 宣言とは、今から変数を使いますよっていう意思表示のこと。 ABでは変数にも用途に応じた幾つかの種類があってはじめのうちは大変。でもすぐなれる。 変数名をvaname、型名をtypenameとすると その変数の宣言は次のようになる。 Dim vaname As typename 変数名には(英文字|アンダーバー)(英文字|数字|アンダーバー)*が使える。勿論、予約語は使えないよ。 スペースが使えたり256文字より長い変数名だとコンパイラが調子狂ったりするけど気にしたら負け。 型名についてくわしくは基本型を参照のこと。 Dim a As Long'Long型(整数)...
  • 初めてのプログラム
    ...文字など)を格納する領域のこと。 上の例ではmynameが変数。 関数(かんすう) |関数ってのはたくさんの命令に名前をつけたもの。wsprintfとMessageBoxが関数。 予約語(よやくご) |その言語が、特定の意味を持っているので変数や関数の名前にしてはいけない語句のこと。 Dim、As、Byteが予約語。
  • ステップ22 「ステータスバーを使う②」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- Const ID_STATUS = 70 Dim hStatusWnd As DWord ----------------------------------ここまで---------------------------------- ↑プログラムの先頭部分は前のままです。 Sub MainWnd_Destroy() status_DestroyObjects() PostQuitMessage(0) End Sub ↑Des...
  • マウスストーカー
    ...ジャを記述するための領域になります。Sub MainWnd_Destroy()KillTimer(hMainWnd, 0)jama_DestroyObjects()PostQuitMessage(0)End SubSub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)SetTimer(hMainWnd,0, 20, 0)End SubSub MainWnd_Timer(TimerID As DWord)Dim po As POINTAPIDim buf[666] As ByteGetCursorPos(po)wsprintf(buf, "%d %d", po.x,po.y)SetWindowText(hMainWnd, buf)SetWindowPos(hMainWnd, HWND_TOPMOST, po.x+...
  • メインウインドウのスクロールバーを使う
    ...O構造体をグローバル領域に定義(MainWnd.sbp内)する。 ' TODO この位置にグローバルな変数、構造体、定数、関数を定義します。Dim scr As SCROLLINFO メインウインドウのイベントハンドらから、Createを記述。SCROLLINFO構造体を 指定してスクロールバーのプロパティを設定。 Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)scr.cbSize=SizeOf(SCROLLINFO)scr.fMask=SIF_POSscr.nMin=0scr.nMax=100scr.nPage=1SetScrollInfo(hMainWnd,SB_VERT,scr,TRUE)End Sub すたてっくてきすとをウインドウに一つ張る。 そして、メインウインドウのイベント...
  • ステップ25 「ツールバーを使う②(ボタンが浮き出すフラットツールバー)」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- Const ID_TOOLBAR = 70 ツールバーのID Sub SetTbButtonData(ByRef ptb As TBBUTTON, iBitmap As Long, idCommand As Long, fsState As Byte, fsStyle As Byte) ptb(TBBUTTON構造体)にボタン情報を格納する With ptb .iBitmap=iBitmap .idComm...
  • ステップ23 「ステータスバーを使う③」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- Const ID_STATUS = 70 Dim hStatusWnd As DWord Dim hIcon1 As DWord, hIcon2 As DWord, hIcon3 As DWord ----------------------------------ここまで---------------------------------- ↑MainWnd.sbpの先頭部分では、3つのアイコン ハンドルを格納するための変数を定義しておきます。 Su...
  • スクロールバーコントロールを使う
    ...O構造体をグローバル領域に定義(MainWnd.sbp内)する。 ' TODO この位置にグローバルな変数、構造体、定数、関数を定義します。Dim scr As SCROLLINFO メインウインドウのイベントハンドらから、Createを記述。SCROLLINFO構造体を 指定してスクロールバーのプロパティを設定。 Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)Dim hscr As HWNDhscr=GetDlgItem(hMainWnd,VScrollBar1)scr.cbSize=SizeOf(SCROLLINFO)scr.fMask=SIF_ALLscr.nMin=0scr.nMax=100scr.nPage=1scr.nPos=45SetScrollInfo(hscr,SB_CTL,sc...
  • マージソート
    ...と同程度の作業用記憶領域を必要とする。 下記プログラムでは、マージソートが安定であることを示すために整列データに整列に使用するキー欄(key)以外に情報欄(info)を持たせている。さらに高速にするには、11行目を if If first - last 10 Then とし、44行目で Else simplesort などと挿入ソートなどに切り替えればよい。 プログラミング掲示板「ソートロジック大会」なども参照のこと マージ 整列したデータをまとめてひとつの整列したデータにすることをマージ(併合)という。整列した大きなデータを更新する際は、追加分のデータを整列した後に整列済みのデータにマージするほうが圧倒的に速い。 Type SORTkey As Integerinfo As IntegerEnd TypeConst N = 10Dim a[N] As ...
  • ステップ30 「MCIコマンドで音楽ファイルを再生する」
    ...; メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、' グローバル領域として利用することができます。' ----------------------------------ここから----------------------------------Dim mop As MCI_OPEN_PARMS' ----------------------------------ここまで---------------------------------- ↑MainWnd.sbpの先頭部分には、MCIデバイスのオープン情報のための構造体を用意します。 Sub MainWnd_Destroy() SoundTest_DestroyObjects() PostQuitMessage(0)End Sub ↑De...
  • ステップ28 「メモリ監視ツールを作る②(設定をレジストリに保存)」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- Dim RenewalTiming As Long 更新間隔 ----------------------------------ここまで---------------------------------- ↑MainWnd.sbpの先頭部分には変更点はありません。RenewalTiming=500という行はあってもなくても構いません。 Sub MainWnd_Destroy() タイマーを終了する KillTimer(hMai...
  • ステップ32 「アナログ時計を作る」
    ...; メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、' グローバル領域として利用することができます。' ----------------------------------ここから----------------------------------Const PAI=3.14159265358979323846264Const ID_TIMER=100Dim st As SYSTEMTIMEDim bTopMost As Long' ----------------------------------ここまで---------------------------------- ↑MainWnd.sbpの先頭部分です。定数、グローバル変数の宣言を行います。 Sub MainWnd_Destroy() cloc...
  • ステップ26 「ツールバーを使う③(ホットイメージ)」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- Const ID_TOOLBAR = 70 ツールバーのID Dim hImageList As DWord イメージリストのハンドル Sub SetTbButtonData(ByRef ptb As TBBUTTON, iBitmap As Long, idCommand As Long, fsState As Byte, fsStyle As Byte) ptb(TBBUTTON構造体)にボタン情報を格納する With...
  • ステップ5 「ボタン コントロールを使う」
    ...ing$関数で文字列領域の確保(ここでは255バイト)を行っているというところもチェックしておきましょう。 "文字列の確保" などという難しそうな言葉がでてしまいましたが、これは「buffer変数の文字数をあらかじめ255文字分(日付や時刻の文字数以上であればいくつでも可)にしておきましょう」というように解釈しておいて下さい。 imageプラグインエラー ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (p5-2.png) 今回は2つのAPI関数に触れましたが、今後ともより多くのAPI関数を利用することになるでしょう。API関数の記述のしかたはこんなもんだという感じだけでもつかんでいただけたら幸いです。
  • ステップ31 「ツールバーを使う④(ツールチップを表示する)」
    ...; メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、' グローバル領域として利用することができます。' ----------------------------------ここから----------------------------------Const ID_TOOLBAR = 70 'ツールバーのIDDim hImageList As DWord 'イメージリストのハンドルSub SetTbButtonData(ByRef ptb As TBBUTTON, iBitmap As Long, idCommand As Long, fsState As Byte, fsStyle As Byte) 'ptb(TBBUTTON構造体)にボタン情報を格納する ...
  • 文字コードの変換
    ...f utf16の領域確保 utf16 = calloc(wlen + 1) If utf16 = NULL Then Exit Function End If utf16変換 If MultiByteToWideChar(CP_UTF8, 0, utf8, -1, utf16, wlen) = 0 Then free(utf16) Exit Function End If ============================== UTF16=>ShiftJIS変換 ============================== まずは、長さを取得 Dim mlen As Long mlen = WideCharToMultiByte(CP_ACP,0,utf16,-1,NULL,0," ",NULL) If mlen = 0 T...
  • FAQ
    ... 値を格納する領域をいくつか起動する側で用意して、それらの領域を 指すポインターを引数として渡し、関数にポインターの先に値を埋め てもらう。 あるいは、関数の戻り値を構造体にして、その構造体に希 望の値を設定してもらう。あるいは(最後の最後の手として)global変 数を使うことを考える。 Q 「ハンガリー記法(Hungarian Notation)」とは。使う価値があるか。 |A ハンガリー記法には大きく分けてアプリケーションハンガリアン記法とシステムハンガリアン記法があり、Charles Simonyiが発明したのはアプリケーションハンガリアン記法の方であるが、 論文に「型の意味」と言う意味で「type」と言う単語を使ったため、Microsoft社のExcel開発グループとWord開発グループ以外の殆ど全ての開発チームで誤解が生じ、今に至る。 詳細は...
  • ラーメンタイマー
    ...ジャを記述するための領域になります。Sub MainWnd_Destroy()HiraiRamenTimar_DestroyObjects()PostQuitMessage(0)End SubSub MainWnd_CommandButton1_Click()Dim sss[555] As Byte'エデットボックスから数字を獲得GetWindowText(GetDlgItem(hMainWnd,EditBox1), sss, 555)g_counter = Val(sss) * 60'秒に変更SendMessage(GetDlgItem(hMainWnd, ProgressBar1), PBM_SETRANGE32,0, g_counter)SendMessage(GetDlgItem(hMainWnd, ProgressBar1), PBM_SETPOS,0,...
  • GDIでお絵かき
    ...ジャを記述するための領域になります。Sub MainWnd_Destroy()hg.delete()hiraiGDI_DestroyObjects()PostQuitMessage(0)End SubSub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)Dim p[100] As POINTAPIDim x As Longhg.init(hMainWnd)For x=0 To 100p[x].x = x*4p[x].y = 200-Sin(ToRad(x*4))*100Nexthg.polyline(VarPtr(p),101)End SubSub MainWnd_Paint(hDC As HDC)hg.show()End Sub HIRAIGDIクラスがGDIを扱うクラスで、 initでGDIを使う用意をする。 del...
  • ステップ9 「ビットマップビューワを作る」
    ...サイズとクライアント領域サイズの差 ファイルが開かれていない場合は抜け出す If FileName="" Then Exit Sub ビットマップをロード hBmp=LoadImage(GetWindowLong(hMainWnd, GWL_HINSTANCE), FileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE) If hBmp=0 Then MessageBox(hMainWnd, "ビットマップのオープンに失敗", "BmpViewer", MB_OK) Exit Sub End If ビットマップのサイズを取得 GetObject(hBmp, Len(BitmapReport), B...
  • ファイル圧縮してみよう
    ...ジャを記述するための領域になります。 Sub MainWnd_Destroy() Cab2_DestroyObjects() PostQuitMessage(0) End Sub ダロップ Sub MainWnd_DropFiles(hDrop As HDROP) Dim k As Long, j As Long Dim file[MAX_PATH] As Byte k = DragQueryFile(hDrop, -1,NULL,0) For j=0 To k-1 DragQueryFile(hDrop,j,file,MAX_PATH) SendMessage(GetDlgItem(hMainWnd,ListBox1), LB_ADDSTRING, 0, file) Next DragFinish(hDrop) End Sub ...
  • ステップ24 「ツールバーを使う①」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- Const ID_TOOLBAR = 70 ツールバーのID Sub SetTbButtonData(ByRef ptb As TBBUTTON, iBitmap As Long, idCommand As Long, fsState As Byte, fsStyle As Byte) ptb(TBBUTTON構造体)にボタン情報を格納する With ptb .iBitmap=iBitmap .idComm...
  • ステップ16 「RPGのマップ移動機能を作る①」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- 画面の大きさ X*Y Const MAX_MAPX=25 Const MAX_MAPY=20 マップチップ画像 Const FileName_Road="road.bmp" Const MAPCHIP_PIXEL=16 マップチップのピクセル数 Dim hRoadTipsDC As DWord Dim hRoadTipsBmp As DWord キャラクタチップ画像 Const FileName_Char=&qu...
  • 文字列処理
    ...ので、配列やメモリー領域を確保したりする場合は初期化が必要になる。 32個のByte配列を初期化する場合、For文を使う例を示す。 Dim nstr(31) As ByteFor i=0 to 31nstr(i)=0next i String型ではZeroString()関数が用意されているが、ここではByte型配列の文字列なので、 同等の処理は、ZeroMemory()関数を用いて行う事が出来る。 ZeroMemory(nstr,32) ZeroMemory()では要素数を与える。配列の添え字と要素数が一致しないので注意。 文字列のエスケープ記号処理の注意点 abの文字列は、C/C++のようなエスケープ記号をサポートしない。標準的なBASIC文字列は"\r\n"のような改行を 扱う事は出来ない。String型の文字列は、&quo...
  • ステータスバー
    ...ジャを記述するための領域になります。Sub MainWnd_Destroy()SPSP_DestroyObjects()PostQuitMessage(0)End SubSub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT) Dim ic As INITCOMMONCONTROLSEX Dim Statusbar_Sizes[2] As Long 'コモンコントロールの初期化 ic.dwSize=Len(ic) ic.dwICC=ICC_BAR_CLASSES InitCommonControlsEx(ic) 'ステータスバーを作成 hStatusWnd = CreateStatusWindow( _ WS_CHILD or WS_VISIBLE o...
  • ステップ27 「メモリ監視ツールを作る①」
    ...; メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、' グローバル領域として利用することができます。' ----------------------------------ここから----------------------------------Dim RenewalTiming As Long '更新間隔RenewalTiming=500 'ミリ秒Dim GlobalMemoryStatusEx As *Function(ByRef LPMEMORYSTATUSEX As MEMORYSTATUSEX) As LongDim hDLL As HANDLEType MEMORYSTATUSEX dwLength As DWord dwMemoryLoad As DWord...
  • ステップ11 「テキスト エディタを作る」
    ... クライアント領域のサイズを取得 GetClientRect(hMainWnd,rc) EditBox1のウィンドウ ハンドルを取得 hEdit=GetDlgItem(hMainWnd,EditBox1) hEditの大きさを変更する MoveWindow(hEdit, 0, 0, rc.right, rc.bottom,0) End Sub メニューの編集 "MainMenu" を開き、下のような構成になるよう、メニューの追加を行っていきます。メニュー項目を挿入する場合は、挿入したい場所の1つ上の項目を選択し、「挿入」ボタンをクリックしていくことを思い出しましょう。メニューの編集方法は、ステップ6、ステップ7で解説しています。 キャプション ID 備考 ファイル( F) - ポッ...
  • ステップ17 「RPGのマップ移動機能を作る②」
    ... メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- 画面の大きさ X*Y Const MAX_MAPX=25 Const MAX_MAPY=20 マップチップ画像 Const FileName_Road="road.bmp" Const MAPCHIP_PIXEL=16 マップチップのピクセル数 Dim hRoadTipsDC As DWord Dim hRoadTipsBmp As DWord キャラクタチップ画像 Const FileName_Char=&qu...
  • ステップ18 「RPGのマップ移動機能を作る③」
    ...; メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、' グローバル領域として利用することができます。' ----------------------------------ここから----------------------------------'画面の大きさ X*YConst MAX_MAPX=25Const MAX_MAPY=20'マップチップ画像Const FileName_Road="road.bmp"Const MAPCHIP_PIXEL=16 'マップチップのピクセル数Dim hRoadTipsDC As DWordDim hRoadTipsBmp As DWord'キャラクタチップ画像Const FileName_Char="...
  • @wiki全体から「領域」で調べる

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