|

Preface
Welcome to Donut2. Donut grows up to the practical application. I have
resolved many problems, which involved even a bug of CString, for this year.
WTL lacks: the way to serialize application general settings, to serialize Rebar-Bands
states, to serialize Toolbar states, to ordering of ToolBar buttons, and to
load 8bit bitmap Toolbar images, and the implementation of the reliable CommandBar,
OLE-drag-drop, and Update-Command-UI. All is the foundamentals for your applications.
So I had to write many drafts for them, and I have reached and published almost
good one. Before you play your own role, check that codes.
Features
- Supports most of all Microsoft Internet Explorer supports
- Controls downloading image, running scripts and so on
- Switches active MDI child windows by Tab control
- Deters advertising popup windows
- Supports Favorite Group
- Tab control supports OLE-drag-and-drop
- Supports the loading of Favorites' order
- You can try Mozilla control
Source code guide
- ATL3.0 doesn't support
put_DLControlFlags which controls downloading images
etc, so I have Changed Atlhost.h a little. You need not to read AtlhostEx.h,
AtlifaceEx.h, AtlifaceEx.idl, and AtlifaceEx_i.c.
- Many users hope an application not use "Registry", so I wrote MtlProfile.h
for "Ini file", in which algorithms support
ATL::CRegKey, too. And you can
find functions which save and load ReBar Bands' position.
- In ExplorerMenu.h, Emulates IE's "Favorites Menu" which loads your Favorites dynamically.
- As
WTL::CCommandBarCtrl doesn't support MenuControl (Nobody finds MDI application with a command bar on rebar),
I wrote MDIMenuControl.h.
- In MtlWeb.h or MtlMisc.h you can find some utility functions. Some SHx
APIs require the infamous "Active Desktop", so I had to write some codes
instead of them.
- If a SDI application,
WTL::UpdateUI frame work is not bad. But if a MDI application, I think it useless.
So I wrote CUpdateCmdUI.h from MFC's UpdateCommandUI framework.
- If the file name is Mtlx.h, I think it reusable. If not, it's a draft header.
Problems
- While switching the active maximized MDI child window, you can take a look
at normal-sized window.
- If you activate other window before page loading is completed, then WebBrowser
control will lose a focus every page you go.
- If a link decides target frame, "Window Lock" is not effective.
- As I forcefully narrow the vertical gap of rebar in a menubar and toolbar
band, if you change the position of toolbar bands, top and bottom of toolbar
pressed buttons can't be painted.
- If IE4, then you can't load Donut. Can you fix it?
- It seems that
SetWindowText API sometimes crashes. Somebody fix it!
Warning
- Donut needs WTL3.1 and the latest SDK headers.
- Donut doesn't use C-Runtime Library(CRT) according to WTL. (But it depends
on the STL implementation. If HP's STL, it's ok. If SGI's STL, CRT required).
If you determine whether to use CRT or not, you'd better use it! I guess that
in Donut, which is not so large, the amout of code of tricks for avoidance
of CRT is now more than CRT set-up codes.
- If you build it in Release mode, the compiler would warn that Exception
is invalid, but don't care.
- Fonts of Dialog resources is "MS UI Gothic". So if you don't have this font,
it's possible the dialog layout may go mad.
- As I don't have English version of Microsoft Internet Explorer, All the
menu texts is not same as that.
- Favorite Group files are searched in the path \folder has Donut.exe\FavoriteGroup\.
Please make FavoriteGroup folder.
Comment
- Simple wrapper classes such as CWindow feel good. MFC tries to control a
life of a window and often makes trouble.
- Even if you write wrong codes, the access violation may not occur. I think
HWND is even more safe than CWnd*.
- WTL's message map is very flexible, so you can write codes much more easily
than MFC in some cases.
- CCommandBarCtrl is big one, but I think the function of displaying icons
must be separated from command bar in order to smallize a code size, because
I think many developers want only command bar.
- About WTL's rebar framework, I have some complaints.
- While developing it, I've found some bugs, you can check it out
here, where you may still find bugs.
WTL or MFC
Donut now means "Why Don't you use WTL?". Even if you do a job with WTL, you
will not think it useless, while you shares Donut source codes. WTL makes a
use of the bare functionalities of Windows APIs, which is absolutely object-oriented
(Do you believe it?). That's why WTL has the crucial advantage - the smallest
and fastest code, that I think the reason why you choose C++. Now that the new
programming paradigm is coming, you are trying to write codes in generic way:
Concept-based, Policy-based programming, that is, template magics, almost of
which VC6 can't cast. I believe WTL considerably will fit it.
Words of thanks
Special thanks to those who help me cook Donut, especially Dog-store, fub and
Nishizawa. you can find them in the source code.
| You must Sign In to use this message board. |
|
| | Msgs 1 to 25 of 62 (Total in Forum: 62) (Refresh) | FirstPrevNext |
|
 |
