Blue Theme Orange Theme Green Theme Red Theme
 
Home | Forums | ASP.NET 2.0 Tutorials | Web Services | How Do I...? | Class Browser | WPF Quick Starts
 | Consulting  
Submit an Article Submit a Blog 
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
 Resources  
Close
 Our Network  
Close
Search :       Advanced Search »
Home » Tutorials » Band Objects: A beginners tutorial from scratch

Band Objects: A beginners tutorial from scratch


This tutorial explains about what is band objects.How to implement them? This is a modified version of MSJ and MSDN samples. A simple tutorial with examples and sample code attached.

Author Rank:
Total page views :  34138
Total downloads :  657
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
Download Files:
kBand.zip
 
Become a Sponsor

This tutorial has three parts-

  1. What these band objects are?
  2. How to implement them? and
  3. Sample. This is a modified version of MSJ and MSDN samples.

What are band objects?

Did you ever push "Search" toolbar button of IE? Yeah...then you must be familiar with band objects. Clicking on search button opens a  window in the left side of IE. This window is 'Web Search Assistant'. This is a perfect example of a band object.

There are three main categories of band objects: Explorer bars( Info and command bands), desk bands, and tool bands. Info bands are vertical explorer bars and Command bands are horizontal explorer bars. There are two types of explorer bars. Vertical explorer bars or sometimes called Info bands and horizontal explorer bars, called command bands. Implementation of both is same. The Internet Explorer History, Favorites, and Search windows are all info bands.

Band objects were introduced in IE 4.0, Shell version 4.71. They are COM objects contained by IE or shell.

Explorer Bars

An explorer bar is a child window within the main IE window. Explorer bars can be vertical or horizontal. Horizontal explorer bars cover bottom area of IE's main window.

Explorer bars can be called from View/Explorer bars menu or on clicking of a toolbar button.

Desk Bands

Desk bands are dockable windows on the desktop. You can select it by right-clicking the taskbar and selecting it from the Toolbars submenu. You can even drag it to the desktop, and it will appear as a normal window.

Tool Bands

Radio control in this image is a perfect example of tool band. By creating a tool band, you can add a band to that rebar control.

Implementation of  band objects?

A band object implements 6 interfaces. Three of them are optional. Here is a list of these interfaces

  • IDeskBand
  • IObjectWithSite
  • IPersistStream
  • IInputObject (optional)
  • IContextMenu (optional)
  • ICommandTarget (optional)

Before discussing any thing else, we should see little bit about these interfaces.

IDeskBand

IDeskBand is used to obtain information about a band object. This interface is used by the browser to obtain display information for a band. IDeskBand has only one method, GetBandInfo. HRESULT GetBandInfo( DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi );

This interface is derived from IDockingWindow. IDockingWindow interface provides docking feature to band objects so they can be docked inside a Windows Explorer window. This interface has three methods. You will see these three methods in sample example. These methods are

Methods Description
CloseDW Notifies the docking window object that it is about to be removed
ResizeBorderDW Notifies the docking window object that the frame's border space has changed
ShowDW Instructs the docking window object to show or hide itself.

IObjectWithSite

This interface provides communication between a band object and its container, a browser. It has two methods:

Methods Description
SetSite Provides the site's IUnknown pointer to the object being managed.
GetSite Retrieves the last site set with IObjectWithSite::SetSite.

IPersistStream

The IPersistStreamInit  replaces IPersistStream and class IPersistStreamInitImpl provides a default implementation of this interface. You will see IPersistStreamInitImpl in our sample.

IInputObject

This interface is used by the browser. The IInputObject interface is used to notify the object of UI activation change and translate keyboard accelerators. Do not worry about it :). If a band object accepts user input then this interface must be implemented.

IContextMenu

This interface is used to create a context menu for a band object. This interface must be implemented if you want to create context menus. Otherwise there is no need to implement this interface. We will create a menu on right mouse click of the explorer bar. IContextMenu has three functions.

