|
A programm whick access oracle database ,read the data from database and store it in datastruct (user define),then draw pictures by data,It's a long time operation ,so offer a progress bar ,but i can't do it and dont' know how to do it ,can you help me ,give me some idea about it .Thanks!
|
|
|
|
|
The code I posted earlier in the "Cancel button in window not working" thread has an example of a working porgress bar among other things. Only problem is the cancel button won't work :P.
|
|
|
|
|
could u please help me out?
i'm trying to the the value of a html form on OnButtonOK().
but i fail, i'm already about 48 hours on it and i can't find anyone who is beable to help.
i tried news groups, the codeproject.com forum, tek-tips.com.
i tried using msdn, goodle.
bt i can't find good example abut retrieving value from html form
thank for your time.
kind regards,
Marco
// firstw32mfcDlg.cpp : implementation file
//
#include "stdafx.h"
#include "firstw32mfc.h"
#include "firstw32mfcDlg.h"
#include ".\firstw32mfcdlg.h"
#include <atlbase.h>
//#include <afxpriv.h>
#include <oleauto.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// Cfirstw32mfcDlg dialog
BEGIN_DHTML_EVENT_MAP(Cfirstw32mfcDlg)
DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)
DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
//DHTML_EVENT_ONCHANGE(_T("email"), OnChangeEdit1 )
//DHTML_EVENT_ONCHANGE(_T("password"), OnEnChangeEdit2 )
END_DHTML_EVENT_MAP()
Cfirstw32mfcDlg::Cfirstw32mfcDlg(CWnd* pParent /*=NULL*/)
: CDHtmlDialog(Cfirstw32mfcDlg::IDD, Cfirstw32mfcDlg::IDH, pParent)
//, m_EDIT1(0)
//, m_EDIT2(0)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void Cfirstw32mfcDlg::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_DHtml_ElementInnerText(pDX, _T("email"), EDIT1);
DDX_DHtml_ElementInnerText(pDX, _T("password"), EDIT2);
DDX_DHtml_ElementInnerText(pDX, _T("Temp_Text1"), m_EDIT1);
DDX_DHtml_ElementInnerText(pDX, _T("Temp_Text2"), m_EDIT2);
}
BEGIN_MESSAGE_MAP(Cfirstw32mfcDlg, CDHtmlDialog)
ON_WM_SYSCOMMAND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// Cfirstw32mfcDlg message handlers
BOOL Cfirstw32mfcDlg::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
EDIT1 = AfxGetApp()->GetProfileString("Settings", "email", "your login");
EDIT2 = AfxGetApp()->GetProfileString("Settings", "password", "details here..");
UpdateData(FALSE);
return FALSE; // return TRUE unless you set the focus to a control
}
void Cfirstw32mfcDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDHtmlDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void Cfirstw32mfcDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDHtmlDialog::OnPaint();
}
}
// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR Cfirstw32mfcDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
HRESULT Cfirstw32mfcDlg::OnButtonOK(IHTMLElement* /*pElement*/)
{
UpdateData(TRUE);
/*
BSTR bstr = SysAllocString(GetElementText( _T("email")));
CStringW str = bstr;
SysFreeString(bstr);
*/
if(CDHtmlDialog::GetElementText("email"))
{
m_EDIT1=("TRUE");
UpdateData(FALSE);
}
else
{
m_EDIT1=("FALSE");
m_EDIT2=CDHtmlDialog::GetElementText("email");
UpdateData(FALSE);
}
//GetElementText(_T("email"));
//CString strEmail = CDHtmlDialog::GetElementText( _T("email"));
//AfxGetApp()->WriteProfileString("Settings", "email", strEmail.SysAllocString());
//BSTR bstrTable = EDIT1.AllocSysString();
BSTR bstrTable = GetElementText( _T("email"));
CString strEmail = bstrTable;
AfxGetApp()->WriteProfileString("Settings", "email", strEmail);
/*
CComBSTR bstr;
BSTR bstr = SysAllocString(get_innerText( _T("email")));
CString str = CString(bstr);
SysFreeString(bstr);
m_EDIT1=bstr;
UpdateData(FALSE);
*/
//CString strEmail = "email";
//AfxGetApp()->WriteProfileString("Settings", "email", SysAllocString(GetElementText( _T("email"));
//UpdateData(TRUE);
//SysAllocString(EDIT1);
//CString strEmail = "EDIT1";
//AfxGetApp()->WriteProfileString("Settings", "email", strEmail.SysAllocString());
//AfxGetApp()->WriteProfileString("Settings", "email", EDIT1);
//AfxGetApp()->WriteProfileString("Settings", "email", );
AfxGetApp()->WriteProfileString("Settings", "password", EDIT2);
//UpdateData(FALSE);
return NULL;
}
HRESULT Cfirstw32mfcDlg::OnButtonCancel(IHTMLElement* /*pElement*/)
{
UpdateData();
if(m_EDIT1)
{
AfxGetApp()->WriteProfileString("Settings", "email", m_EDIT1);
}
else
{
m_EDIT1=_T("i failed");
UpdateData();
}
if(m_EDIT2)
{
AfxGetApp()->WriteProfileString("Settings", "password", m_EDIT2);
}
else
{
m_EDIT2=_T("i failed too");
UpdateData(FALSE);
}
//UpdateData(FALSE);
return NULL;
}
//HRESULT Cfirstw32mfcDlg::OnChangeEdit1(IHTMLElement* /*pElement*/)
//{
// //UpdateData(FALSE);
// //AfxGetApp()->WriteProfileString("Settings", "email", EDIT1);
// //AfxGetApp()->WriteProfileString("Settings", "email", "gsdsgj");
//return FALSE;
//}
//HRESULT Cfirstw32mfcDlg::OnEnChangeEdit2(IHTMLElement* /*pElement*/)
//{
// //UpdateData(FALSE);
// ///AfxGetApp()->WriteProfileString("Settings", "password", EDIT2);
//return FALSE;
//}
|
|
|
|
|
I drawed something in CDC* pDC, now how to get the pointer to array of memory where i drawed.
|
|
|
|
|
Use a DIBSection.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
i would like to write a letter in the center of the screen and rotate it, but when i rotate my later - it moves from the centre, who knows how to make it ?
I tried this:
CString str = "W";
CFont Font;
Font.CreateFont(96,
0,
angle*10,
angle*10,
FW_NORMAL,
FALSE,
FALSE,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
ANTIALIASED_QUALITY,
DEFAULT_PITCH | FF_SWISS,
"Arial");
dc.SelectObject(&Font);
dc.Rectangle(0,0,100,100);
CSize size = dc.GetTextExtent(str);
int posx = 100-size.cx;
int posy = 100-size.cy;
dc.ExtTextOut(posx/2-sin(3.14*angle/180)*size.cx/2,posy/2+sin(3.14*angle/180)*size.cy/2,ETO_OPAQUE,NULL,str,NULL);
but it works properly only from 0 to 45...
|
|
|
|
|
The problem is that the letter is rotating around its bottom-left corner. Use SetTextAlign() to centre the text so it will rotate around the centre of the letter.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
I've tried SetTextAlign() method in many ways, but still without success - the maximum that i got is rotatig around it's bottom center, but i need the center of a letter... Please, help...
|
|
|
|
|
I am searching libaries for plotting 2d and 3d
which can be used with vc++.
Please recommend regardless of price.
I would appreciate when you email me at
woh@ams.sunysb.edu
Thank you all.
|
|
|
|
|
|
Is there a quick and easy way to get the username of the current Windows user?
|
|
|
|
|
Figured it out myself:
GetEnvironmentVariable("USERNAME", username, username_size)
|
|
|
|
|
GetUserName() is the preferred solution, because in some security settings, applications may be prevented from reading environment variables.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
and here is second
[b]
GetUserName
The GetUserName function retrieves the user name of the current thread. This is the name of the user currently logged onto the system.
Windows 2000/XP: Use the GetUserNameEx function to retrieve the user name in a specified format. Additional information is provided by the IADsADSystemInfo interface.
BOOL GetUserName(
LPTSTR lpBuffer, // name buffer
LPDWORD nSize // size of name buffer
);
Parameters
lpBuffer
[out] Pointer to the buffer to receive the null-terminated string containing the user's logon name. If this buffer is not large enough to contain the entire user name, the function fails. A buffer size of (UNLEN + 1) characters will hold the maximum length user name including the terminating null character. UNLEN is defined in Lmcons.h.
nSize
[in/out] On input, specifies the maximum size, in TCHARs, of the buffer specified by the lpBuffer parameter. On output, receives the number of characters copied to the buffer, including the terminating null character.
If the buffer is too small, the function fails GetLastError returns ERROR_MORE_DATA. The nSize parameter receives the required buffer size.
[/b]
-----------------------------
"I Think It Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
Does anybody know how to interact with a digital camera via an USB port in C++? I am using Windows XP and Visual Studio .NET 2003. I have looked for some source code examples but can't find any.
I am the handsome one in the crowd.
|
|
|
|
|
std::fstream is the answer
Seriously though, most cameras shows up as removable media in Windows 2k/XP. So all you need to do is to read the images as files (JPG, GIF, whatever the camera uses). Any other communication over the USB connection is probably proprietary, and is probably not disclosed without an NDA.
--
Weiter, weiter, ins verderben.
Wir müssen leben bis wir sterben.
|
|
|
|
|
There's a standard protocol for communicating with non-mass storage digital cameras: PIMA/ISO 15740 Picture Transfer Protocol (PTP). Many cameras can be switched between mass storage and PTP modes.
There's an Open Source (GPL) library for communicating with PTP cameras: libptp See also the USB Still Image Capture Device Definition
|
|
|
|
|
I wrote a set of functions for displaying a progress window while CopyFileEx() runs. The only problem is that the cancel button on the window won't work. Well, actually it will work if I display a message box right before I create the window, which I haven't been able to explain yet... Anyway, here is the full code for it, less the headers:
#include "global_definitions.h"
#include <windows.h>
#include <commctrl.h>
#include "debug.h"
#include "memory.h"
#include "stringio.h"
#include "window_classes.h"
void InitProgressWindowClass(void);
int CopyFileProgressEx(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, DWORD dwCopyFlags, HWND hWndParent, char * title, char * message, BOOL popup, DWORD parentUpdate);
DWORD WINAPI ProgressWindowThread(LPVOID lParam);
INT_PTR CALLBACK ProgressWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT ProgressWindow_OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam);
DWORD CALLBACK CopyProgressRoutine(LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData);
void InitProgressWindowClass(void)
{
WNDCLASSEX wc = {0};
wc.cbSize = sizeof(wc);
wc.lpszClassName = "Progress Window";
wc.hInstance = GetModuleHandle(NULL);
wc.lpfnWndProc = ProgressWindowProc;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetSysColorBrush(COLOR_BTNFACE);
wc.cbWndExtra = sizeof(PROGRESSINFO *);
RegisterClassEx(&wc);
}
int CopyFileProgressEx(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, DWORD dwCopyFlags, HWND hWndParent, char * title, char * message, BOOL popup, DWORD parentUpdate)
{
PROGRESSINFO * pip = ClearMemAlloc(sizeof(PROGRESSINFO));
BOOL error;
BOOL cancel = 0;
DWORD threadId;
if(!title)
title = "";
if(!message)
message = "";
pip->title = title;
pip->message = message;
pip->popup = popup;
pip->cancel = &cancel;
pip->hWndParent = hWndParent;
pip->parentUpdate = parentUpdate;
SetFocus(hWndParent);
CreateThread(NULL, 0, ProgressWindowThread, pip, 0, &threadId);
while(!pip->hWndProgress)
Sleep(0);
error = CopyFileEx(lpExistingFileName, lpNewFileName, CopyProgressRoutine, pip, NULL, dwCopyFlags);
if(!error)
return 1;
else if(cancel)
return 2;
return 0;
}
DWORD WINAPI ProgressWindowThread(LPVOID lParam)
{
MSG msg;
DWORD exitCode = 0;
PROGRESSINFO * pip = (PROGRESSINFO *) lParam;
DWORD dwStyle = (pip->hWndParent != NULL ? WS_CHILD : 0) | WS_VISIBLE;
RECT progressCords;
if(pip->popup)
{
progressCords.left = GetSystemMetrics(SM_CXSCREEN) / 2 - PROGRESSWINDOW_WIDTH / 2;
progressCords.top = GetSystemMetrics(SM_CYSCREEN) / 2 - PROGRESSWINDOW_HEIGHT / 2;
dwStyle |= WS_POPUPWINDOW;
}
else
{
dwStyle |= WS_DLGFRAME;
GetClientRect(pip->hWndParent, &progressCords);
progressCords.left = (progressCords.right - progressCords.left) / 2 - PROGRESSWINDOW_WIDTH / 2;
progressCords.top = (progressCords.bottom - progressCords.top) / 2 - PROGRESSWINDOW_HEIGHT / 2;
}
pip->hWndProgress = CreateWindowEx(
0,
"Progress Window",
pip->title,
dwStyle,
progressCords.left,
progressCords.top,
PROGRESSWINDOW_WIDTH,
PROGRESSWINDOW_HEIGHT,
pip->hWndParent,
NULL,
GetModuleHandle(NULL),
pip);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GetExitCodeThread(GetCurrentThread(), &exitCode);
ExitThread(exitCode);
ErrorMessage("Abnormal thread termination", NULL, NULL, MB_ICONEXCLAMATION, 1);
return FALSE;
}
INT_PTR CALLBACK ProgressWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
return ProgressWindow_OnCreate(hWnd, wParam, lParam);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case BN_CLICKED:
*(((PROGRESSINFO *)(GetWindowLongPtr(hWnd, GWL_USERDATA)))->cancel) = 1;
break;
}
break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
free((void *) GetWindowLongPtr(hWnd, GWL_USERDATA));
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
LRESULT ProgressWindow_OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
PROGRESSINFO * pip = *(PROGRESSINFO **) lParam;
RECT rect;
SetWindowLongPtr(hWnd, GWL_USERDATA, (LONG) pip);
GetClientRect(hWnd, &rect);
pip->progressBar = CreateWindowEx(
WS_EX_CLIENTEDGE,
PROGRESS_CLASS,
NULL,
WS_CHILD | WS_VISIBLE | PBS_SMOOTH,
rect.left + 2,
PROGRESSWINDOW_HEIGHT / 2 - GetSystemMetrics(SM_CYVSCROLL),
rect.right - 5,
GetSystemMetrics(SM_CYVSCROLL),
hWnd,
0,
GetModuleHandle(NULL),
NULL);
pip->hWndStatic = CreateWindowEx(
0,
"Static",
NULL,
WS_CHILD | WS_VISIBLE | SS_CENTER,
rect.left + 2,
rect.top + 10,
rect.right - 5,
rect.top + 20,
hWnd,
0,
GetModuleHandle(NULL),
NULL);
SetWindowText(pip->hWndStatic, pip->message);
pip->hWndCancel = CreateWindowEx(
0,
"Button",
NULL,
WS_CHILD | WS_VISIBLE | BS_TEXT | BS_PUSHBUTTON,
((rect.right - rect.left) / 2) + rect.left - 30,
rect.bottom - 30,
60,
24,
hWnd,
0,
GetModuleHandle(NULL),
NULL);
SetWindowText(pip->hWndCancel, "Cancel");
pip->hWndProgress = hWnd;
SetFocus(pip->hWndCancel);
return FALSE;
}
DWORD CALLBACK CopyProgressRoutine(LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData)
{
int i;
unsigned __int64 biasBit = 0x8000000000000000;
int progressRange;
int progressAchieved;
PROGRESSINFO * pip = lpData;
if(!pip->progressBias)
{
if(!(TotalFileSize.QuadPart & 0xFFFFFFFF80000000))
pip->progressBias = 0;
else
{
for(i = 33; i; i--)
{
if(biasBit & TotalFileSize.QuadPart)
break;
biasBit = biasBit>>1;
}
pip->progressBias = 32 - i;
}
}
progressRange = (int) (TotalFileSize.QuadPart>>(pip->progressBias + 1));
progressAchieved = (int) (TotalBytesTransferred.QuadPart>>(pip->progressBias + 1));
SendMessage(pip->progressBar, (UINT) PBM_SETRANGE32, (WPARAM) 0, (LPARAM) progressRange);
SendMessage(pip->progressBar, (UINT) PBM_SETPOS, (WPARAM) progressAchieved, (LPARAM) 0);
if(pip->parentUpdate && pip->lastParentUpdate + pip->parentUpdate >= GetTickCount())
UpdateWindow(pip->hWndParent);
pip->lastParentUpdate = GetTickCount();
if(TotalFileSize.QuadPart == TotalBytesTransferred.QuadPart)
{
PostMessage(pip->hWndProgress, WM_CLOSE, 0, 0);
return PROGRESS_CONTINUE;
}
if(*pip->cancel)
{
PostMessage(pip->hWndProgress, WM_CLOSE, 0, 0);
return PROGRESS_CANCEL;
}
else
return PROGRESS_CONTINUE;
}
|
|
|
|
|
Anyone know of any samples on how to write a streaming audio server??
|
|
|
|
|
Check out the DirectSound samples in the DirectX SDK.
The SDK does not provide an out-of-the-box streaming server solution. However the examples (in native C++ and in C#) give you a good introduction to the handling the audio data.
Can't comment about the network aspects.
|
|
|
|
|
Do u mean u want to stream uncompressed PCM format? if so u can refer Multimedia SDK .
Dharani babu S
redindian
|
|
|
|
|
say i have
char strdata[100];
strcpy(strdata,"0.0000136");
float f;
the call
sscanf(strdata,"%f",&f) ; // works ok (ie f gets the correct value)
// but I cannot get
// need precision upto 6 places
sscanf(strdata,"%.6f",&f) ;
// I need formatted input
// to work
Please help .
|
|
|
|
|
I have a graph which plots 14 million points. I want to include a scroll bar which would be sized based on the visible portion of the graph. initally all 14 million points are displayed. User can then use zoom function to zoom the graph where a max of 450 points can be seen. I am not able to include the scroll bar function. can anyone tell me what are the properties i need to set in the Scrollbar info structure?
thanks,
|
|
|
|
|
First, I really appreciate that you spend your time to read my question.
Hi! I try to build a class that has several functions. Some of them will return string.
But my complier say I have something wrong.
The complier show the message that undefine error.
Please help me to figure out. Thank you.
I paste my complete code below
// filename:studentinfo.h
class studentinfo
{
public:
void set_lastname(string);
void set_firstname(string);
void set_ssn(string);
void set_age(int);
void set_phone(string);
string show_lastname();
string show_firstname();
string show_ssn();
int show_age();
string show_phone();
private:
string lastname;
string firstname;
string ssn;
int age;
string phone;
};
// filename:studentinfo.cpp
#include <iostream>
#include <string>
#include "studentinfo.h"
//--------------------------------------------------------------------------------
// The following functions declare for my class.
//--------------------------------------------------------------------------------
string studentinfo::show_lastname()
{
return lastname;
}
string studentinfo::show_firstname()
{
return firstname;
}
string studentinfo::show_ssn()
{
return ssn;
}
int studentinfo::show_age()
{
return age;
}
string studentinfo::show_phone()
{
return phone;
}
void studentinfo::set_lastname(string text)
{
lastname=text;
}
void studentinfo::set_firstname(string text)
{
firstname=text;
}
void studentinfo::set_ssn(string text)
{
ssn=text;
}
void studentinfo::set_age(int number)
{
age=number;
}
void studentinfo::set_phone(string text)
{
phone=text;
}
|
|
|
|
|
Are you sure it's string not CString?
|
|
|
|
|