List 7-56 PrintDlg関数を使って[プリンタの設定]ダイアログボックスを表示する


  1: Dim lpDevMode As Long, lpDevNames As Long
  2: Dim hDevMode As Long, hDevNames As Long
  3: Dim vPrintDlg As PRINTDLG
  4: 
  5: ' vDevModeの内容をグローバルメモリに保存
  6: hDevMode = GlobalAlloc(GHND, Len(vDevMode))
  7: lpDevMode = GlobalLock(hDevMode)
  8: CopyMemory ByVal lpDevMode, vDevMode, Len(vDevMode)
  9: GlobalUnlock hDevMode
 10: 
 11: ' vDevNamesの内容をグローバルメモリに保存
 12: hDevNames = GlobalAlloc(GHND, Len(vDevNames))
 13: lpDevNames = GlobalLock(hDevNames)
 14: CopyMemory ByVal lpDevNames, vDevNames, Len(vDevNames)
 15: GlobalUnlock hDevNames
 16: 
 17: vPrintDlg.lStructSize = Len(vPrintDlg)
 18: vPrintDlg.hwndOwner = Me.Hwnd
 19: vPrintDlg.hDevMode = hDevMode
 20: vPrintDlg.hDevNames = hDevNames
 21: vPrintDlg.Flags = PD_PRINTSETUP
 22: 
 23: ' [プリンタの設定]ダイアログボックスの表示
 24: If PrintDlg(vPrintDlg) <> 0 Then
 25:     ' [OK]ボタンが押された
 26:     ' ここで,ユーザーが選択したプリンタの情報が
 27:     ' vPrintDlg変数のhDevModeメンバとhDevNamesメンバに
 28:     ' 格納されているから,そのとおりにプリンタを設定すればよい
 29: End If