- 【QBASIC互換!?】FreeBasic【GPL】
756 :デフォルトの名無しさん[]:2016/10/02(日) 11:34:15.98 ID:82+jvpD4 - >>775 のつづき。 表示文字(Coption)を動的に切り替える方法は、
If GetWindowTextLength(GetDlgItem(hWin,IDC_EDT1)) Then ' ok here we get only if user has typed some text GetDlgItemText(hWin,IDC_EDT1,@buff,SizeOf(buff)) SetDlgItemText(hWin,IDC_EDT2,@buff) SetDlgItemText(hWin,IDC_STC1,@buff) SetDlgItemText(hWin,IDC_BTN1,@buff) Else ' User didnt enter any text MessageBox(hWin,@Warning,@AppName,MB_ICONERROR) EndIf と見つかった。チュートリアル2参照。 .textと.Coption はこの方法で参照(値を読み取る)定義(値を設定する)できる。
| - 【QBASIC互換!?】FreeBasic【GPL】
757 :デフォルトの名無しさん[]:2016/10/02(日) 16:01:00.57 ID:82+jvpD4 - 非表示がうまく描けない。
ドイツ語サイトを見つけた。 https://www.freebasic-portal.de/
| - 【QBASIC互換!?】FreeBasic【GPL】
758 :デフォルトの名無しさん[]:2016/10/02(日) 17:29:01.38 ID:82+jvpD4 - >>757 非表示に成功。
DispStates1 = IsWindowVisible(hWin): 'ソフト全体のハンドルより表示状態を取得 hBtn=GetDlgItem(hWin, IDC_BTN2): '個別表示物のハンドル(枠番号)を取得, hBtn=0でエラー If (hBtn =0) Then DispStates2 = -1: 'ハンドルの取得に失敗 Else DispStates2 = IsWindowVisible(hBtn) EndIf 'hBtn = 0: DispStates3 = IsWindowVisible(hBtn): 'エラーを示すハンドルでの取得: 'DispStates3 =0,(その他の場合)を返す MessageBox(TakaHWND, "Hello ("+Str$(DispStates1)+") ("+Str$(DispStates2)+")"+Str$(DispStates3), "Messagebox caption", MB_ICONINFORMATION) 'https://msdn.microsoft.com/ja-jp/library/cc411211.aspx 'https://msdn.microsoft.com/ja-jp/library/cc364819.aspx 'http://blog.goo.ne.jp/masaki_goo_2006/e/41002821d5323a9b8c6efbb6b78c079c If (DispStates2 = 0) Then '非表示 DispStates3 = ShowWindow(hBtn, SW_SHOW ): '表示を指示 ElseIf (DispStates2 = 1) Then '表示 DispStates3 = ShowWindow(hBtn, SW_HIDE ): '非表示を指示 EndIf
| - 【QBASIC互換!?】FreeBasic【GPL】
759 :デフォルトの名無しさん[]:2016/10/02(日) 17:34:00.39 ID:82+jvpD4 - 眺めた関係定数等は、以下の通り
const SW_HIDE = 0 'ウィンドウを非表示にし、他のウィンドウをアクティブにします。 const SW_SHOWNORMAL = 1 'ウィンドウをアクティブにして表示します。 const SW_NORMAL = 1 ' const SW_SHOWMINIMIZED = 2 'ウィンドウをアクティブにして、最小化します。 const SW_SHOWMAXIMIZED = 3 'ウィンドウをアクティブにして、最大化します。 const SW_MAXIMIZE = 3 'ウィンドウを最大化します。 const SW_SHOWNOACTIVATE = 4 'ウィンドウを直前の位置とサイズで表示します。 const SW_SHOW = 5 'ウィンドウをアクティブにして、現在の位置とサイズで表示します。 const SW_MINIMIZE = 6 'ウィンドウを最小化し、Z オーダーが次のトップレベルウィンドウをアクティブにします。 const SW_SHOWMINNOACTIVE = 7 'ウィンドウを最小化します。 const SW_SHOWNA = 8 'ウィンドウを現在のサイズと位置で表示します。 const SW_RESTORE = 9 'ウィンドウをアクティブにして表示します。 const SW_SHOWDEFAULT = 10 'アプリケーションを起動したプログラムが 関数に渡した 構造体で指定された SW_ フラグに従って表示状態を設定します。 const SW_FORCEMINIMIZE = 11 'たとえウィンドウを所有するスレッドがハングしていても、ウィンドウを最小化します。
| - 【QBASIC互換!?】FreeBasic【GPL】
760 :デフォルトの名無しさん[]:2016/10/02(日) 17:34:51.75 ID:82+jvpD4 - システム関数など
''ShowWindow 指定されたウィンドウの表示状態を設定します。 '' ShowWindowAsync 別のスレッドによって作成されたウィンドウの表示状態を設定します。 ''FlashWindow タスクバー上のボタンやウィンドウのタイトルバーを点滅させる ''ShowOwnedPopups 指定したウィンドウが所有するすべてのポップアップウィンドウを表示したり隠したりします。 ''OpenIcon 最小化されているウィンドウを、元のサイズに戻し、アクティブにします。 ''SetWindowPos 子ウィンドウ、ポップアップウィンドウ、またはトップレベルウィンドウのサイズ、位置、および Z オーダーを変更します。 ''SetWindowPlacement 指定されたウィンドウの表示状態を設定し、そのウィンドウの通常表示のとき、最小化されたとき、および最大化されたときの位置を設定します。 ''IsWindowVisible 指定されたウィンドウの表示状態を調べます。 → ShowWindow() '' IsIconic 指定されたウィンドウが最小化( アイコン化)されているかどうかを調べます。 '' IsZoomed 指定されたウィンドウが最大化されているかどうかを調べます。 C:\tool\FreeBASIC\inc\win\winuser.bi に書き込んだ内容がやたら増えていく。
| - 【QBASIC互換!?】FreeBasic【GPL】
761 :デフォルトの名無しさん[]:2016/10/02(日) 18:08:02.25 ID:82+jvpD4 - >>732 つづき。
現在、レジストリーのダンプ260MBから関係データを探し出すのに四苦八苦。 ソフトの入れ替え、 IE → (なんだったか、めちゃくちゃ遅くで即消した)とか、NEの消失とか、 で、何の内容を収集するか、の判断に迫られている。 それて゜、ちょっと一休み。 >>688 の直接の原因となった内容が、サブルーチンの参照の後で戻り値がすべて0になる、という現象。 これが、>>752 で発生している。 一つのタスクで、極端に違うマンマシン入出力を取り扱う場合に、内容をわけて処理する場合がある。 IDC_GRP1 を使って、上部に選択、下に処理の枠(Group)を作成して行う。 FbEdit の タグ(Disp00.bas, Disp00.rc, Disp00.bi等)のような機能である。 このときに、位置情報が必要なので、変数を作るのが面倒なので、位置情報を保存する配列と操作するルーチンを作った。 ルーチン内で値が保存されているが、戻り値が常に0になった。仕方ないので、専用の大域変数を確保して、大域変数と直接やり取りをするようにした。 これが、答えになるかもしれない。 00区切り0000末尾文字列を取り扱う2つのルーチンで、同じルーチンを書くことで乗り切れるかもしれない。
|
|