|
If you aren't using the CWebBrowserCtrl to display the page to the user, you may want to see this[^] article.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
hi all,
I have done a small programe in c++. it is a "phonebook"
the user can add,delete,find....contacts
I need to make the user to enter a password before that.
|
|
|
|
|
suroor_bio wrote:
I need to make the user to enter a password before that.
Ok, so what's your question? Is this a console or GUI application?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
|
One way to do this is to do in the C style by using getch() function to enter the charater. getch() function do not display character on the screen.
char passwd[15];
int i=-1;
printf("Enter Password:");
do
{
passwd[++i] = getch();
} while(passwd[i] != 13);
passwd[i] = '\0';
printf("\npassword is %s\n",passwd);
13 is the ascii code for the return key. Hope it will work
Ritu Kwatra
|
|
|
|
|
Ritu Kwatra wrote:
13 is the ascii code for the return key. Hope it will work
WOW!, you back
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
|
|
|
|
|
|
|
|
|
I'm attempting to write a small tool that automatically calls a function on start-up...but my problem is I want the dialog window so be displayed first. If I call the function from the OnInitDialog() it executes it before the window is displayed.
What is the easiest way around this?
|
|
|
|
|
Here's one way:
#define UWM_SOMETHING (WM_APP + 1234)
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_MESSAGE(UWM_SOMETHING, OnSomething)
END_MESSAGE_MAP()
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
...
PostMessage(UWM_SOMETHING);
return TRUE;
}
LRESULT CMyDialog::OnSomething( WPARAM, LPARAM )
{
return 1;
}
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Thanks for a quick response
I tried your suggestion but unfortunately it has the same result... The OnSomething() function is still executed before the window is displayed.
|
|
|
|
|
Which means you'll need to use a separate thread to do the work in. See here.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Got it, thanx
|
|
|
|
|
Maybe it will work if you overwrite the dialog's
OnActivate() member function and call your
function from there the first time it is called.
(I'm not sure where on the timeline OnActivate() gets invoked)
Steve T
|
|
|
|
|
Hello
BOOL Pump()
{
MSG msg;
LONG lIdle = 0;
CWinApp* app = AfxGetApp();
while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (!app->PumpMessage())
{
::PostQuitMessage(0);
return FALSE;
}
}
while (app->OnIdle(lIdle++));
return TRUE;
}
BOOL CzedusDlg::OnInitDialog()
{
...
ShowWindow(SW_SHOW);
Pump();
MessageBox(_T("It's your calculations"), _T("message"), MB_OK);
}
Andrew
|
|
|
|
|
I had a similar problem and my solution was a bit crude but worked.
First, in OnInitDialog start a time.
Second, in the OnTimer function do a find for the window by title (assuming you know this, I wrote my own function using EnumWindows for to a partial match).
Wait until the handle returned is not NULL then your window has been displayed.
Elaine
The tigress is here
|
|
|
|
|
My C++ book says that trying to store more characters then the array has space for can cause problems. What the book I have doesn't tell me is how to prevent a user from entering too many characters. The code sample is;
char name[31];
cout << " Enter your name: ";
cin >> name;
What is the best method to take text input from the user?
If only I had more time!
|
|
|
|
|
Example
#include <iostream>
using namespace std;
int main( )
{
ws( cin );
char c[10];
cin.width( 9 );
cin >> c;
cout << c << endl;
}
MSDN is your best friend.
Don't try it, just do it!
|
|
|
|
|
One way would be to accept one character at a time until either Enter is pressed or the maximum number of characters has been reached. Search for examples using getch() and getche() .
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Use a C++ type which is dynamically expandable,
std::string s;
std::cin >> s;
Which will be fine unless you have whitespace in the name, and then you would need something like (this would have been a problem with the exising code as well):
std::string s;
std::getline(cin,s);
If you wanted to get really fancy you could also use an istream_iterator<string>, but for examples this simple I don't think it really buys you anything.
|
|
|
|
|
is there any limitations on the type used? i guess this is for a school project right? if your project does not have any limitations, use the string class.
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <string>
using std::string;
using std::getline;
int main()
{
string test;
cout << "name :";
getline(cin,test);
cout << "Hello " << test << endl;
return 1;
}
this effectively removes any limitiations on character size inputs, which imho, is bad. imagine you have an indian name (no offence intended) and an english name. normally indian names are longer, so if you used a larger array size, the english name wastes a lot of memory. string dynamically allocates the memory spaces, so nothing is wasted. and you don't have to explicitly deal with the memory size (i.e. no magic numbers).
lastly, you'll find that getline will require you to press return twice to get the line if u're using vc++. this is a bug in the implementation of string. follow http://www.tek-tips.com/faqs.cfm?fid=5193 to fix the bug.
hope this is clear enough.
"Learning does not make one learned: there are those who have knowledge and those who have understanding. The first requires memory, the second philosophy." - Abbe Faria, The Count on Monte Cristo
|
|
|
|
|
Yes this is a school Project. This C++ is really hard to master. I added one line and got 45 errors.
I have to take input from the user and pass to a method which takes a pointer, a char pointer. So I create and fill an array and pass the first element address to the method. I think I have most coded right except that I get a continuous scrolling at line 21.
17 char sValue[30];
18 int iData;
19 cout << " Enter a name for the Salesman \n"
20 << " limited to 29 chars:";
21 cin.get(sValue,30);
22 this->SetAgentName(sValue);
I took this directly from my book however the sample code in the book only has two lines (# 17 and # 21). There seems to be so many things that all interact to make C++ extra difficult.
Can any one tell my why my screen constantly scrolls at the line with .get?
If only I had more time!
|
|
|
|
|
ok, two things. firstly cin.get() only gets single characters, one at a time. cin.getline() will get a whole line, up to the end of the '\n' character.
i'm not sure what u're doing here.. is this a class or the main method? if u're in the main method, this-> does not have any value associated to it at all.
as i said, using a string solves a lot of problems. since u're using c++, u should use the available STLs (standard template libraries) whenever possible. using a char array in c++ is indeed foolhardy.
using the code i wrote previously, u can pass the string as a reference.
// class declaration
class myclass
{
public:
void mymethod(string&);
};
// method declaration
void myclass::mymethod(string &instr)
{
cout<
|
|
|
|