Methods Description
GetCommandString Retrieves a command's text.
QueryContextMenu Adds commands to a context menu.
InvokeCommand Carries out the command associated with a context menu item.

Band Objects and registry

Band objects are COM objects. Their CLSID must be registered. Besides CLSID, they should be registered in a category. This CATID tells the browser that what kind of band object is it. Here is a table listed with categories.

Type Category
Vertical Explorer Bar CATID_InfoBand
Horizontal Explorer Bar CATID_CommBand
Desk Band CATID_DeskBand

Registry entries required for an Explorer Bar

  1. Create a GUID in using guiden.exe. Say this GUID is MyGUID

  2. Create a new key, with the GUID as the name, in the registry under:
    HKEY_CLASSES_ROOT\CLSID\MyGUID
    The default value of the key should be set to the name of the Explorer Bar in the View menu.

  3. Create a new key, Implemented Categories, under:
    HKEY_CLASSES_ROOT\CLSID\<MyGUID>\Implemented Categories

  4. Create a new key using the CATID of the type of Explorer Bar you are creating as the name of the key. This can be one of the following values:

    CATID Description
    {00021494-0000-0000-C000-000000000046} Defines a horizontal Explorer Bar.
    {00021493-0000-0000-C000-000000000046} Defines a vertical Explorer Bar.

    The result should look like:
    //for a horizontal Explorer Bar
    HKEY_CLASSES_ROOT\CLSID\<MyGUID>\
    Implemented Categories\{00021494-0000-0000-C000-000000000046}
    //for a vertical Explorer Bar
    HKEY_CLASSES_ROOT\CLSID\<MyGUID>\
    Implemented Categories\{00021493-0000-0000-C000-000000000046}

  5. Create a new key, InProcServer32, under:
    HKEY_CLASSES_ROOT\CLSID\MyGUID\InProcServer32
    Set the default value of the key to the full path of the Shdocvw.dll for HTML pages or the .dll file of the
    Explorer Bar.

  6. Create a new string value, ThreadingModel, under:
    HKEY_CLASSES_ROOT\CLSID\MyGUID\InProcServer32\ThreadingModel
    Set the value of ThreadingModel to "Apartment".

  7. Create a new key, Instance, under:
    HKEY_CLASSES_ROOT\CLSID\MyGUID\Instance

  8. Required for Explorer Bars that display an HTML page, but optional otherwise. Create a new string value,
    CLSID, under:
    HKEY_CLASSES_ROOT\CLSID\MyGUID\Instance\CLSID
    Set the value of CLSID to {4D5C8C2A-D075-11d0-B416-00C04FB90376}.

  9. Create a new key, InitPropertyBag, under:
    HKEY_CLASSES_ROOT\CLSID\MyGUID\Instance\InitPropertyBag

  10. Required for Explorer Bars that display an HTML page, but optional otherwise. Create a new string value,
    Url, under:
    HKEY_CLASSES_ROOT\CLSID\MyGUID\Instance\InitPropertyBag\Url
    Set the value of Url to the location of the HTML file that contains the content for the Explorer Bar.

  11. Remove the following registry entries:
    HKEY_CLASSES_ROOT\Component Categories\
    {00021493-0000-0000-C000-000000000046}\Enum
    HKEY_CLASSES_ROOT\Component Categories\
    {00021494-0000-0000-C000-000000000046}\Enum

Implementing interfaces

The IObjectWithSite Interface

When the user selects an Explorer Bar, the container calls the corresponding band object's IObjectWithSite::SetSite method. The punkSite parameter will be set to the site's IUnknown pointer.

