quote:
Originally posted by CookieRevised
quote:
Originally posted by Eljay
It's also important to note this isn't something which can really be done "on-the-fly". You have to restart messenger for any of the uifiles to be reloaded.
I suppose that depends on what you exactly want to change, where and when. IIRC Patchou once said that some stuff could be done on-the-fly, but Plus! simply reloads Messenger out of 'convenience' so to speak; to avoid difficulties and a lot of messy checks and what not as the purpose of skinning is to skin the entire beast, not just one element or only a chat window or something.
Before UIFILE was phased out internally, It was a simple 1 or 2 byte patch that allowed for skins to be reloaded, however this only worked for images loaded from the UIFILE itself. Icons for example could only be changed the first time. (For those who are unaware, UIFILEs are no longer used by messenger. Plus! converts skin's UIFILEs to the new binary format at load time)
As far as the painting directly on the chat window goes, you would need have a DLL hook the EndPaint function. The PAINTSTRUCT that is passed to the EndPaint function *should* still have a valid HDC that you could paint with. The only problem with this is that you would have to figure out where to draw your custom control based on the size of the window. Handling of click events can be caught by a subclassing the window.
Perhaps it would be cool to see a skin modification interface added to plus. Something that would allow scripts to add UI elements at either program start or if the programmers are up to the challenge, in real time.