Sign in to follow this  
NUCLEAR RABBIT

I need help setting the console title name

Recommended Posts

hello, I am trying to let the user title the dos window to whatever they want, but I cannot figure out how to do this. I know how to to do it ( system("TITLE WHATEVER YOU WANT"); ), but I cannot figure out how to title it without pre naming the window. thanks for ANY help! [Edited by - NUCLEAR RABBIT on July 10, 2007 8:12:46 AM]

Share this post


Link to post
Share on other sites
Assuming you actually mean a win32 console window, you can use the SetConsoleTitle() function.

Share this post


Link to post
Share on other sites
it worked fine, but then I tried making the title 2 words and i got an error so I made the title a char[] and then I got an windows error message (not a compile error) and now It happens everytime. please tell me if you see anything wrong with my code. I cant see it [sad]

my class code:

class Wordpad
{
char * m_WindowTitle;
std::string m_BodyText;

public:
void GetWindowTitle();
void GetBodyText();
void DisplayBodyText();
void SaveBodyText();
void LoadBodyText();
};





in one of my class definition member function

std::cout << "Please Enter your Project name: ";
std::cin >> m_WindowTitle;

SetConsoleTitle(m_WindowTitle);

system("CLS");



Share this post


Link to post
Share on other sites
The problem is that you don't allocate the memory for that string, just the pointer.

Try this instead:

char m_WindowTitle[128]; // 128 is the maximum length

You can also use cin.getline() with std::string's to get the entire line and not just the first word. There might be a better way to do it though.

Share this post


Link to post
Share on other sites
Quote:
Original post by DvDmanDT
The problem is that you don't allocate the memory for that string, just the pointer.

Try this instead:

char m_WindowTitle[128]; // 128 is the maximum length

You can also use cin.getline() with std::string's to get the entire line and not just the first word. There might be a better way to do it though.


that didnt work. when i run the program and enter the title name, after I press enter a window pops up and says it has encountered a problem and that its sorry for the inconvenience. I tried a bunch of things to get it back to when it worked, but I cant get it to work. hopefully someone here can see something I cant. I'll post all the code I made.

Wordpad.h

#include <iostream>
#include <string>

class Wordpad
{
char * m_WindowTitle;
std::string m_BodyText;

public:
void GetWindowTitle();
void GetBodyText();
void DisplayBodyText();
void SaveBodyText();
void LoadBodyText();
};





Wordpad.cpp

#include "Wordpad.h"
#include <windows.h>
#include <iostream>

void Wordpad::GetWindowTitle()
{
std::cout << "Please Enter your Project name: ";
std::cin.ignore();
std::cin >> m_WindowTitle;

SetConsoleTitle(m_WindowTitle);

system("CLS");
};

void Wordpad::GetBodyText()
{
std::cout << "Begin wiriting below:\n\n";
std::cin.ignore();
getline(std::cin, m_BodyText);
};

void Wordpad::DisplayBodyText()
{
system("CLS");

std::cout << m_BodyText;
}





main.cpp

#include <iostream>
#include "Wordpad.h"

int Menu()
{
int option;

std::cout << "WORDPAD OPTIONS:\n\n"
<< "1 = NEW PROJECT\n"
<< "2 = LOAD PROJECT\n"
<< "3 = EXIT\n\n"
<< "Option: ";
std::cin >> option;

system("CLS");

return option;
}

int main()
{
Wordpad wordpad;
bool quit = false;

do
{
switch( Menu() )
{
case 1: wordpad.GetWindowTitle();
wordpad.GetBodyText();
break;
case 2: break;
case 3: quit = true;
break;
default: std::cout << "invalid Option\n\n"; system("CLS");
}
}while( quit == false );

return 0;
}





Thanks for ANY help!

[smile]

Share this post


Link to post
Share on other sites
Did you actually try the solution DvDmanDT posted? You are still not allocating any memory for the m_WindowTitle variable, at least not in that code.

Failure to properly allocate memory will, in this case, result in an access violation error (0xc0000005 in Win32).

Share this post


Link to post
Share on other sites
#include <iostream>
#include <string>

class Wordpad
{
char * m_WindowTitle;
std::string m_BodyText;

public:
void GetWindowTitle();
void GetBodyText();
void DisplayBodyText();
void SaveBodyText();
void LoadBodyText();
};



should be

#include <iostream>
#include <string>

class Wordpad
{
char m_WindowTitle[128];
std::string m_BodyText;

public:
void GetWindowTitle();
void GetBodyText();
void DisplayBodyText();
void SaveBodyText();
void LoadBodyText();
};



Does it still not work? It should, even if using a std::string with cin.getline is probably a far better way.

Share this post


Link to post
Share on other sites
Quote:
Original post by DvDmanDT
*** Source Snippet Removed ***

should be

*** Source Snippet Removed ***

Does it still not work? It should, even if using a std::string with cin.getline is probably a far better way.


i tried making m_WindowTitle a string, but the SetConsoleTitle() function only takes char (thats what dev c++ said) so I had no choice [sad]

I wish I could because I cant make the console title 2 words. I tried with the char m_WindowTitle[128] and it went crazy. haha.

if u can help with this problem too thatd be awesome [smile]

thanks for the other help ya gave me!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this