In general, a SetSite implementation should perform the following steps:

  • Release any site pointer that is currently being held.
  • If the pointer passed to SetSite is set to NULL, the band is being removed. SetSite can return S_OK.
  • If the pointer passed to SetSite is non-NULL, a new site is being set. SetSite should do the following:
  1. Call QueryInterface on the site for its IOleWindow interface.

  2. Call IOleWindow::GetWindow to obtain the parent window's handle, and save it for future use. Release IOleWindow if it is no longer needed.

  3. Create the band object's window as a child of the window obtained in the previous step. Do not create it as a visible window.

  4. If the band object implements IInputObject, call QueryInterface on the site for its IInputObjectSite interface. Store the pointer to this interface for use later.

  5. If all steps are successful, return S_OK. If not, return the OLE-defined error code indicating what failed.

Here is SetSite and GetSite methods from my example. Here m_hwndParent is the parent window's handle.

STDMETHODIMP CCHTM::SetSite(IUnknown* pUnkSite)
{
// If punkSite is not NULL, a new site is being set.
if (pUnkSite)
{
// If a site is being held, release it and
// release the in-place object and frame interfaces.
//
if (_pSite)
{
_pSite->Release();
_pSite = NULL;
}
// Get the parent window.
IOleWindow* pOleWindow;
if (SUCCEEDED(pUnkSite->QueryInterface(IID_IOleWindow, (LPVOID*)&pOleWindow)))
{
pOleWindow->GetWindow(&_hwndParent);
pOleWindow->Release();
}
_ASSERT(_hwndParent);
if (!_hwndParent)
return E_FAIL;
RECT rc;
::GetClientRect(_hwndParent, &rc);
Create(_hwndParent, rc);
// Get and keep the IInputObjectSite pointer.
HRESULT hr = pUnkSite->QueryInterface(IID_IInputObjectSite, (LPVOID*)&_pSite);
_ASSERT(SUCCEEDED(hr));
// Get the IWebBrowser2 interface of Internet Explorer
// This is so we can do such things as navigate in the main
// window and write to the status bar.
IOleCommandTarget* pCmdTarget;
hr = pUnkSite->QueryInterface(IID_IOleCommandTarget, (LPVOID*)&pCmdTarget);
if (SUCCEEDED(hr))
{
IServiceProvider* pSP;
hr = pCmdTarget->QueryInterface(IID_IServiceProvider, (LPVOID*)&pSP);
pCmdTarget->Release();
if (SUCCEEDED(hr))
{
if (s_pFrameWB)
{s_pFrameWB->Release();
s_pFrameWB = NULL;
}
hr = pSP->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, (LPVOID*)&s_pFrameWB);
_ASSERT(s_pFrameWB);
pSP->Release();
}
}
/* // char * name = "_kBand";
// _bstr_t bstr = name;
BSTR bstr;
char * wndName = "sdfasf";
bstr = _bstr_t(wndName);
IHTMLWindow2Ptr pHTMLWnd;
IHTMLDocument2Ptr pDoc(__uuidof(HTMLDocument));
pDoc->get_parentWindow(&pHTMLWnd);
pHTMLWnd->get_name( &bstr);
::MessageBox(NULL,LPCTSTR((char*)bstr),"Title",MB_OK);
*/
// pHTMLWnd->put_name( bstr );
}
return S_OK;
}
STDMETHODIMP CCHTM::GetSite(REFIID riid, void **ppvSite)
{
*ppvSite = NULL;
if(_pSite)
return _pSite->QueryInterface(riid,ppvSite);
return E_FAIL;
}

Window creation is handled by OnCreate method. I am using CAxWindow to create a window which hosts a web
browser control. SetWindowLong is used to set window styles.

LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
CAxWindow wnd(m_hWnd);
HRESULT hr = wnd.CreateControl(IDH_CHTM);
if (SUCCEEDED(hr))
{
hr = wnd.SetExternalDispatch(static_cast<ICHTMUI*>(this));
long dwStyle = wnd.GetWindowLong(GWL_STYLE);
wnd.SetWindowLong(GWL_STYLE,dwStyle | WS_HSCROLL | WS_VSCROLL);
}
if (SUCCEEDED(hr))
hr = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);
return SUCCEEDED(hr) ? 0 : -1;
}
 
