|
Are you running it on Windows XP? It will have a white background on Windows 2000 etc...
|
|
|
|
|
Yes I'm running it on an english XPSP2 box. When I compile the sample it looks like my windows theme though. I just can't get my app to do that. Do I have to call any initialisation routines to get that to work?
|
|
|
|
|
Hi there,
We have found that the explorer bar code will crash on the latest CTP of Windows Vista. I think it is because the following code does not find a property token and then causes an access violation:
pCurrToken = GetPropertyTokens(pTokens,
"sectiontaskss",
"button",0,NULL,
"foreground")
GetPropertyTokens will access violate if the token is not found. I have reproduced this on Windows XP using the shellstyle.dll from Vista - MS have obviously changed the format/contents of the UI resource file.
Thanks,
Jamie.
|
|
|
|
|
Hi all,
beware of Windows Vista: the GUI is completely new! I will check for any changes in the shellstyle.dll handling of Windows Vista once I have time for it.
A Vista-compatible version will be incorporated in the new build of the library (full-MFC version).
A lot of people are using the bar. I would appreciate if someone could give me more feedback on Vista w.r.t. the Explorer Bar.
Thank you, Ingo.
Dipl.-Inform.
Ingo A. Kubbilun
- GERMANY -
mailto:ingo@kubbilun.de
|
|
|
|
|
Hello!
I also found this problem on Vista beta2 with enabled theme. If theme support disabled, component works perfectly.
Did you resolve this problem? What way did you use for fix it?
Thank you,
Vladimir
|
|
|
|
|
Hello,
Ingo you have created an excellent component, thank you!
I am also interested in the Vista version, will it be available any time soon?
Regards,
Cosmin Unguru
|
|
|
|
|
Problem still persists in released versions.
I don't know if we can fix it by removing the code, I think that this would render the control useless.
M
|
|
|
|
|
We have found that the "UI" file in Vista's ShellStyle.dll has changed format from a CSS style sheet syntax to an XML format. The code which parses this file for the theming information will need to be rewritten for Vista.
|
|
|
|
|
Hopefully I can change it using my XML parser then.
|
|
|
|
|
Where possible look the example of the code with use ExplorerBar.dll, written on Win32? CHM-documentation I read, but me this did not help.
|
|
|
|
|
:(I want to change the Window text of CBStatic32 Object.
I have tried this code in Sample.
IDC_CUSTOM9 is CBStatic32 Resource ID.
// ex code
m_wndExpBar.ThreadSendDlgItemMessage(m_wndExpBar.GetPaneDialogWindow(IDD_PANEDLG2), IDC_CUSTOM9, CBSM_GETITEMDATA, 0L, (LPARAM)_T("Test"));
but There is no change in the text of the CBStatic32.
How can I set the text of the CBStatic32?
Help me, plz~! ^^;;
|
|
|
|
|
Yeah, I have tried about the same. How the heck do you set the content of a static with this control?
Can somebody please help?
|
|
|
|
|
gunag wrote: Yeah, I have tried about the same. How the heck do you set the content of a static with this control?
It's actually quite simple. You just get the HWND of the pane by sending the CBM_GETPANEDIALOG message (refer to the documentation) and then just SetDlgItemText(). After setting the text you have to update the pane like this:
<br />
::InvalidateRect(m_hWndPane, NULL, FALSE);<br />
::UpdateWindow(m_hWndPane);<br />
-- modified at 9:47 Monday 1st May, 2006
|
|
|
|
|
Each of the controls is leaking memory:
Tasklink.c:813
case WM_CALCDIMENSIONS:
{
PTLSTRUCT pTLSSave,pTLS = (PTLSTRUCT)GetWindowLong(hwnd,GWL_USERDATA);
BOOL bReturn;
if (!pTLS) return FALSE;
if (IsBadWritePtr((VOID *)wParam,sizeof(SIZE)))
return FALSE;
pTLSSave = (PTLSTRUCT)malloc(sizeof(TLSTRUCT));
if (!pTLSSave) return FALSE;
memcpy(pTLSSave,pTLS,sizeof(TLSTRUCT));
bReturn = GetItemSize(hwnd,pTLS,(PSIZE)wParam,(int)lParam);
memcpy(pTLS,pTLSSave,sizeof(TLSTRUCT));
return bReturn;
}
The variable pTLSSave gets malloc'ed, but never freed. Unfortunately, this happens every time the control recalculates its layout, and that's pretty often. The same is true for CBStatic and CollapsibleHeader.
You can add a free(pTLSSave) before the return, or - much better - avoid the whole malloc/free issue and declare the TLSSave directly on the stack (much faster than dynamically allocating memory). And because GetItemSize never touches the struct, we can declare it const:
static BOOL APIENTRY GetItemSize ( HWND hwnd, const PTLSTRUCT pTLS, PSIZE pSI, int iRequiredWidth )
{...}
case WM_CALCDIMENSIONS:
// wParam = LPSIZE, lParam = width of control in px (-1 = get current width)
{
PTLSTRUCT pTLS = (PTLSTRUCT)GetWindowLong(hwnd,GWL_USERDATA);
BOOL bReturn;
if (!pTLS) return FALSE;
if (IsBadWritePtr((VOID *)wParam,sizeof(SIZE)))
return FALSE;
return GetItemSize(hwnd,pTLS,(PSIZE)wParam,(int)lParam);
}
Regards, Alexander Gräf
|
|
|
|
|
|
I think i know the answer to this question, but i'm hoping that i'm wrong so i ask it anyway.
Would it be possible to add controls dynamic to a pane?
Or must they all be predefined in the dialog resource?
|
|
|
|
|
I was really glad to find a free and actually working explorer bar control. I played around with the demo and also with the WTL Explorer Bar demo, and thought I actually found what I was looking for; integrating it with WTL should be a snap. I dont like the external dependency to the DLL, mainly because of the fussiness in the build process.
Then I looked at the source of your control... And I was really surprised the control even works. It's such a bad mess, the code is nearly useless. No chance to make any changes to the code, and no chance to really integrate it without a wrapper and the external dependency into MFC or WTL. I'm not sure where you found the time to write 18k lines of plain C-Code, and - whats more important - *why* you did it in plain C. From a clients point of view, you could even have written it in Brainf***, as long as a DLL is the result, which can be loaded by the client, it doesn't matter.
You have written you have the idea of making out a real MFC-version. Any progress with that? I'm interested in a WTL-version, but MFC and WTL don't have that many differences, so I would be glad to help.
Regards,
Alexander Gräf
|
|
|
|
|
CALM DOWN!!!
Do you know what I really like? Such guys like you who probably never uploaded any free software to the web but are complaining about other's FREE code all the time.
Yes, I am brain damaged and wrote 18K lines of plain C code to make this thing happen. Yes, I had enough FREE time to finalize it. I like C++ and Java more than C but the code of the explorer bar's core was written in C for historical reasons.
If you thing that you can do it better, then the CodeProject community would be GLAD to get your super beautiful C++ code with sh**loads of UML diagrams, which is super extensible and easy to understand.
Btw, several big companies are using the FREE explorer bar control in their release versions and are happy with it.
Dipl.-Inform.
Ingo A. Kubbilun
- GERMANY -
mailto:ingo@kubbilun.de
|
|
|
|
|
I dont know how to do it better, but thats not the point. And no, I never created code which could be useful to the community, and no I never completed any of my started free projects because I never found the time for that. It is also unlikely that I'll ever post an article on CodeProject. But I dont have to be a film director in order to criticize a movie.
And as I stated, the control works correctly, supports themes and has, as far as I can see from missing bug reports, not many errors.
However, I often downloaded code snippets from CodeProject, and many of them gave me a good starting point, or were nearly complete. Your control *is* complete, but it is no starting point to whatever one would like to do with it, besides taking it as a complete form. What about sticking it on sourceforge, and finding some people (like me?) which can help making this control a lot easier to understand?
You're the one to calm down. You have my respect for the time you've spend on this control and the fact you are sharing your work with the community, but that doesnt change the fact that the C-code is pretty useless, except for big companies which want to save money on commercial controls. It was not my intention to insult you in any way.
Cheers
|
|
|
|
|
Hi all,
You have done a very Good Work Ingo. Thanks for the code.
I have a problem with the display of the button image of the collapsible header. Its not possible to recognise the change in the button images also. The ARROW UP , ARROW DOWN, ...images are not displayed in a proper way I am working in a Win 2000 machine, and the windows classic style is being enabled. What i should do so that the images of the pane header buttons will display properly! Pls Help me......
Santhosh M
|
|
|
|
|
Hallo,
folgendes Problem:
ich habe eine MDI-Anwendung in der in der MainFrame die ExplorerBar erzeugt wird.
Die MainFrame hat die Möglichkeit das Document-Object des jeweils aktuellen Views abzurufen.
Die Panes enthalten RadioButtons / CheckBoxen, welche die Einstellungen einigen Document-Attribute wiedergeben bzw. ändern sollen.
Bei nur einer View ist das kein Problem.
Doch wie kann ich die ExplorerBar aktualisieren, wenn ich ein neues Dokument öffne bzw zwischen den Views hin und her springe.
Wie kann ich allgemein die ExplorerBar updaten wenn sich etwas geändert hat??
Vielen Dank für schnelle Antworten
|
|
|
|
|
just perform:
InvalidateRect(hwndExpBar,NULL,FALSE);
UpdateWindow(hwndExpBar);
rgs, Ingo.
P.S. try to post your requests in english to reach 'the community'
Dipl.-Inform.
Ingo A. Kubbilun
- GERMANY -
mailto:ingo@kubbilun.de
|
|
|
|
|
My machine settings :windows 2k,msvc6,
when compiling it ,a error occured,
fatal error C1083: Cannot open include file: 'Tmschema.h': No such file or directory.
How can i solve it?
|
|
|
|
|
You are using an outdated version of the platform SDK/MSDN. Tmschema.h is part of the XP-specific header files. The bar also works on Windows 2000 but you need a full XP compile environment to compile it.
Cheers, Ingo.
Dipl.-Inform.
Ingo A. Kubbilun
- GERMANY -
mailto:ingo@kubbilun.de
|
|
|
|
|
Does XP compile environment means i have to install visualstudio.net insteadd of msvc6?
or just download a sdk to support compiling?
|
|
|
|
|