HighDPI実験

  • hk1v
  • 2016/2/13 0:08
  • タグ:
  • タグはありません
#include "hspdsc.as"
#runtime "hsp3HighDPI"
#include "gdi32.as"
#include "user32.as"
#module
#define LOGPIXELSX 88
#define LOGPIXELSY 90
#defcfunc getScale int mode, int size
	// 現在のDPI -> 96dpi
	if 0 == mode : return int((1.0 * size * dpiX) / 96.0)
	if 1 == mode : return int((1.0 * size * dpiY) / 96.0)
	// 96dpi -> 現在のDPI
	if 2 == mode : return int((1.0 * size * 96.0) / dpiX)
	if 3 == mode : return int((1.0 * size * 96.0) / dpiY)
return 0
#defcfunc getFontScale int size
return int(1.0 * size * (1.0 * dpiY / 72.0) * (72.0 / 96.0))
#deffunc getDPI
	GetDC 0
	sHdc = stat
	GetDeviceCaps sHdc, LOGPIXELSX
	dpiX = stat
	GetDeviceCaps sHdc, LOGPIXELSY
	dpiY = stat
	ReleaseDC 0, sHdc
return
#global

	b = 1.4
	
	getDPI

	screen 0, getScale(0, 300.0*b), getScale(1, 184.0*b)
	title "HSPDSC Video Capture"
	
	dsc_Init

*main
	cls
	id = 0
	font "Meiryo UI", getFontScale(12.0*b), 16
	objmode 2, 1
	sdim devList, dsc_GetDeviceListSize()
	dsc_GetDeviceList devList

	mes "▼ ビデオデバイスリスト"
	objsize getScale(0, 300.0*b), getScale(1, 100.0*b)
	listbox id, 0, devList
	objid_Listbox = stat

	objsize getScale(0, 300.0*b), getScale(1, 20.0*b)

	button "ビデオデバイスリストの再読み込み", *main
	objid_Button_ReLoadDevice = stat
	
	button gosub "デバイスを開く", *OpenDevice
	objid_Button_DeviceOpen = stat

	button gosub "デバイスを閉じる", *CloseDevice
	objid_Button_DeviceClose = stat
	objenable objid_Button_DeviceClose, 0

	onexit gosub *Exit
	onexit 0
	
	
stop

*OpenDevice
	if ( -1 == id ) {
		dialog "選択してください。"
		return 
	}
	
	gosub *ButtonDisable

	dsc_SetActiveSel 0
	dsc_Open id, 0, 0, 0, 0
	if stat < 0 {
		dialog "デバイスのオープンに失敗しました。\nSTAT = " + stat
		gosub *ButtonEnable
		return
	}
	dsc_Play2

	onexit 1
	
return
*CloseDevice
	dsc_Stop
	dsc_Close
	onexit 1
	gosub *ButtonEnable
return
*ButtonEnable
	objenable objid_Listbox, 1
	objenable objid_Button_DeviceOpen, 1 
	objenable objid_Button_DeviceClose, 0
	objenable objid_Button_ReLoadDevice, 1
return
*ButtonDisable
	objenable objid_Listbox, 0
	objenable objid_Button_DeviceOpen, 0
	objenable objid_Button_DeviceClose, 1
	objenable objid_Button_ReLoadDevice, 0
return

*Exit
	dsc_Stop
	dsc_Close
	dsc_Exit
	end : end
return