NOTE: If you dont want to host a web browser inside an Explorer bar then you can create just window using CreateChildWindow function given below. This is same as in MSDN. The window creation is dome by using CreateWindowEx. If the window does not exist, this method creates the Explorer Bar's window. The child window's handle is stored in m_hwnd.

BOOL CreateChildWindow(void)
{
//If the window doesn't exist yet, create it now.
if(!m_hWnd)
{
//Can't create a child window without a parent.
if(!m_hwndParent)
{
return FALSE;
}
//If the window class has not been registered, then do so.
WNDCLASS wc;
if(!GetClassInfo(g_hInst, EB_CLASS_NAME, &wc))
{
ZeroMemory(&wc, sizeof(wc));
wc.style          = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
wc.lpfnWndProc    = (WNDPROC)WndProc;
wc.cbClsExtra     = 0;
wc.cbWndExtra     = 0;
wc.hInstance      = g_hInst;
wc.hIcon          = NULL;
wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground  = (HBRUSH)CreateSolidBrush(RGB(0, 0, 192));
wc.lpszMenuName   = NULL;
wc.lpszClassName  = EB_CLASS_NAME;      
if(!RegisterClass(&wc))
{
//If RegisterClass fails, CreateWindow below will fail.
}
}
RECT  rc;
GetClientRect(m_hwndParent, &rc);
//Create the window. The WndProc will set m_hWnd.
CreateWindowEx(   0,
EB_CLASS_NAME,
NULL,
WS_CHILD | WS_CLIPSIBLINGS | WS_BORDER,
rc.left,
rc.top,
rc.right - rc.left,
rc.bottom - rc.top,
m_hwndParent,
NULL,
g_hInst,
(LPVOID)this);      
}
return (NULL != m_hWnd);
}

Creating controls on an Explorer Bar

You can create your controls on this window too. Here is how to create a button on an Explorer bar. Write this code after CreateWindowEx.

::GetClientRect(m_hWnd, &rc);
HWND btnHandle = CreateWindow(
"mcbButton", // predefined class
"Button", // button text
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, // styles
rc.left, // starting x position
rc.top, // starting y position
rc.right - rc.left, // button width
20, // button height
m_hWnd, // parent window
NULL, // No menu
(HINSTANCE) ::GetWindowLong(m_hWnd, GWL_HINSTANCE),
NULL); // pointer not needed

The IDeskBand Interface

There are two IOleWindow methods: GetWindow and ContextSensitiveHelp. GetWindow returns the band's child window handle, m_hwnd. Context-sensitive help is not implemented, so ContextSensitiveHelp returns E_NOTIMPL.

All three interfaces of IDockingWindow are also here.

STDMETHODIMP GetWindow(HWND* phwnd)
{
*phwnd = m_hWnd;
return S_OK;
}
// The ShowDW method either shows or hides depending on the value of its parameter. STDMETHODIMP
howDW(BOOL fShow)
{
if(m_hWnd)
{
if(fShow)
{
::ShowWindow(m_hWnd,SW_SHOW);
}
else
{
::ShowWindow(m_hWnd,SW_HIDE);
}
}
return S_OK;
}
// CloseDW Calls DestroyWindow
STDMETHODIMP CloseDW(unsigned long dwReserved)
{
ShowDW(FALSE);
if(::IsWindow(m_hWnd))
::DestroyWindow(m_hWnd);
m_hWnd = NULL;
return S_OK;
}
// This method is not implemented. Returns E_NOTIMPL;
STDMETHODIMP ResizeBorderDW(const RECT* prcBorder,
IUnknown* punkToolbarSite,
BOOL fReserved)
{
return E_NOTIMPL;
}

Here is  GetBandInfo method of IDeskBand.