|
|
How can i change the settings such as proxy,security etc of the webserver tool provided by Visual Studio.net 2005 to the configations of Mozilla Firefox(latest version).By default it provides the settings for IE which was available with Windows 2003 Server(Service pack 1).
|
| Sign In·View Thread·PermaLink | 2.00/5 (1 vote) |
|
|
|
 |
|
|
 |
|
|
 |
|
|
I have figured out how to show and hide sidebar from BHO using ShowBrowserBar call. Does anyone knows how to update the url in the sidebar from the BHO?
|
| Sign In·View Thread·PermaLink | 1.00/5 (1 vote) |
|
|
|
 |
|
|
I read some of donut source code and feel it is great. Especially I love its porting of MFC style updating command ui. I feel the current WTL updating command ui is very limited. I have to explictly call UISetCheck() etc., whenever some kind of events occur. What if an event causes multiple ui changes? I have to UISetCheck() on every control. The framework is useless in this often seen case.
Why didn't the WTL update cmd ui designer follow MFC? Maybe people should consider put this implementation into WTL. There are many good stuff in this package.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I tried to compile it with Visual Studio C++ 6.0, WTL7.1 and the February 2003 SDK Release. I'm getting the following errors and warnings:
C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\WtlFixed/atlframe.h(171) : warning C4005: 'CHAIN_COMMANDS' : macro redefinition C:\WTL71\INCLUDE\atlwinx.h(40) : see previous definition of 'CHAIN_COMMANDS' C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\WtlFixed/atlframe.h(177) : warning C4005: 'CHAIN_COMMANDS_MEMBER' : macro redefinition C:\WTL71\INCLUDE\atlwinx.h(48) : see previous definition of 'CHAIN_COMMANDS_MEMBER' C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\WtlFixed/atlframe.h(183) : warning C4005: 'CHAIN_COMMANDS_ALT' : macro redefinition C:\WTL71\INCLUDE\atlwinx.h(44) : see previous definition of 'CHAIN_COMMANDS_ALT' C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\WtlFixed/atlframe.h(189) : warning C4005: 'CHAIN_COMMANDS_ALT_MEMBER' : macro redefinition C:\WTL71\INCLUDE\atlwinx.h(52) : see previous definition of 'CHAIN_COMMANDS_ALT_MEMBER' C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\mtlweb.h(347) : error C2065: 'SHACF_FILESYSTEM' : undeclared identifier C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\mtlweb.h(347) : error C2065: 'SHACF_URLALL' : undeclared identifier C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\mtlweb.h(347) : error C2065: 'SHACF_USETAB' : undeclared identifier C:\Program Files\Microsoft Visual Studio\MyProjects\DonutL21_src\mtlbrowser.h(9) : fatal error C1083: Cannot open include file: 'tlogstg.h': No such file or directory
Does anybody know what I'm doing wrong? The WTL3.0 is nowhere available anymore. Any help is appreciated.
Regards, Andreas
|
| Sign In·View Thread·PermaLink | 1.25/5 (4 votes) |
|
|
|
 |
