|
![]() |
#1 |
Junior Member
Join Date: Aug 2022
Posts: 20
|
Skin support for plugin window controls
Hello! I am writing my own plugin. It creates own window. The resource dialog fits nicely into the new window. But here is the problem - all controls do not have a skin support:
How to fix it? |
![]() |
![]() |
![]() |
#2 |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
I'm assuming you've already checked the source code for the example embedded window plugin here: http://forums.winamp.com/showthread.php?t=322114
If you can, post your source code in a zip or 7z archive so I can see if I can find any obvious errors. |
![]() |
![]() |
![]() |
#3 | |
Junior Member
Join Date: Aug 2022
Posts: 20
|
Quote:
But all I could find was the need to handle messages of embedded dialog proc like this: code: Now it works correct. Is everything right here? ![]() Another one offtopic question: I added the plugin menu item to Winamp main menu using InsertMenuItem() function with text and shortcut: code: By handling WM_COMMAND I process menu click. And it works. But when I press Alt+B shortcut associated with menu item - nothing happens. How to fix this? |
|
![]() |
![]() |
![]() |
#4 |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
I could have SWORN I downloaded that example plugin a long time ago but I still can't find it.
However, you can use the following for an example: http://forums.winamp.com/showthread....83#post3215083 It should have everything you need to learn standard skinning support. It also contains an example for shortcut handling. Unfortunately, there is no native skinning support for radio buttons and checkboxes. Your edit box doesn't look right. Before going on a tare, check the example I provided for that. |
![]() |
![]() |
![]() |
#5 |
Junior Member
Join Date: Aug 2022
Posts: 20
|
thinktink, thanks for example!
I have added this code: code: on init(): code: except WASABI_API_CREATEDIALOGW I still use: CreateDialogParam(... code: code: But when I press Alt+A nothing happens. Hotkey not work. Maybe I something missed? |
![]() |
![]() |
![]() |
#6 | |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
Quote:
I do it with: code: |
|
![]() |
![]() |
![]() |
#7 |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
Have you subclassed the Winamp main HWND and checking WM_COMMAND/WM_SYSCOMMAND in there or are you checking inside your own embed wnd's DlgProc instead? If you can't subclass Winamp's main HWND then you can also check inside a Windows Hook (see SetWindowsHookEx in the MSDN for usage).
|
![]() |
![]() |
![]() |
#8 | ||
Junior Member
Join Date: Aug 2022
Posts: 20
|
Another one question: thinktink, your project compiled succesfully, but when I try to compile my project compiler throws error:
Quote:
Quote:
![]() |
||
![]() |
![]() |
![]() |
#9 | |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
Quote:
Open "gen_yourplugin" Property Pages Select: All Configurations Go to: Configuration Properties -> C/C++ -> General Inspect "Additional Include Directories" and make sure the subfolders in the Winamp SDK folder labeled "Wasabi", "Agave", and "Winamp" are being included. |
|
![]() |
![]() |
![]() |
#10 |
Junior Member
Join Date: Aug 2022
Posts: 20
|
Ok, so how do I get or calculate the text color for an inactive button?
For example, for a Bento skin the inactive text color should be: 91, 94, 95: And for Winamp Modern Skin - 147, 149, 155 I checked all colors that WADlg_getColor() function returns. There is no such colors! Also I checked the contents of the skin bitmap (IPC_GET_GENSKINBITMAP). There is no such colors also. It's like the text color for an inactive button is calculated by some formula. I found the formula inside wa_dlg.h file: PHP Code:
fg = 210, 210, 210 bg = 51, 55, 56 colour = (210+51)/2, (210+55)/2, (210+56)/2 = 130, 132, 133 When DrawText() with this color, then we will see: ![]() Similarly for Winamp Modern: fg = 255, 255, 255 bg = 127, 135, 149 colour = (255+127)/2, (255+135)/2, (255+149)/2 = 191, 195, 202 When DrawText() with this color, then we will see: ![]() As you can see, this is an incorrect calculation formula. For example in JTF plugin inactive buttons has the correct text color. So how do you calculate the correct color values for inactive text? |
![]() |
![]() |
![]() |
#11 |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
I'm working on an unauthorized update to the example plugin originally created by DrO with skinned controls and menus. It should answer a number of questions. Just need a little time.
|
![]() |
![]() |
![]() |
#12 |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
Hope this helps... |
![]() |
![]() |
![]() |
#13 |
Junior Member
Join Date: Aug 2022
Posts: 20
|
Despite some errors in your code, the principle of skinning the controls is clear.
In short, in order to skin the controls, the developer needs to either draw them completely (owner drawing) or use a wrapper functions from wa_dlg.h, or request the API of the media library plugin to perform the skinning of the controls. I also noticed that when using Media library API you must also use the WADlg_DrawChildWindowBorders() function for drawing borders, because Media library API does not draw it. It's strange that drawing borders is not part of skinning support of the Media library API. To perform skinning of the edit control, I tried to use the media library API: PHP Code:
As you can see the required bit SWS_USESKINFONT is set. ![]() The only way to set the correct font for an edit control is to create a font and set it with WM_SETFONT for Edit control and not set SWS_USESKINFONT bit in mlsw.style. I just don't understand why SWS_USESKINFONT bit doesn't work. |
![]() |
![]() |
![]() |
#14 |
Forum King
Join Date: May 2009
Location: No longer on the streets of Kings County, CA.
Posts: 3,219
|
If you can, please mark the errors so that I can correct them.
|
![]() |
![]() |
![]() |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|