|
Hi i am kinda new to MFC programing , i have an image displayed from CCD camera it displays but it doesn't save the image how can i manage to save this file on C drive. plz do help
thknz
sunny
-- modified at 17:44 Wednesday 20th June, 2007
Dipen Rana
UT Southwestern Medical Center
|
|
|
|
|
I moved this to the MFC forum. Please, never ask programming questions in the lounge. That's what the 'please do not ask programming questions in the lounge' notice is for. Yes, it was on your screen as you typed this.
MFC contains no support for saving images, you should use GDI+ for that. If you're using VC7, it's built in, and if you're using VC6, your compiler sucks, try moving to VC7.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
If you have an HBITMAP (a DDB or a DIBSection), and BMP,PNG,JPEG, or GIF is your desired file
format, then the MFC/ATL CImage shared class (which uses GDI+) makes it simple enough...
#include <atlimage.h>
...
HBITMAP hBitmap;
...
CImage image;
image.Attach(hBitmap);
image.Save(_T("c:\\test.bmp"), ImageFormatBMP);
image.Detach();
Depending on the format of your source image, it can be this simple or may involve more steps,
such as providing a color table, etc.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
You can write image.Save(_T("c:\\test.bmp")); for bmp you dont need to set second parameter.;)
|
|
|
|
|
Is the default (GUID_NULL) BMP? I haven't looked much at the source - I use GDI+ directly
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Yeah second parameter is REFGUID guidFileType= GUID_NULL .
|
|
|
|
|
Hey thnkz for the help but i still have problem i have written the code in .C and i m calling its function in my main thread (i call Createwin) but if i m using ATL in this *.c file it gives me error so i heres my code and if you can help its would be gratefull
/******************************************************************************************************************************
/* Window.C */
#include <windows.h>
#include "wingdi.h"
#include "win.h"
#define ALIGNLONG(i) ((i+3)/4*4)
#define COLORBITS 8
void Draw_Strip( HWND hWnd );
HBRUSH ghbrWhite, ghbrBlack;
void Create_DIB( HWND wnd );
void Draw_DIB( HWND wnd );
/*
* Some handy globals.
*/
int W, H;
static HBITMAP hBitmap;
static LPBITMAPINFOHEADER lpbi;
static BITMAPINFOHEADER bi;
char *lpstBitmap;
HPALETTE palette;
/**************************************************
*
* Register this type of window...
*
*
**************************************************/
BOOL RegisterWindow(char *lpClass, HANDLE instance)
{
WNDCLASS wc;
ghbrWhite = CreateSolidBrush(0x00FFFFFF);
ghbrBlack = CreateSolidBrush(0x00000000);
wc.style = CS_OWNDC;
wc.lpfnWndProc = (WNDPROC) ImageWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = sizeof(LONG);
wc.hInstance = instance;
wc.hIcon = LoadIcon(NULL,IDC_ARROW);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = ghbrWhite;
wc.lpszMenuName = NULL;
wc.lpszClassName = lpClass;
if (!RegisterClass(&wc))
return FALSE;
else
return TRUE;
}
/**************************************************
*
* Create and show the window....
*
*
**************************************************/
HWND CreateWin( int x,
int y,
int width,
int height,
char *lpClass,
char *name,
HANDLE instance)
{
HWND handle;
W = width;
H = height;
handle = CreateWindow(
lpClass, // pointer to registered class name
name, // pointer to window name
WS_VISIBLE | WS_OVERLAPPEDWINDOW, //| WS_VSCROLL | WS_HSCROLL, // window style
x, // horizontal position of window
y+20, // vertical position of window
width, // window width
height, // window height
NULL, // handle to parent or owner window
NULL, // handle to menu or child-window identifier
instance, // handle to application instance
NULL // pointer to window-creation data
);
return (handle);
}
/**************************************************
*
* Handles the messages for this window
*
*
**************************************************/
int WINAPI ImageWndProc(
HWND hwnd,
UINT message,
DWORD wParam,
LONG lParam)
{
switch (message)
{
case WM_PAINT:
Draw_DIB( hwnd );
return 0L;
break;
case WM_SIZE:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
case WM_CREATE:
Create_DIB( hwnd );
return 0L;
break;
case WM_CLOSE:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
case WM_DESTROY:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
default:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
}
}
/**************************************************
*
* Create a Device Independent Bitmap...
*
*
**************************************************/
void Create_DIB( HWND hWnd )
{
HDC hDC;
unsigned char i;
long k,j, NumBytes;
LPBITMAPINFO info;
unsigned char *dat;
DWORD error;
hDC = GetDC (hWnd) ;
// Intialize BITMAPINFOHEADER data.
//.................................
bi.biSize = sizeof (BITMAPINFOHEADER) ;
bi.biWidth = W;
bi.biHeight = -H; // top-down DIB
bi.biPlanes = 1;
bi.biBitCount = COLORBITS;
bi.biCompression = BI_RGB;
bi.biSizeImage = ( ALIGNLONG( (W * COLORBITS)/8 ) * H);
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 256;
bi.biClrImportant = 256;
// Allocate memory for BITMAPINFO structure.
//..........................................
NumBytes = sizeof(BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD) +
( ALIGNLONG( ( W * COLORBITS ) / 8 ) * H );
lpbi = (BITMAPINFOHEADER*)GlobalAlloc( GPTR, NumBytes );
if( lpbi == NULL )
{
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf, 0, NULL );
// Display the string.
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
exit( EXIT_FAILURE ); // Get out now!
}
// Copy BITMAPINFOHEADER information.
//...................................
*lpbi = bi;
// Create The Palette
info = (LPBITMAPINFO) lpbi;
for ( i=0; i<255; i++ )
{
info->bmiColors[i].rgbRed = i;
info->bmiColors[i].rgbBlue = i;
info->bmiColors[i].rgbGreen = i;
info->bmiColors[i].rgbReserved = 0;
}
// Set pointer to bitmap’s bit data.
//..................................
lpstBitmap = (LPSTR)lpbi + (WORD)sizeof(BITMAPINFOHEADER) +
(256 * sizeof(RGBQUAD));
dat = (unsigned char*)lpstBitmap;
for ( k=0; k< H; k++ )
for ( j = 0; j < W; j++ )
*dat++ = (unsigned char)k;
// Create uninitialized DIB bitmap.
//.................................
hBitmap = CreateDIBitmap( hDC,
&bi,
0,
0,
(LPBITMAPINFO) lpbi,
DIB_RGB_COLORS);
error = GetLastError();
ReleaseDC( hWnd, hDC);
}
/**************************************************
*
* Force repaint and update the display...
*
*
**************************************************/
void Draw_DIB( HWND hWnd )
{
PAINTSTRUCT ps;
HDC hMemDC;
int scan;
DWORD lasterror;
BeginPaint( hWnd, &ps );
hMemDC = CreateCompatibleDC( ps.hdc );
SelectPalette(hMemDC, palette, TRUE);
RealizePalette(hMemDC);
SelectPalette(ps.hdc, palette, TRUE);
RealizePalette(ps.hdc);
scan = SetDIBits(
hMemDC, // handle of device context
hBitmap, // handle of bitmap
0, // starting scan line
H, // number of scan lines
lpstBitmap, // array of bitmap bits
(LPBITMAPINFO) lpbi, // address of structure with bitmap data
DIB_RGB_COLORS ); // type of color indices to use
if ( !scan )
lasterror = GetLastError();
SelectObject( hMemDC, hBitmap );
BitBlt( ps.hdc, 0, 0, W, H,
hMemDC, 0, 0, SRCCOPY );
DeleteDC( hMemDC );
EndPaint( hWnd, &ps );
}
/**************************************************
*
* Set the bits to the bitmap to be displayed...
*
*
**************************************************/
void Update_Bitmap( HWND hwnd, unsigned short *data, int AutoStop )
{
// Alter The Bits via the pointer
int i,j;
unsigned char *dbits = (unsigned char*)lpstBitmap;
unsigned short *head;
static float mp;
unsigned int max, min;
max = 0;
min = 65535;
head = data;
/* Calculate Scaling Factor */
for (i=0; i<h; i++)
="" for="" (j="0;j<W;" j++)
="" {
="" if="" (="" min="">= *head ) min = *head;
if ( max <= *head ) max = *head;
head++;
}
mp = (float)256 / ( (float)max-(float)min );
/* Transfer Data to 8 bits */
for (i=0; i
|
|
|
|
|
If you're using C then you'll need to write the code to save the file yourself, or use a 3rd-
party library.
What format do you want to save the file to?
If BMP is ok, then the format of a BMP file is:
BITMAPFILEHEADER
BITMAPINFO (or BITMAPCOREINFO)
ColorTable
Pixel bits
For an example of writing a BMP file, see Saving a Drawing to a Bitmap File[^]
For other file formats you can look up the format and you'd need to implement any appropriate
compression. It's not a trivial project
Mark
"Go that way, really fast. If something gets in your way, turn."
|
|
|
|
|
Wells thnkz for info bu i was able to convert file to .cpp but my main concern is that i should be able to by default save each image clicked by camera but know that i have .cpp file i tried the code u send intially and it compiles fine w/o errors but it isnt saving file to desired location can you please go through code to help me out if i am making any mistakes with it. Also i have few doubts with code u send :
image.Attach(hBitmap);
image.Save(_T("c:\\test.bmp"), ImageFormatBMP); // save as BMP
image.Detach();
here it attaches hBitmap but wat file it saves a test.bmp is it the hBitmap file dat it saves as test.bmp?
/*************************************************************
#include "stdafx.h"
#include "afxstr.h"
#include "atlimage.h"
extern "C"
{
#include <windows.h>
#include "wingdi.h"
#include "win.h"
}
#define ALIGNLONG(i) ((i+3)/4*4)
#define COLORBITS 8
void Draw_Strip( HWND hWnd );
HBRUSH ghbrWhite, ghbrBlack;
void Create_DIB( HWND wnd );
void Draw_DIB( HWND wnd );
/*
* Some handy globals.
*/
int W, H;
static HBITMAP hBitmap;
static LPBITMAPINFOHEADER lpbi;
static BITMAPINFOHEADER bi;
char *lpstBitmap;
HPALETTE palette;
/**************************************************
*
* Register this type of window...
*
*
**************************************************/
BOOL RegisterWindow(char *lpClass, HANDLE instance)
{
WNDCLASS wc;
ghbrWhite = CreateSolidBrush(0x00FFFFFF);
ghbrBlack = CreateSolidBrush(0x00000000);
wc.style = CS_OWNDC;
wc.lpfnWndProc = (WNDPROC) ImageWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = sizeof(LONG);
wc.hInstance = instance;
wc.hIcon = LoadIcon(NULL,IDC_ARROW);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = ghbrWhite;
wc.lpszMenuName = NULL;
wc.lpszClassName = lpClass;
if (!RegisterClass(&wc))
return FALSE;
else
return TRUE;
}
/**************************************************
*
* Create and show the window....
*
*
**************************************************/
HWND CreateWin( int x,
int y,
int width,
int height,
char *lpClass,
char *name,
HANDLE instance)
{
HWND handle;
W = width;
H = height;
handle = CreateWindow(
lpClass, // pointer to registered class name
name, // pointer to window name
WS_VISIBLE | WS_OVERLAPPEDWINDOW, //| WS_VSCROLL | WS_HSCROLL, // window style
x, // horizontal position of window
y+20, // vertical position of window
width, // window width
height, // window height
NULL, // handle to parent or owner window
NULL, // handle to menu or child-window identifier
instance, // handle to application instance
NULL // pointer to window-creation data
);
return (handle);
}
/**************************************************
*
* Handles the messages for this window
*
*
**************************************************/
int WINAPI ImageWndProc(
HWND hwnd,
UINT message,
DWORD wParam,
LONG lParam)
{
switch (message)
{
case WM_PAINT:
Draw_DIB( hwnd );
AfxMessageBox("WM_Paint");
return 0L;
break;
case WM_SIZE:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
case WM_CREATE:
Create_DIB( hwnd );
AfxMessageBox("WM_Create");
return 0L;
break;
case WM_CLOSE:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
case WM_DESTROY:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
default:
return DefMDIChildProc(hwnd, message, wParam, lParam);
break;
}
}
/**************************************************
*
* Create a Device Independent Bitmap...
*
*
**************************************************/
void Create_DIB( HWND hWnd )
{
HDC hDC;
unsigned char i;
long k,j, NumBytes;
LPBITMAPINFO info;
unsigned char *dat;
DWORD error;
hDC = GetDC (hWnd) ;
// Intialize BITMAPINFOHEADER data.
//.................................
bi.biSize = sizeof (BITMAPINFOHEADER) ;
bi.biWidth = W;
bi.biHeight = -H; // top-down DIB
bi.biPlanes = 1;
bi.biBitCount = COLORBITS;
bi.biCompression = BI_RGB;
bi.biSizeImage = ( ALIGNLONG( (W * COLORBITS)/8 ) * H);
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 256;
bi.biClrImportant = 256;
// Allocate memory for BITMAPINFO structure.
//..........................................
NumBytes = sizeof(BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD) +
( ALIGNLONG( ( W * COLORBITS ) / 8 ) * H );
lpbi = (BITMAPINFOHEADER*)GlobalAlloc( GPTR, NumBytes );
if( lpbi == NULL )
{
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf, 0, NULL );
// Display the string.
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
exit( EXIT_FAILURE ); // Get out now!
}
// Copy BITMAPINFOHEADER information.
//...................................
*lpbi = bi;
// Create The Palette
info = (LPBITMAPINFO) lpbi;
for ( i=0; i<255; i++ )
{
info->bmiColors[i].rgbRed = i;
info->bmiColors[i].rgbBlue = i;
info->bmiColors[i].rgbGreen = i;
info->bmiColors[i].rgbReserved = 0;
}
// Set pointer to bitmap’s bit data.
//..................................
lpstBitmap = (LPSTR)lpbi + (WORD)sizeof(BITMAPINFOHEADER) +
(256 * sizeof(RGBQUAD));
dat = (unsigned char*)lpstBitmap;
for ( k=0; k< H; k++ )
for ( j = 0; j < W; j++ )
*dat++ = (unsigned char)k;
// Create uninitialized DIB bitmap.
//.................................
hBitmap = CreateDIBitmap( hDC,
&bi,
0,
0,
(LPBITMAPINFO) lpbi,
DIB_RGB_COLORS);
CImage image;
image.Attach(hBitmap);
image.Save("c:\\test.bmp"); // save as BMP
image.Detach();
error = GetLastError();
ReleaseDC( hWnd, hDC);
}
/**************************************************
*
* Force repaint and update the display...
*
*
**************************************************/
void Draw_DIB( HWND hWnd )
{
PAINTSTRUCT ps;
HDC hMemDC;
int scan;
DWORD lasterror;
BeginPaint( hWnd, &ps );
hMemDC = CreateCompatibleDC( ps.hdc );
SelectPalette(hMemDC, palette, TRUE);
RealizePalette(hMemDC);
SelectPalette(ps.hdc, palette, TRUE);
RealizePalette(ps.hdc);
scan = SetDIBits(
hMemDC, // handle of device context
hBitmap, // handle of bitmap
0, // starting scan line
H, // number of scan lines
lpstBitmap, // array of bitmap bits
(LPBITMAPINFO) lpbi, // address of structure with bitmap data
DIB_RGB_COLORS ); // type of color indices to use
if ( !scan )
lasterror = GetLastError();
SelectObject( hMemDC, hBitmap );
BitBlt( ps.hdc, 0, 0, W, H,
hMemDC, 0, 0, SRCCOPY );
DeleteDC( hMemDC );
EndPaint( hWnd, &ps );
}
/**************************************************
*
* Set the bits to the bitmap to be displayed...
*
*
**************************************************/
void Update_Bitmap( HWND hwnd, unsigned short *data, int AutoStop )
{
// Alter The Bits via the pointer
int i,j;
unsigned char *dbits = (unsigned char*)lpstBitmap;
unsigned short *head;
static float mp;
unsigned int max, min;
max = 0;
min = 65535;
head = data;
/* Calculate Scaling Factor */
for (i=0; i<h; i++)
="" for="" (j="0;j<W;" j++)
="" {
="" if="" (="" min="">= *head ) min = *head;
if ( max <= *head ) max = *head;
head++;
}
mp = (float)256 / ( (float)max-(float)min );
/* Transfer Data to 8 bits */
for (i=0; i
|
|
|
|
|
Note that I stated "If you have an HBITMAP (a DDB or a DIBSection)..." you
could use that code. You are using a DIB.
dipen.rana wrote: here it attaches hBitmap but wat file it saves a test.bmp is it the hBitmap file dat it saves as test.bmp?
// Create uninitialized DIB bitmap.
//.................................
hBitmap = CreateDIBitmap( hDC,
&bi,
0,
0,
(LPBITMAPINFO) lpbi,
DIB_RGB_COLORS);
CImage image;
image.Attach(hBitmap);
image.Save("c:\\test.bmp"); // save as BMP
image.Detach();
Here you're creating a DDB from a DIB and then attaching it to a CImage object to save it.
I'm not sure the creation is succeeding though. Is hBitmap NULL?
This might be a good case to use a DIBsection instead of a DIB since you need both an HBITMAP
and direct access to the pixel bits. Something like this (changes I made to your code are
in red):
void Create_DIB( HWND hWnd )
{
HDC hDC;
unsigned char i;
long k,j, NumBytes;
LPBITMAPINFO info;
unsigned char *dat;
DWORD error;
hDC = GetDC (hWnd) ;
bi.biSize = sizeof (BITMAPINFOHEADER) ;
bi.biWidth = W;
bi.biHeight = -H;
bi.biPlanes = 1;
bi.biBitCount = COLORBITS;
bi.biCompression = BI_RGB;
bi.biSizeImage = ( ALIGNLONG( (W * COLORBITS)/8 ) * H);
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 256;
bi.biClrImportant = 256;
<code>
NumBytes = sizeof(BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD);</code>
lpbi = (BITMAPINFOHEADER*)GlobalAlloc( GPTR, NumBytes );
if( lpbi == NULL )
{
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0, NULL );
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
exit( EXIT_FAILURE );
}
*lpbi = bi;
info = (LPBITMAPINFO) lpbi;
for ( i=0; i<255; i++ )
{
info->bmiColors[i].rgbRed = i;
info->bmiColors[i].rgbBlue = i;
info->bmiColors[i].rgbGreen = i;
info->bmiColors[i].rgbReserved = 0;
}
<code>
hBitmap = ::CreateDIBSection(hDC, (LPBITMAPINFO) lpbi, DIB_RGB_COLORS, (VOID **)&lpstBitmap, NULL, 0);</code>
dat = (unsigned char*)lpstBitmap;
<code>
for ( k=0; k< H; k++ )
for ( j = 0; j < W; j++ )
*dat++ = (unsigned char)k;
<code>
CImage image;
image.Attach(hBitmap);
image.Save("c:\\test.bmp");
image.Detach();
error = GetLastError();
ReleaseDC( hWnd, hDC);
}
"Go that way, really fast. If something gets in your way, turn."
|
|
|
|
|
Hi Mark
I am now able to get it run as required also able to save multiple images thankz a lot for all ur help
Dipen
|
|
|
|
|
I've found a few articles mentioning 64-bit programming in C++, however, none of them focus explicitly on how to properly design a 64-bit program to take advantage of the performance benefits, aside from compiler and keyword optimizations.
Microsoft 64-bit Game Programming Article
Apple OSX 64-bit Programming Article
Microsoft 64-bit Basics Article
I remember back in the day, when 64-bit was a pretty new thing, there were benchmarks flung around (primarily math-intensive and computational), that demonstrated performance could scale up to twice the performance when compared to the 32-bit version. Does anyone know of any good articles that specifically discuss this?
|
|
|
|
|
If I use the 'OpenURL' function of a CInternetSession
lets say to open 'www.codeproject.com'.
Is the request logged on the server logs at Codeproject?
If so, what info does it show?
Thanks,
Roy
|
|
|
|
|
Even though I have windows.h included in my project, I can't seem to get this macro working. It is not in the same file as LOWORD() and HIWORD() either. Does anyone know where this might be?
Searching the web gives me the alternative of using (int)(short)LOWORD(lParam), which, from personal testing, seems to be the same as GET_X_LPARAM, however, I'd still be interested in knowing why I'm missing this macro, regardless.
|
|
|
|
|
windowsX.h
#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
on VS 2003 .NET
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I've never heard of this file before... everything in the MSDN docs tells you to use windows.h, but windowsX.h?
Interesting... thanks.
|
|
|
|
|
I'm just the messenger
Only two non-MFC files include windowsX.h - dshow.h and MqMail.h
I just checked the PSDK 2003 R2 - same there as well!
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Hi,
I want to use Visual Studio 2005 to stat developing in c++ again, I saw that I can create mfc apps, but was wondering how do I add a refrence so that I can use iostream.h?
I general how and where do I link to the stdard header files?
Thanks
Michael
Thanks,
Michael Wassermann
m12 Systems
|
|
|
|
|
#include <iostream>
That's all you have to do. Whatever libraries you need for standard libraries like that one will be automatically linked in any Visual Studio 2005 project.
|
|
|
|
|
You may find namespaces new (or new namespaces)
iostream stuff will be in the std namespace. If you don't want to explicitly resolve the
namespace everywhere (with the scope resolution operator) then you can add this to your
source (CPP! ) files:
using namespace std;
Mark
-- modified at 20:02 Wednesday 20th June, 2007
*edited in red*
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Mark Salsbery wrote: using namespace std;
This construct should be avoided at global scope in header files however. If you do put one in at global scope in a header file then anyone that includes your header loses some control over the namespace composition and it may make it hard from them to resolve name clashes – which is what namespaces were designed to solve.
Steve
|
|
|
|
|
Stephen Hewitt wrote: This construct should be avoided at global scope in header files however
Ack! That's what I meant - I could have sworn I put "(CPP)" in there to qualify it - that was
another post
Thanks for the reminder and heads-up Steve!
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I write an ActiveX control,it is tested ok with test container in either debug or release mode,but when i use it in my project, the release one can run,but the debug one can not,I don`t know why.If you can help me,please leave your email,I will send the code to you so you can test it,thanks!
|
|
|
|
|
Your project may be built on release mode
|| ART OF LIVING ||
|
|
|
|
|
Thank U,but my project is on debug mode,the release control can use,but the debug one can not
|
|
|
|
|