Hi, I want to be able to change the appearence of all the shell controls
during runtime, so if i make a new function like reinitiate_cache() in

gcacheviewxp.cpp:

void reinitiate_cache(){

HBITMAP hbmScrollThumb;
hbmScrollThumb = SHLoadDIBitmap (L"scroll_thumb.bmp");
Gdi::SelectObject_I(g_cacheview.hdcScrollThumb, (HGDIOBJ)hbmScrollThumb);

}

and then call that function from for example the control panel, what is the
best way to make the function global so I can call it from the control panel
application?

Should I make a dll so I can call the function through a dll function call
or is there any simplier way to achieve this?

Regards, Dani

Re: What is the best way to do this? by Steve

Steve
Thu Apr 21 21:39:35 CDT 2005

With UI customization you can't change or introduce new APIs you can only
change the behavior of the existing ones.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com



Re: What is the best way to do this? by Daniel

Daniel
Fri Apr 22 08:02:19 CDT 2005

Thanks,

OK, so if I change the code in for example

void
CacheView_t::
Init(
HINSTANCE hInstance,
bool bLargeUi
){

changed code.....

}


How could I call that particular function from the control panel
application?

"Steve Maillet (eMVP)" <nospam1@EntelechyConsulting.com> wrote in message
news:Od$JLSuRFHA.508@TK2MSFTNGP12.phx.gbl...
> With UI customization you can't change or introduce new APIs you can only
> change the behavior of the existing ones.
>
> --
> Steve Maillet
> EmbeddedFusion
> www.EmbeddedFusion.com
> smaillet at EmbeddedFusion dot com
>
>



Re: What is the best way to do this? by Steve

Steve
Fri Apr 22 08:09:58 CDT 2005

You can't call it directly. It's not a WIN32 API exposed to the control
panel. It's an internal GWES implementation not exposed to application.
That's what I mean by you can't add new APIs you can only change the
behavior of existing ones.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com



Re: What is the best way to do this? by Daniel

Daniel
Fri Apr 22 08:45:56 CDT 2005

Is there no way to expose that function to the WIN32 API?

So how can I force that function to execute then, I don´t want to reboot the
device in between?

If I do a reboot between then I could alter a registry key that tells the
Init function to load different kinds of bitmaps for the controls, but I
don´t want to reboot just to get the Init function in GWES to get executed
again!

Do you have any suggestion how I could solve the problem?

Thanks, Dani

"Steve Maillet (eMVP)" <nospam1@EntelechyConsulting.com> wrote in message
news:%23IkfcyzRFHA.1096@tk2msftngp13.phx.gbl...
> You can't call it directly. It's not a WIN32 API exposed to the control
> panel. It's an internal GWES implementation not exposed to application.
> That's what I mean by you can't add new APIs you can only change the
> behavior of existing ones.
>
> --
> Steve Maillet
> EmbeddedFusion
> www.EmbeddedFusion.com
> smaillet at EmbeddedFusion dot com
>
>



Re: What is the best way to do this? by Steve

Steve
Fri Apr 22 08:56:38 CDT 2005

you could invalidate windows or send WM_PAINT messages. You will need to
follow through the code to determine how/when that function is called from
externally exposed APIs.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com



Re: What is the best way to do this? by Daniel

Daniel
Fri Apr 22 09:08:37 CDT 2005

Ok, thanks will try that!

"Steve Maillet (eMVP)" <nospam1@EntelechyConsulting.com> wrote in message
news:%23TrLhM0RFHA.3396@TK2MSFTNGP10.phx.gbl...
> you could invalidate windows or send WM_PAINT messages. You will need to
> follow through the code to determine how/when that function is called from
> externally exposed APIs.
>
> --
> Steve Maillet
> EmbeddedFusion
> www.EmbeddedFusion.com
> smaillet at EmbeddedFusion dot com
>
>



Re: What is the best way to do this? by Daniel

Daniel
Fri Apr 22 15:06:25 CDT 2005

I found out that

CacheView_t::GWECacheSetSysColors

and

WINAPI SetSysColors

have identical parameters so they must be directly connected.

So I think that if I call SetSysColors, that calls GWECacheSetSysColors and
then modify the GWECacheSetSysColors function to load the control bitmaps
from there it should work!

and then of cource send a WM_PAINT message to all of the windows.

Do you think this is the way to do it?

"Daniel Mattsson" <danmat378852@bredband.net> wrote in message
news:%23LQbKT0RFHA.1396@TK2MSFTNGP10.phx.gbl...
> Ok, thanks will try that!
>
> "Steve Maillet (eMVP)" <nospam1@EntelechyConsulting.com> wrote in message
> news:%23TrLhM0RFHA.3396@TK2MSFTNGP10.phx.gbl...
>> you could invalidate windows or send WM_PAINT messages. You will need to
>> follow through the code to determine how/when that function is called
>> from externally exposed APIs.
>>
>> --
>> Steve Maillet
>> EmbeddedFusion
>> www.EmbeddedFusion.com
>> smaillet at EmbeddedFusion dot com
>>
>>
>
>