STDMETHODIMP CCHTM::GetBandInfo(DWORD dwBandID, DWORD dwViewMode,DESKBANDINFO* pdbi)
{
if(pdbi)
{
m_dwBandID = dwBandID;
m_dwViewMode = dwViewMode;
if(pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = MIN_SIZE_X;
pdbi->ptMinSize.y = MIN_SIZE_Y;
}
if(pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = -1;
pdbi->ptMaxSize.y = -1;
}
if(pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 1;
pdbi->ptIntegral.y = 1;
}
if(pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 0;
pdbi->ptActual.y = 0;
}
if(pdbi->dwMask & DBIM_TITLE)
{
lstrcpyW(pdbi->wszTitle,L"Kruse Band");
}
if(pdbi->dwMask & DBIM_MODEFLAGS)
{
pdbi->dwModeFlags = DBIMF_VARIABLEHEIGHT;
}
if(pdbi->dwMask & DBIM_BKCOLOR)
{
pdbi->dwMask &= ~DBIM_BKCOLOR;
}
return S_OK;
}
return E_INVALIDARG;
}

Two more functions OnHScroll anbd OnVScroll are not implemented yet.

Hosting a web browser inside an explorer bar?

Project kBand.zip is attached with this article. This DLL implements a vertical explorer bar, called Kruse Band. Download this zip, compile it and call Explorer Bar from View\Explorer Bars menu's Kruse Band submenu. It Looks like in the above example. If you type URL (including http), click go, it opens that URL inside the Explorer bar.

See above about how it works.

References:

MSDN Library - April 2000

TO DO #1: Scroll bars doesn't work in this sample. You can provide that functionality and can resubmit the
code.

TO DO #2: View in main window doesn't work.

TO DO #3: Remove html and create a dialog with buttons on it. Open URL on dialog's button click.


Login to add your contents and source code to this article
 About the author
 
Mahesh Chand
Mahesh is a software developer with over 13 years of experience building systems for Financial and Banking, Engineering & Architectural, Imaging, Construction, Biological & Pharmaceuticals, Healthcare and Education industries. His expertise is Windows Forms, ASP.NET, Silverlight, WPF, WCF, Visual Studio 2010, SQL Server, and Oracle. If you are looking for a Sharepoint, Windows Forms, ASP.NET, WPF, Silverlight, C#, VB.NET, Oracle, and SQL Server Consultant in Philadelphia area or remote location, drop me a line at MAHESH [AT] C-SHARPCORNER [DOT] COM.
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
SQL and .NET performance profiling in one place
Investigate SQL and .NET code side-by-side with ANTS Performance Profiler 6, so you can see which is causing the problem without switching tools.
Go.NET
Build custom interactive diagrams, network, workflow editors, flowcharts, or software design tools. Includes many predefined kinds of nodes, links, and basic shapes. Supports layers, scrolling, zooming, selection, drag-and-drop, clipboard, in-place editing, tooltips, grids, printing, overview window, palette. 100% implemented in C# as a managed .NET Control. Document/View/Tool architecture with many properties&events. Optional automatic layout.
Dundas Software
Dundas Chart for .NET is the most advanced .NET charting package available today.  With an extremely complete feature set, elegant architecture and easy implementation, Dundas Chart can quickly add advanced Charting functionality to enhance and transform ASP.NET and Windows Forms applications.  Whether you are implementing charting into internal projects, or building applications for clients, Dundas Chart offers advanced technology and advanced results to get the most out of data.
60 FREE UI Controls from DevExpress
Register for your FREE copy on over 60 free presentation controls from DevExpress - Absolutely Free-of-Charge without any royalties or distribution costs. Visit Devexpress.com/60 today. Free controls include advanced lists box, dropdown calendar, rich text edit, spin edit, tab control and so much more!

