• 締切済み

VisualBasic2005 ボタンを押したとき、DirectXで解像度を変更するには

VisualBasic2005 ボタンを押したとき、DirectXで解像度を変更するには ボタンをクリックすると解像度を変える 例)1280,800 → 800,600 アプリケーションを終了したら 元の解像度に戻す のようなものを作りたいのです。 SetDisplayModeの定義は Public Sub SetDisplayMode( _ ByVal width As Integer, _ ByVal height As Integer, _ ByVal bitPerPixel As Integer, _ ByVal refreshRate As Integer, _ ByVal standardVgaMode As Boolean ) と教えていただきました。 ボタンを押したときの処理がよく分からないので どのように書くと解像度が変わるか教えてください。 VisualBasic2005 DirectX10 WindowsVista を使っています。

みんなの回答

回答No.1

http://smdn.invisiblefulmoon.net/ikimasshoy/csharp/manageddx00.html C#で記述してありますが、参考になるかと思います。 >SetDisplayModeの定義は >Public Sub SetDisplayMode( _ >ByVal width As Integer, _ >ByVal height As Integer, _ >ByVal bitPerPixel As Integer, _ >ByVal refreshRate As Integer, _ >ByVal standardVgaMode As Boolean ) >と教えていただきました。 SetDisplayModeはクラスメソッドなのは理解できてますよね? なので、DirectXDraw(?)クラスのインスタンスを作成後、 SetDisplayModeメソッドを呼び出してあげればよいと思います。 戻すのもRestore~でできるみたいですし。 ただし、 http://dobon.net/vb/bbs/log3-13/7373.html にて平ちゃんさんがわざわざDirectX使用上の注意事項を書いてくださっています。 この注意事項を理解した上での使用が望ましいですね。

suzuki329
質問者

お礼

