|
Does the website shutdown? Can you check the url?
Thanks
-Bruce
|
|
|
|
|
1>External build tool process set to low priority...
1>DockTabFrameWork.cpp
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\dotnettabctrl.h(1073) : error C3203: “CDotNetButtonTabCtrl”: ?????? ?? ???? ?? ??,????? ?? ??“T”,?? real ??
1> e:\vc_work\wtl\docktabframe\docktabframe_demo\include\dotnettabctrl.h(1511): ????????? ?? ???“CDotNetButtonTabCtrl<titem>”???
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\dotnettabctrl.h(1515) : error C3203: “CDotNetTabCtrl”: ?????? ?? ???? ?? ??,????? ?? ??“T”,?? real ??
1> e:\vc_work\wtl\docktabframe\docktabframe_demo\include\dotnettabctrl.h(1535): ????????? ?? ???“CDotNetTabCtrl<titem>”???
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2053) : error C2885: “stateNull”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2054) : error C2885: “stateDockable”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2055) : error C2885: “stateFloating”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2340) : error C2885: “stateDockable”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2341) : error C2885: “stateFloating”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2342) : error C2885: “stateNull”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2344) : error C2065: “stateNull”: ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2397) : error C2065: “stateDockable”: ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2404) : error C2065: “stateFloating”: ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2451) : error C2051: case ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2454) : error C2051: case ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2457) : warning C4060: switch ??????“case”?“default”??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(2887) : error C2065: “i”: ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(3514) : error C2885: “stateFloating”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\include\docktabframe.h(3515) : error C2885: “stateDockable”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(15) : error C2885: “stateDockable”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(16) : error C2885: “stateFloating”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(157) : error C2885: “stateDockable”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(158) : error C2885: “stateFloating”: ??????????? using ??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(161) : error C2051: case ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(162) : error C2051: case ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(165) : warning C4060: switch ??????“case”?“default”??
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(188) : error C2051: case ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(189) : error C2051: case ???????
1>e:\vc_work\wtl\docktabframe\docktabframe_demo\docktabframework\clientwindowlistview.h(192) : warning C4060: switch ??????“case”?“default”??
1>NewWtlDlg.cpp
1>??????...
1>??????????...
1>External build tool process set to low priority...
1>Microsoft ?????????? Version 8.00.50727
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>???????“file://e:\Vc_work\Wtl\docktabframe\docktabframe_demo\DockTabFrameWork\Debug\BuildLog.htm”
1>DockTabFrameWork - 24 ???,3 ???
========== ??: 0 ???, 1 ???, 0 ??, 0 ??? ==========
|
|
|
|
|
this one availiable under vs2005 and wtl80:
http://download.csdn.net/source/1076882
|
|
|
|
|
In "detachClientView" method, should we use "PostMessage" instead of "SendMessage"?
|
|
|
|
|
After a window/control is added into the container (SplitPane::append), how can we change its caption later then?
Thanks.
|
|
|
|
|
Hello everybody,
I have developed a VC++ application in which i have used a splitter window. I am not able to move from 1 pane to the other using a keyboard.
Can someone please help me with this. I also want to know how do i move from th menu bar to the window using shortkeys.
Thanx in advance,
Regards,
Shraddha
|
|
|
|
|
how to get the focus tab, because I need to print the tab which get focus
|
|
|
|
|
many examples break in VC8, sigh... i know it's the problem of the differences between different versions of VCs. as i'm still quite a rookie, i need help to figure out what's wrong... thanks.
Error messages are at the end of this post. I tried to commented out #include "atlgdix.h" in DockTabPane.h, then the compiler complained: ...\splitpane_demo\include\customtabctrl.h(122) : fatal error C1189: #error : CustomTabCtrl.h requires atlgdix.h to be included first
if I even commented out the requiring indicatives in CustomTabCtrl.h, then of couse many other errors emerged.
Anyway, here are the error messages when compiling the original code with the change noted in http://www.codeproject.com/wtl/docktabframe.asp?df=100&forumid=31050&exp=0&select=741964#xx741964xx had been made (on the order of included header files in stdafx.h):
------ Build started: Project: SplitPaneDemo, Configuration: Debug Win32 ------
Compiling...
stdafx.cpp
Compiling...
MainFrm.cpp
C:\samples\splitpane_demo\include\atlgdix.h(201) : error C2953: 'WTL::CIconT' : class template has already been defined
c:\programs\wtl75\include\atluser.h(871) : see declaration of 'WTL::CIconT'
C:\samples\splitpane_demo\include\atlgdix.h(203) : error C2371: 'WTL::CIcon' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(874) : see declaration of 'WTL::CIcon'
C:\samples\splitpane_demo\include\atlgdix.h(204) : error C2371: 'WTL::CIconHandle' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(873) : see declaration of 'WTL::CIconHandle'
C:\samples\splitpane_demo\include\atlgdix.h(326) : error C2953: 'WTL::CCursorT' : class template has already been defined
c:\programs\wtl75\include\atluser.h(1033) : see declaration of 'WTL::CCursorT'
C:\samples\splitpane_demo\include\atlgdix.h(328) : error C2371: 'WTL::CCursor' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(1036) : see declaration of 'WTL::CCursor'
C:\samples\splitpane_demo\include\atlgdix.h(329) : error C2371: 'WTL::CCursorHandle' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(1035) : see declaration of 'WTL::CCursorHandle'
C:\samples\splitpane_demo\include\atlgdix.h(335) : error C2011: 'WTL::CLogFont' : 'class' type redefinition
c:\programs\wtl75\include\atlgdi.h(360) : see declaration of 'WTL::CLogFont'
C:\samples\splitpane_demo\include\dotnettabctrl.h(1073) : error C3203: 'CDotNetButtonTabCtrl' : unspecialized class template can't be used as a template argument for template parameter 'T', expected a real type
C:\samples\splitpane_demo\include\dotnettabctrl.h(1511) : see reference to class template instantiation 'CDotNetButtonTabCtrl<TItem>' being compiled
C:\samples\splitpane_demo\include\dotnettabctrl.h(1515) : error C3203: 'CDotNetTabCtrl' : unspecialized class template can't be used as a template argument for template parameter 'T', expected a real type
C:\samples\splitpane_demo\include\dotnettabctrl.h(1535) : see reference to class template instantiation 'CDotNetTabCtrl<TItem>' being compiled
C:\samples\splitpane_demo\splitpanedemo\mainfrm.h(30) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\samples\splitpane_demo\splitpanedemo\mainfrm.h(31) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
SplitPaneDemo.cpp
C:\samples\splitpane_demo\include\atlgdix.h(201) : error C2953: 'WTL::CIconT' : class template has already been defined
c:\programs\wtl75\include\atluser.h(871) : see declaration of 'WTL::CIconT'
C:\samples\splitpane_demo\include\atlgdix.h(203) : error C2371: 'WTL::CIcon' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(874) : see declaration of 'WTL::CIcon'
C:\samples\splitpane_demo\include\atlgdix.h(204) : error C2371: 'WTL::CIconHandle' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(873) : see declaration of 'WTL::CIconHandle'
C:\samples\splitpane_demo\include\atlgdix.h(326) : error C2953: 'WTL::CCursorT' : class template has already been defined
c:\programs\wtl75\include\atluser.h(1033) : see declaration of 'WTL::CCursorT'
C:\samples\splitpane_demo\include\atlgdix.h(328) : error C2371: 'WTL::CCursor' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(1036) : see declaration of 'WTL::CCursor'
C:\samples\splitpane_demo\include\atlgdix.h(329) : error C2371: 'WTL::CCursorHandle' : redefinition; different basic types
c:\programs\wtl75\include\atluser.h(1035) : see declaration of 'WTL::CCursorHandle'
C:\samples\splitpane_demo\include\atlgdix.h(335) : error C2011: 'WTL::CLogFont' : 'class' type redefinition
c:\programs\wtl75\include\atlgdi.h(360) : see declaration of 'WTL::CLogFont'
C:\samples\splitpane_demo\include\dotnettabctrl.h(1073) : error C3203: 'CDotNetButtonTabCtrl' : unspecialized class template can't be used as a template argument for template parameter 'T', expected a real type
C:\samples\splitpane_demo\include\dotnettabctrl.h(1511) : see reference to class template instantiation 'CDotNetButtonTabCtrl<TItem>' being compiled
C:\samples\splitpane_demo\include\dotnettabctrl.h(1515) : error C3203: 'CDotNetTabCtrl' : unspecialized class template can't be used as a template argument for template parameter 'T', expected a real type
C:\samples\splitpane_demo\include\dotnettabctrl.h(1535) : see reference to class template instantiation 'CDotNetTabCtrl<TItem>' being compiled
C:\samples\splitpane_demo\splitpanedemo\mainfrm.h(30) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\samples\splitpane_demo\splitpanedemo\mainfrm.h(31) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Generating Code...
Build log was saved at "file://C:\samples\splitpane_demo\SplitPaneDemo\Debug\BuildLog.htm"
SplitPaneDemo - 22 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
|
|
|
|
|
Try using the atlgdix.h coming from Daniel Bowen article. It removes all the class definitions causing errors. It worked for me in VC7 (.NET 2003). If not, probably you need to adjust the stdafx.h as well, as I did. Let me know.
|
|
|
|
|
I downloaded the Demo and the Code but the link to the latest code version doesn't work. When I try to build the project I get error messages about missing Header files. Any thoughts?
Thanks - Jeff
|
|
|
|
|
I´m trying to build your project, but the Visual Studio .NT 2003 doesn´t get to find some atl, like atlddx.h and others that are not in Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include.
Where can I find these includes?
|
|
|
|
|
It sounds like you have not installed any of the WTL libraries. .NET default installation does not provide those libraries. See Petr Prikryl article for further explanations.
|
|
|
|
|
I was just ondering if it is possible to combine it together with MFC, e.g. instead of rich edit to include my own control from the MFC framework.
Thanks for help,
Pshem
|
|
|
|
|
Hi,
I liked it. It will help me to reimplement it on pure C++.
Cheers
|
|
|
|
|
Daniel Bowen updated his article on June 30th. His changes have caused this code to no longer compile. I want to use Igor's docking mixed with Daniel's tabs, so I would like to get this working again.
I have replaced:
this->m_idDlgCtrl = 0;
with:
this->SetDlgCtrlID(0);
This compiles and appears to work, but I have not spent enough time with WTL and this code to know if this is proper.
Thanks Igor & Daniel for your great efforts and sharing your results.
Erik.
|
|
|
|
|
Hello,
I tried to implement tab controls for dialogs in an application, but got some problems.The dialogs are objects derived from the following class:
class CMdiDlgView :
public CDialogImpl<cmdidlgview>,
public CDialogResize<cmdidlgview>,public CPaint1Bkgnd<cmdidlgview, lichtgeel="">
The code where I create the tabbed dialogs :
CMdiDlgView* m_AddView;
CModDlgView* m_ModifyView;
CTabbedPopupFrame<cdotnettabctrl<ctabviewtabitem> >* m_OutputFrame;
extern "C" BERDBDLL_API BOOL WINAPI CreateDBView(HWND m_hWndClient,RECT rcOutputFrame)
{
m_ModifyView.Create(m_OutputFrame);
m_AddView.Create(m_OutputFrame);
m_OutputFrame=new CTabbedPopupFrame<cdotnettabctrl<ctabviewtabitem> >;
m_AddView=new CMdiDlgView;
m_ModifyView=new CModDlgView;
m_OutputFrame->CreateEx(m_hWndClient, rcOutputFrame);
m_AddView->Create(m_OutputFrame->m_hWnd);
m_ModifyView->Create(m_OutputFrame->m_hWnd);
m_OutputFrame->AddTabWithIcon(m_AddView->m_hWnd, _T("Ajouter"), MAKEINTRESOURCE(IDR_DB_ADD));
m_OutputFrame->AddTabWithIcon(m_ModifyView->m_hWnd, _T("Modifier"), MAKEINTRESOURCE(IDR_DB_MODIFY));
return TRUE;
}
Now, when this is executed the m_ModifyView appears as expexted, but initially the tabs are not visible.I have to move the mouse out of the dialogwindow to get them visible. Furthermore, I have to click first the modifytab, then the addviewtab yo get the addview dialog.After this, I can work with the addview dialog.
Has someone a solution for this?
Kindly greetings,
Willy Lefebvre.
willy.lefebvre@ping.be
|
|
|
|
|
I finally found the solution by changing the method in TabbedFrame.h that adds the tabs :
int AddTabWithIcon(HWND hWnd, LPCTSTR sTabText, WTL::_U_STRINGorID icon, HMODULE hModule = _Module.GetResourceInstance())
{
if(hWnd == NULL)
{
return -1;
}
int nImageIndex = this->AddIcon(icon, hModule);
//*******************************************************
//MODSTART WL20062004 added to show tabs when created
// return this->AddTab(hWnd, sTabText, nImageIndex);
//is replaced by :
int ret;
ret= this->AddTab(hWnd, sTabText, nImageIndex);
this->DisplayTab(hWnd, TRUE, FALSE);
return ret;
//MODEND WL20062004
//**********************************************************
}
Now it works correctly.
Greetings,
Willy.
willy.lefebvre@ping.be
|
|
|
|
|
The source code defines three Client View states
stateNull = 0 // ClientView can be in Main Pane only
stateDockable = 1 // ClientView can be either in a dock pane or in a float frame
stateFloating = 2 // ClientView can be in a float frame only
However this is not respected by the drag implementation code. Main Pane Client Views can be dragged off to float frames.
A drag code fix is provided below. The fix will still allow Main Pane Client Views to be split within the Main Pane.
The fix is:
In file DockTabFrame.h in dropDrag function before line
if ( placeUNKNOWN == this->dragContext->targetPlace && placeFLOATFRAME == this->dragContext->sourcePlace) {
add the following code
if(this->getClientView(clientViewWnd)->getState()==ClientView::State::stateNull
&& this->dragContext->targetPlace!=placeMAINPANE){
this->dragContext->clearTrackRectangle();
delete this->dragContext;
this->dragContext = NULL;
return;
}
John Heenan
|
|
|
|
|
The memory leak I reported is fixed by the following code addition:
In file DockTabFrame.h at the end of function OnDropParcel replace
this->removeDropParcel( parcelTag);
with
if(dropParcel!=NULL){
delete dropParcel;
}
this->removeDropParcel( parcelTag);
John Heenan
|
|
|
|
|
Dragging windows from either a docked or main window state to a floating state and optionally back again results in accumulating memory leaks that are not cleaned up before final exit cleanup.
If no windows are dragged to a floating state then no memory leaks are reported.
Reproduction:
1. Add the following to the top of DockTabFrameWork.cpp (but below #include "stdafx.h")
#ifdef _DEBUG
#include <crtdbg.h>
#endif
2. Add the following to the top of _tWinMain
int tmp = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmp |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmp);
3. Use F5 to start a debug build in VS.NET debug environment
4. Drag any created window from a docked pane or main pane to a floating pane. The more drags and redocks the higher the number of memory leaks reported.
5. Exit application and observe reports in Output Window, such as:
The thread 'Win32 Thread' (0x376c) has exited with code 1 (0x1).
Detected memory leaks!
Dumping objects ->
{81} normal block at 0x00CC5618, 52 bytes long.
Data: < > 01 00 00 00 03 00 00 00 FF FF FF FF FF FF FF FF
Object dump complete.
The memory leak is probably bad luck. The code is solid, well written and easy to follow.
I am happy to give a score of 5.
John Heenan
|
|
|
|
|
Igor, this is just what I've been after for my project!
I've been umming and arring about doing something similar for a while now (MDI isn't really suited for my application) and now I don't have to codeit all myself!
kudos to you!
I'm gonna play around with this for a while and check out the code, but from the screenie it looks like it'll be great.
|
|
|
|
|
ok, so after playing with it for a bit, i realise i need to be able to at do the following things
1) save layouts
2) restore layouts
3) switch between layouts
4) auto hiding facilities - *I* can wait for this one, but maybe my users can't
i guess saving a layout is a case of iterating through the dockable areas, making a note of what is where and what it's split with (and so on..), a bit tricky though
ability to get a pane's object type from a pane specific LPARAM or something is required too.
For example - to describing a layout such as this one...
+--------------+----+
| | |
|=5============| |
+-----+--------+ |
| |=10:11==| |
| | | |
|=1===| | |
+-----+ | |
| | | |
| | | |
| +--------| |
|=2===|=12=====| |
+-----+ | |
| | |=6==|
| +--------+----+
| | |
|=3:4=|=7:8:9=======|
+-----+-------------+
we need to check each docking area, see what it contains and how it's docked to the areas above/below or left/right of it (depending on wether it's vertical or horizontal, respectively) and if it contains a group of frames, and what those frames are and which one is active.
we also need to be able to retreive (and later set) the floating x,y,w,h values for each frame.
I'm going to start with the left area, (panes 1 thu 4) in the figure above.
left area (areas 1 to 4), split horizontally into 2 panes, docked below top area, docked with bottom area, splitter position is 33%
--> pane 1, (area 1) contains one frame
----> frame 1, (area 1) object is: info panel
--> pane 2, (areas 2 and 3:4) split horizontally into 2 panes, splitter position is 50%
----> pane 1, (area 2) contains one frame
------> frame 1, (area 2) object is: server list
----> pane 2, (area 3 & 4) grouped pane container
------> group contains two frames, active frame is the second frame.
--------> frame 1, (area 3) object is: global user list
--------> frame 2, (area 4) object is: friends list
top area (area 5), contains 1 frame, docked with left window edge, docked with right area
--> frame 1 (area 5) object is: channel monitor
right area (area 6), contains 1 frame, docked with top window edge, docked with bottom area
--> frame 1 (area 6) object is: some other view
bottom area (area 7 to 9), contains group pane container, docked with left area, docked with right windowedge
--> grouped pane container, group contains two frames, active frame is the first frame.
----> frame 1 (area 7) object is: transfer panel
----> frame 1 (area 8) object is: event log panel
----> frame 1 (area 9) object is: output panel
and so on...
restoring a layout currently looks like it might not be possible as i don't see functions like dockTo(), groupWith() and splitWith().
to restore the above layout, we would add the views in the same order, calling dockTo(), groupWith(), and splitWith()
dockto() would take a frame and dock it with another frame so that it appears in the same split pane with tabs below it. dockto() also needs a parameter so that you can decide to leave make the frame active or leave the old frame you're docking with active.
groupwith() would take a frame and then dock another frame to it.
splitWith() would take a new frame object and split the area of the frame you're docking to in half (or preferably, a percentage of the area as a parameter) and show the new frame object in the other pane, you must also be able to specify that the new pane appears above/left or below/right of the existing frame.
thinking about it, we'd probably need three createframe() functions too, one to create one in a docked area (left, right, etc), one to create one split with another frame, and one to create one grouped with another frame()
Additonally, it would be nice to have the floating windows appear as app windows, i.e. they would appear on the taskbar.
i think that saving and restoring layouts should be left to the application that uses the layout tools and not done like sergey's docking windows are done. why? 1) sergey's saving/loading routines sometimes caused crashes, requiring the user to remove registry keys before the app could be run again, 2) different apps require different layout saving methods. my app really wants to save and restore layouts to/from XML files and not the registry.
with the above two functions it should be easy enough for any coder to simply remember where things are positioned and put them back in the same place.
Ok, comments?
|
|
|
|
|
Thank you for the feedback.
Good luck with your project.
Sincerely,
Igor.
|
|
|
|
|
I have installed Visual .NET studio. I have some experiences with VS6.0, but I'm somehow new to .NET. I have downloaded the project and tried just to build ewth... Errors occured because plenty of header files are missing...
What have I missed?
Line that produces error is:
#include <atlddx.h>
Error is:
g:\check.it.out\c\docktabframe_demo\docktabframe_demo\DockTabFrameWork\stdafx.h(20): fatal error C1083: Cannot open include file: 'atlddx.h': No such file or directory
And also others include directives produce errors, of course. Should this header file be one of .NET installed files?
Tnx
|
|
|
|
|
As I used a great work done by Bjarke Viksoe and Daniel Bowen my project requires some additional files.
Here I described what there are.
You should find all these files in include folder in demo project.
Check here for some information you might need.
Sincerely,
Igor.
|
|
|
|
|