|
|
 |
|
|
I am compiling the donut project. However it gave me an error as can be seen below:
compiling donut.cpp error C2664: 'OnTimer' : cannot convert parameter 2 from 'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)' to 'void (__stdcall ** )(struct HWND__ *,unsigned int,unsigned int,unsigned long) '
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I encountered the same problem when compiling with WTL 7. When I switched to WTL 3.1, everything compiled fine.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
When I changed WTL3.1 to WTL7.0, I found how to modify. Just remove pointer mark (*).
> void OnTimer(UINT wTimerID, TIMERPROC *) void OnTimer(UINT wTimerID, TIMERPROC)
Windows98/VC++6.0sp5pro/SDK-may2002/ATL3.0/WTL7.0
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
 |
|
|
Expression: !InlineIsEqualGUID(*m_plibid, GUID_NULL) && "Did you forget to pass the LIBID to CComModule::Init?"
|
| Sign In·View Thread·PermaLink | 1.75/5 (3 votes) |
|
|
|
 |
|
|
I am compiling the donut project. However it gave me an error as can be seen below:
Compiling resources... U:\urop1\Donut.rc(10) : fatal error RC1015: cannot open include file 'atlres.h'. Error executing rc.exe. U:\urop1\Donut.rc(10): Could not find the file atlres.h.
I would like to know what is the problem. Thx in advance .
=) hibiki
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
 |
|
|
Hi, I am able to tab in to the webbrowser and use the keyboard on all the links in the webpage but I am not able to tab out to other buttons/ controls on the panel. I would like to know if there is some way to tab out of the webpage and go to other buttons on the panel.
|
| Sign In·View Thread·PermaLink | 2.00/5 (1 vote) |
|
|
|
 |
|
|
* My Compile Environment is:
Visual Studio v6.0 Enterprise Edit. (latest pack) and Microsoft Platform SDK (latest version) and WTL(3.1)
--------------------Configuration: Donut - Win32 Release-------------------- Compiling... Donut.cpp F:\Temp\IDocHostUIHandlerDispatchImpl.h(25) : error C2668: 'InlineIsEqualGUID' : ambiguous call to overloaded function Error executing cl.exe.
Donut.exe - 1 error(s), 0 warning(s)
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q243298
or You can update AtlBase.h hidden in the SDK.
|
| Sign In·View Thread·PermaLink | 1.00/5 (1 vote) |
|
|
|
 |
|
|
I don't like the IE cotrol. Do you have some experiences with the Mozilla control ? If so could you get me some hints how to integrate it?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
You can get it from http://www.iol.ie/~locka/mozilla/mozilla.htm
All you have to do is install Mozilla control and change the Option of Donut. You need not touch the source code of Donut. Mozilla control is just a interface to Mozilla. You may have to get the latest Netscape or something.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Sorry, I didn't recognize that Donut is so easy to configure. Great work!! The Mozilla control works now. I have one open problem - the proxy configuration. Do you have an idea why the option dialog is not displayed? When I choose the IE control it works. Currently I have Mozilla browser 0.9.9 installed and have registered mozctl.dll and mozctlx.dll myself. I'm not sure if the options are part of the control or if I have to register additional DLL's.
Frank
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
OK, I know this is simple, but can't figure it out ... Deleting intermediate files and output files for project 'Donut - Win32 Release'. --------------------Configuration: Donut - Win32 Release-------------------- Compiling resources... Compiling... stdafx.cpp Compiling... Donut.cpp Linking... LIBC.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Release/Donut.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe.
Donut.exe - 2 error(s), 0 warning(s)
So, what am I overlooking in the settings? Thanks much for the assistance. KC
|
| Sign In·View Thread·PermaLink | 2.00/5 (1 vote) |
|
|
|
 |
|
|
General News Question Answer Joke Rant Admin
|