ありがとうございます^^

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 8つのコマンドボタン上にそれぞれマウスカーソルを置くと、userfor

    8つのコマンドボタン上にそれぞれマウスカーソルを置くと、userform1~8(図)が表示されるようにしております。 そして、Label上にマウスカーソルを置くと、表示中のuserformが消えるようになっております。 しかし、たまにですが、 > エラー番号:50290 > "アプリケーション定義またはオブジェクト定義のエラーです。" が表示されてしまい。 下記マクロのunload userform1でとまってしまいます。 なぜなのでしょうか。 Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Unload userform1 Unload userform2 Unload userform3 Unload userform4 Unload userform5 Unload userform6 Unload userform7 Unload userform8 End Sub

  • エクセルVisualBasicマクロ詳しい方

    写真を特定のセルに貼り付けるのにダブルクリックでマイドキュメントがでるようにし、 写真を貼り付けるとサイズを枠に調節するようにマクロをつくりました。 問題なく出来るようになったのですが、 ダブルクリックでマイドキュメントではなく、 別の場所を指定するにはどこをどう変えればいいですか? 現状は以下の通りです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Union(Range("A1:A21"))) Is Nothing Then Exit Sub Cancel = True Dim myPic Dim myRange As Range '画像を配置するセル範囲 Dim rX As Double, rY As Double myPic = Application.GetOpenFilename("画像ファイル,*.jpg;*.jpeg;*.gif;*.tif") If VarType(myPic) = vbBoolean Then Exit Sub Set myRange = Target 'このセル範囲に収まるように画像を縮小する Application.ScreenUpdating = False With ActiveSheet.Pictures.Insert(myPic).ShapeRange rX = myRange.Width / .Width rY = myRange.Height / .Height If rX > rY Then .Height = .Height * rY Else .Width = .Width * rX End If .Left = .Left + (myRange.Width - .Width) / 2 '写真を横方向の中央に配置 .Top = .Top + (myRange.Height - .Height) / 2 '写真を縦方向に中央に配置 End With Application.ScreenUpdating = True Cancel = True End Sub

  • 同じコマンドボタンからマウスカーソルがはなれたら

    フォーム上のコマンドボタンにマウスカーソルが触れたら色を付ける、 同じコマンドボタンからマウスカーソルがはなれたら 、また色を変える、 という動きをvbaで行いたいのですが、 Private Sub cmd_test_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.cmd_test.BackColor = RGB(255, 180, 200) End Sub で、マウスカーソルが触れたら色を付けることはできたのですが、 マウスカーソルがそのコマンドボタンから離れたら色を変えるという動きができません。 Private Sub cmd_test_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Me.cmd_test.BackColor = RGB(255, 255, 255) End Sub Private Sub cmd_test_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Me.cmd_test.BackColor = RGB(255, 255, 255) End Sub Private Sub cmd_test_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.cmd_test.BackColor = RGB(255, 255, 255) End Sub をしても、マウスカーソルが離れても色が白になりませんでした。

  • エクセルのuserform1上に、コントロールボタンを配置し、コントロ

    エクセルのuserform1上に、コントロールボタンを配置し、コントロールボタン上にカーソルを持っていくと、 別のuseruform2が表示されるようにしたいのですが、 コントロールボタンを消すときに、userform1が白抜きになってしまいます。 きれいにuserform2を消す方法をおしえてください。 Private Sub UserForm1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Unload userform2 End Sub

  • Excelの写真貼り付け(90度回転)について

    xcelに写真のサイズを自動的に変更するマクロ、(セルの大きさに合わせて)を利用しています。 このマクロに対して写真を90度角度を変更して、写真を表示させたいのですが、どのようにすればよいのでしょうか? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) ActiveSheet.Unprotect Dim C As Range, cm As Range Application.ScreenUpdating = False For Each C In Selection Set cm = C.MergeArea If C.Address = cm.Item(1).Address Then If Application.Dialogs(xlDialogInsertPicture).Show = False Then Exit Sub With Selection .Left = cm.Left .Top = cm.Top .Height = cm.Height .Width = cm.Width End With End If Next Set cm = Nothing Application.ScreenUpdating = True Range("a1").Select End Sub

  • エクセル2010のコマンドボタンついて

    MouseDownイベントでループ(Doなど)をさせた後 MouseUpイベントでStopさせるコードを作りましたが MouseUpイベントまで行かずずっとループしてしまいます (押されている間はボタンが凹んでいますが このコードにすると凹まず中断しないと 動かせないようになってしまいます) 何が原因がわからないので回答お願いします 下はコードです Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Select Case Button Case 1 Range("A1") = 1 Case 2 Range("A1") = 3 End Select Do Range("A1") = Range("A1") + Range("A1") Loop End Sub Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Stop End Sub (Select Case Button Case 1...にしても変わりませんでした)

  • Visualbasic解像度が異なる端末で実行

    Visualbasic 2013でWindows Form アプリケーションを開発しております。 開発自体は問題なく行えているのですが、以下の点が解決できず悩んでおります。 事象 ・開発環境と実行環境で実行時のフォームのサイズ、フォントなどが  異なってしまう場合がある。  ※問題なく起動できるアプリケーションもある。 各情報は以下の通りです。 ・FormのAutoScaleModeは全て[Font]に統一 ・開発環境 HP ProBook   OS Windows8.1 Pro 64bit   解像度 1366*768    ・実行環境 Surface pro6   OS Windows10 Pro 64bit   解像度 2736*1824 何か分る方がいらっしゃいましたらご教授頂けますと幸いです。 以上です。

  • VB.net キャレットの幅の変更をしたい

    OS:Windows 7 64bit 開発環境:Visual Studio 2013 Express リッチテキストボックスでキャレットの幅を変更したいのですが、うまくいきません。 ------------------------------------------------------------- 'キャレットを作成する Private Declare Function CreateCaret Lib "user32" _ (ByVal hWnd As IntPtr, _ ByVal hBitmap As IntPtr, _ ByVal nWidth As Integer, _ ByVal nHeight As Integer _ ) As Boolean 'キャレットを表示する Private Declare Function ShowCaret Lib "user32" _ (ByVal hWnd As IntPtr) As Boolean Private Sub RichTextBox1_Enter(sender As Object, e As EventArgs) Handles RichTextBox1.Enter 'CreateCaret(RichTextBox1.Handle, IntPtr.Zero, 7, 15) CreateSolidCaret(5, 10) ShowCaret(RichTextBox1.Handle) End Sub ------------------------------------------------------------- 以上のようにして RichTextBox1 にフォーカスが来た時にキャレットの幅を変えるようにしているのですが、一度だけフォーカスが来た時にほんの一瞬だけ四角いキャレットが見えるのですが、すぐにI型に戻ってしまいます。 ググっても上記ソースくらいしか見つかりませんでした。 どなたかご享受願えませんでしょうか? よろしくお願い致します。

  • VisualBasic.NETでのソースの意味がわかりません…。

    Dim misscount As Integer Dim istypemode As Boolean Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim s() As String = New String() {"datemasamune", "sanadayukimura", "tyousokabemototika", "morning", "hyper", "newspaper"} Dim word As String = s(New Random().Next(0, s.GetUpperBound(0) + 1)) Label1.Text = word Label2.Text = "" istypemode = True End Sub Private Sub Form1_keypress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress If istypemode And Not Char.IsControl(e.KeyChar) Then If e.KeyChar = Label1.Text.Chars(Label2.Text.Length) Then Label2.Text &= e.KeyChar End If End If End Sub ------------- 以上のソースがあるのですが、どこでどうなっているというのを教えてほしいです。 もし意味不明な部分とかありましたら教えてください。

  • エクセル マクロ

    エクセルのある特定のセルをダブルクリックすると 画像ファイルを参照しにいき 貼りつけたい画像ファイル選ぶと そのセルの大きさに合わせて 画像ファイルがそのセルに 貼りつくというマクロが以下の通りなんですが Excel2003からExcel2007へ変更すると 画像ファイルの貼りつく位置がダブルクリックしたセルではない所に 貼りつくようになりました 参照や大きさなどはちゃんと機能しているようです どこを変更すればよいでしょうか? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range('特定のセル)) Is Nothing Then Exit Sub Cancel = True Dim myPic Dim myRange As Range Dim rX As Double, rY As Double myPic = Application.GetOpenFilename("画像ファイル,*.jpg;*.jpeg;*.gif;*.tif") If VarType(myPic) = vbBoolean Then Exit Sub Set myRange = Target Application.ScreenUpdating = False With ActiveSheet.Pictures.Insert(myPic).ShapeRange rX = myRange.Width / .Width rY = myRange.Height / .Height If rX > rY Then .Height = .Height * rY Else .Width = .Width * rX End If .Left = .Left + (myRange.Width - .Width) / 2 .Top = .Top + (myRange.Height - .Height) / 2 End With Application.ScreenUpdating = True Cancel = True End Sub