display resolution change

G

Guest

hi,

I met a problem really bothering me, I can not change the display resolution
of the xpe system.

(1) when I don't have the specific display driver, how to change the
resolution from the default 640*480 to 800*600? in the xp professional ,
it's easy even without the oem display driver installed, so I assume, in xpe,
even without oem display driver, I should be able to change, but I can't

in the target design, i can only find the " VGA Boot Driver' and ' VGA Save'
, neither give me choice to change resolution, I use the 'windows-based
Terminal Professional' to build my xpe image.

How to change the display resolution to 800*600 without oem driver? should
'nt it can be done? in xp professional it can.

(2) how consider the other way, the oem driver provided under xp
professional is in installshield way, i run as a installation exe file, not a
inf and sys file, how can I set it to the xpe image so I can change the
display resolution?

(3)also, my application used the 'user32.dll" to set the MFC dialog windows
to transparent, I found this function not working in xpe but works fine under
xp professional. so I think the 'user32.dll' not in the xpe image? how can I
found out which component in target design has one specific dll? such as
'user32.dll"? is ther a tool? because I might found other dll sill missing.

Thanks alot, my project deadline is appoaching, it's just make me worry.

winston.
 
K

KM

winston,

1) Obviously, you can "easy" accomplish that at run time with Display CPL or any command line tools that exist out there and allow
changing display resolutions. Or use ChangeDisplaySettingsEx API.

If you want to do that in TD but don't have the hardware manufacturer provided driver (btw, it is really not a good idea to go with
the VGA standard driver due to some limited functionality of the one - e.g., it is missing power management). You can add "Device:
Display" component (which is a prototype for all other display driver components) that allows you to change the resolution on its
settings page.


2) If you got the right driver and it is installed without errors at runtime, you can use Display CPL (if included), 3rd party
command line utilities or the API.



3) Please make use of TD Filter feature. It allows you to search for components that contain specified files.
Very unlikely "user32.dll" is not in your image. You can easy verify that by going to \windows\system32 directory of your pre-FBA
image.
When particular API call doesn't work on your image you may want to try one of the following:
- first of all, show us the API call you are referring to and all the arguments you are passing in.
- hopefully you included the right MFC libraries (be aware of the MFC versioning)
- try using fat images like XPProEmualtion (www.xpefiles.com) to make sure you can get your app working on XPe
- use DependencyWalker (Profiling feature!) or similar tools to analyze what's going on with the dependencies (likely dynamic
dependencies of your app) at the time the app calls in to that API.
 
G

Guest

hi,KM:

thank you very much for your instruction.but I am still not clear what you
suggested.

1. my application in XPE is as a custom shell, the xpe has no startup menu,
so it's hard to do anything in 'run time', since if the xpe startup, my
application begin running, (that's what I want), so how to set the resolution
at run time since my application need that?

I found the Device:Display component, added it, and changed the resolution
to 800x600, then build the image, but xpe still has 640x480 resolution, what
did I miss to do? I don't know.

2.How to use API in the xpe image building? I only know in the visual c++
programming, I can use API.

(even in Visual c++, I added a short program to change resolution with
ChangeDisplaySettings API, still the resolution remain the same. that's
strange)

Is there a way to use API in xpe image building? I didn't find any clue

I include the Visual C++ program here:

void CResolution1Dlg::SetScreenRes()
{
int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
int nFullHeight=GetSystemMetrics(SM_CYSCREEN);
bool bChanged=0;

if(nFullWidth!=800 && nFullHeight!=600)
{
DEVMODE lpDevMode;
lpDevMode.dmBitsPerPel=24;
lpDevMode.dmPelsWidth=800;
lpDevMode.dmPelsHeight=600;
lpDevMode.dmDisplayFrequency=85;
lpDevMode.dmSize=sizeof(lpDevMode);
lpDevMode.dmFields
=DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL|DM_DISPLAYFREQUENCY;
LONG result;
result=ChangeDisplaySettings(&lpDevMode,0);
if (result==DISP_CHANGE_SUCCESSFUL)
{
//AfxMessageBox("Successed in Change Resolution");
ChangeDisplaySettings(&lpDevMode,CDS_UPDATEREGISTRY);


bChanged=1;
}
else
{
//AfxMessageBox("failed to change resolution, restore the original
one");
ChangeDisplaySettings(NULL,0);
}
}

}

Is There a way to use API in xpe image building?

thank you very much

winston
 
G

Guest

also, i use the double OS( xp professional and xpe) in the same hardware
platform,
in the xp professional, i can set the resolution to 800x600, so the hardware
and CRT should not be the problem, Why I can not set it to that resolution in
xpe by Device:Display component ? really strange.

Thank you very much

winston
 
J

JS

Call EnumDisplaySettings with ENUM_CURRENT_SETTINGS to populate your DEVMODE
structure,
then modify DEVMODE changing the resolution, then call
ChangeDisplaySettings.

Sorry, I don't have any example code.
 
K

KM

winston,

As I said earlier, the standard VGA driver is not really a good option. On some hardware it may not go up from the 640x480 mode at
all.
Take a look at \windows\setupapi.log to see what's really going on there when you try to set the new video mode.

Since your hardware is ok as you tested it, how do you know you are using FVA driver under XP Pro? Do you see the display driver
node is to resolved in Device Manger there?

Also, as suggested, you can always enumerate all hardware supported display modes in XP with EnumDisplaySettings API. Although keep
in mind that FBA also uses the same EnumDisplaySettings/ChangeDisplaySettingsEx API for setting up the right display resolution.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top