DevExpress engineers feature rich presentation controls and reporting tools for WinForms, ASP.NET, WPF, and Silverlight. Our technologies help you build your best, see complex software with greater clarity and deliver compelling business solutions for Windows and the web in the shortest possible time.
Clickatell's SMS Gateway
Clickatell's Developer Solutions allow you to SMS enable any website or application via a range of API's. Learn More about our API connections.
Free access to .NET Memory Management video
Everything you need to know about Garbage Collection, Temporary Objects, Fragmentation, Finalization and common causes of memory leaks in .NET. Watch the video here.
Microsoft Visual Studio 2010
Visualize your workspace with new multiple monitor support, powerful Web development, new SharePoint support with tons of templates and Web parts, and more accurate targeting of any version of the .NET Framework. Get set to unleash your creativity.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Developer-Ready ASP.NET 2.0 Web Hosting with 3 MONTHS FREE
Now supporting .NET 3.0 Framework with Windows Workflow Foundation, Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), windows CardSpace (WCS)! Providing more flexibility for Developers with Web Services Support and a User/Permission Manger. Also supporting MS SQL 2005/2000 with Real-Time Backups, FREE Automated Attach .MDF Tool, FREE SQL Restore and Shrink SQL DB Tools, and SQL
Read the Top 10 Books for Microsoft Developers, 15 Days FREE
Read the Top 10 Books for Microsoft Developers, 15 Days FREE
Try Safari Books Online - 15 Days FREE + 15% Off for 1 Year
Try Safari Books Online - 15 Days FREE + 15% Off for 1 Year
 
 Post a Feedback, Comment, or Question about this article
Subject:
Comment:
 Comments
test by quick On May 30, 2006
123
Reply | Email | Delete | Modify | 
Compilation error by quick On May 30, 2006

Hi mahesh,

 When i try to compile your source code, i get this error.

 -------------------Configuration: band - Win32 Debug--------------------
Compiling...
StdAfx.cpp
c:\samples\kruse band\stdafx.h(21) : error C2146: syntax error : missing ';' before identifier '_Module'
c:\samples\kruse band\stdafx.h(21) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

band.dll - 2 error(s), 0 warning(s)

Any help is greatly appreciated.

Thanks,

Sreekanth

Reply | Email | Delete | Modify | 
Re: Compilation error by Mahesh On April 2, 2009
Sorry guys. I have not worked with C++ since year 2000 and have no plan to look at this code. Feel free to post your questions on C# Corner forums.
Reply | Email | Delete | Modify | 
DeskBand/Rebar flickering on IE Resize by Nareah On September 16, 2008
hi, can u tell me why does the deskband/rebar flickers when i resize IE. My prob. is, i had created a toolbar for IE using when i resize IE it(deskband/rebar/toolbar) flickers/blinks. how to color these deskbands.what is the process of coloring using GetBandInfo() and assiging my color to crBack variable of DESKBANDINFO structure. Plz its Urgent for me......
Reply | Email | Delete | Modify | 
Re: DeskBand/Rebar flickering on IE Resize by Mahesh On April 2, 2009
Sorry guys. I have not worked with C++ since year 2000 and have no plan to look at this code. Feel free to post your questions on C# Corner forums.
Reply | Email | Delete | Modify | 
Error by val On March 25, 2009
" Hi mahesh, When i try to compile your source code, i get this error. -------------------Configuration: band - Win32 Debug-------------------- Compiling... StdAfx.cpp c:\samples\kruse band\stdafx.h(21) : error C2146: syntax error : missing ';' before identifier '_Module' c:\samples\kruse band\stdafx.h(21) : fatal error C1004: unexpected end of file found Error executing cl.exe. band.dll - 2 error(s), 0 warning(s) Any help is greatly appreciated. Thanks, Sreekanth " Hi manesh.. I have the same error. What can I solve? And How can I debug it? Thank you very much for your help.. Valerio
Reply | Email | Delete | Modify | 
Re: Error by Mahesh On April 2, 2009
Sorry guys. I have not worked with C++ since year 2000 and have no plan to look at this code. Feel free to post your questions on C# Corner forums.
Reply | Email | Delete | Modify | 
ASP.Net 4 Hosting is here
 Hosted by MaximumASP  |  Found a broken link?  |  Contact Us  |  Terms & conditions  |  Privacy Policy  |  Site Map  |  Suggest an Idea  |  Media Kit
Current Version: 5.2010.8.14
 © 2010  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.