Hier mal der Code für die Auflösungsliste. Das Beispiel hier erstellt dir eine .TXT Datei mit allen verfügbaren Auflösungen > X-Auflösung 640.

Code:
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Funktion zum Auslesen der verfügbaren Auflösungen. Speichert diese in einer .txt ab

typedef struct _devicemode 
{ 
	char  dmDeviceName[32]; 
	WORD   dmSpecVersion; 
	WORD   dmDriverVersion; 
	WORD   dmSize; 
	WORD   dmDriverExtra; 
	DWORD  dmFields; 
	short dmOrientation;
	short dmPaperSize;
	short dmPaperLength;
	short dmPaperWidth;
	short dmScale; 
	short dmCopies; 
	short dmDefaultSource; 
	short dmPrintQuality; 
	short  dmColor; 
	short  dmDuplex; 
	short  dmYResolution; 
	short  dmTTOption; 
	short  dmCollate; 
	BYTE  dmFormName[32]; 
	WORD  dmLogPixels; 
	DWORD  dmBitsPerPel; 
	DWORD  dmPelsWidth; 
	DWORD  dmPelsHeight; 
	DWORD  dmDisplayFlags; 
	DWORD  dmDisplayFrequency; 
	DWORD  dmICMMethod;
	DWORD  dmICMIntent;
	DWORD  dmMediaType;
	DWORD  dmDitherType;
	DWORD  dmReserved1;
	DWORD  dmReserved2;
	DWORD  dmPanningWidth;
	DWORD  dmPanningHeight;
} SCRMODE; 
  
SCRMODE resolution;

//Table of resolution available
var Tab_x[29]={0};
var Tab_y[29]={0};


void get_screenres()
{	
		//create file with all resolution available
		
		//set all value at zero
		var i = 0;
		for (i=0; i<=29; i++)
		{
		   Tab_x[i] = 0;
		   Tab_y[i] = 0;
		}
		
		var n = 0;
		var e = 0;
		while(EnumDisplaySettings(NULL,n , &resolution)!=0)
		{
			var p =0;
			var VL_exist = 0;
			for (p=0; p<=29; p++)
			{
				if((Tab_x[p]==resolution.dmPelsWidth)&&(Tab_y[p]==resolution.dmPelsHeight))
				{
					VL_exist = 1;
				}
					
			}
			
			if(VL_exist==0)
			{
				Tab_x[e] = resolution.dmPelsWidth;
				Tab_y[e] = resolution.dmPelsHeight;
				e = e+1;
			}
			
			n = n + 1;
		}
		
		var VL_file_write_resolution = file_open_write("resolution.txt");
		if(VL_file_write_resolution!=0)
		{
			var l=0;
			var nummer=1;
			while(Tab_x[l]!=0)
			{
				if(Tab_x[l]>=640)
				{
					file_str_write(VL_file_write_resolution,"aufl_x");
					file_var_write(VL_file_write_resolution,nummer);
					file_var_write(VL_file_write_resolution,Tab_x[l]);
					file_str_write(VL_file_write_resolution,",");
	   			file_str_write(VL_file_write_resolution,"\r\n");
					file_str_write(VL_file_write_resolution,"aufl_y");
					file_var_write(VL_file_write_resolution,nummer);
					file_var_write(VL_file_write_resolution,Tab_y[l]);
					file_str_write(VL_file_write_resolution,",");
					file_str_write(VL_file_write_resolution,"\r\n");
					nummer++;
				}
				l++;
			}
			file_open_write(VL_file_write_resolution);
		}
		file_close(VL_file_write_resolution);	
}



Hiermit kannst du die TXT dann auslesen

Code:
var gvFileParserHandle;

function txt_read_var(STRING* szKey)
{
	file_find(gvFileParserHandle, szKey); // find parameter
	file_seek(gvFileParserHandle, 1, 1); // reset cursor	
	return(file_var_read(gvFileParserHandle)); // return the parameter
}



Und so mache ich das mit dem Dropdown-Menü.

Code:
if(dropdown_aufl_opened==0)
{
	dropdown_aufl_opened = 1;
	get_screenres();
	wait(1);		
	gvFileParserHandle = file_open_read("resolution.txt");
	
	aufl_x_1 = txt_read_var("aufl_x1");
	aufl_y_1 = txt_read_var("aufl_y1");
	if(aufl_x_1==0) {return;}
	aufl_dropdown1.pos_y = menu_dropdown_aufl.pos_y+28;
	aufl_dropdown1.pos_x = menu_dropdown_aufl.pos_x;
	set(aufl_dropdown1,SHOW);
	
	aufl_x_2 = txt_read_var("aufl_x2");
	aufl_y_2 = txt_read_var("aufl_y2");
	if(aufl_x_2==0) {return;}
	aufl_dropdown2.pos_y = menu_dropdown_aufl.pos_y+55;
	aufl_dropdown2.pos_x = menu_dropdown_aufl.pos_x;
	set(aufl_dropdown2,SHOW);

// ...

	file_close(gvFileParserHandle);
	return;
}



Wahrscheinlich ist das recht unelegant, aber es funktioniert genau wie es soll.