|
Seeking advice...
I want to use a CListCtrl to display assignment attributes I make for one or more files being parsed. I have an interface design for a parsing application that will accept one or more files, define attributes specific to each file, and then show in a CListCtrl the current assignments for a specific file.
My concern is how to maintain and refresh (quickly) the CListCtrl when I change from each file I have collected info already.
More on my design:
For each file, I identify what is to be parsed and where in a data structure it goes. This is basically a mapping and is displayed as a grid:
Field # Data Item Units
1 money USD
2 SSN text-ID
3 FirstName text
...
Each file can be different, and when I want to look at the attributes for each file I already configured, the mapping is displayed quickly in my CListCtrl.
Any advice?
Thanks,
Johnny
|
|
|
|
|
Hey,
I might be able to help you if you still haven't figured it out. I've worked a bit with the CListCtrl and could at least help you out in finding a solution.
You'll have to explain the problem a little more. From what I gather, the problem you have is that when you load something into the List Control it's taking quite a bit of time, in effect hanging the app for 3 or 4 seconds. I have that problem in one of my applications which I haven't bothered to fix, which is mainly why I want to help.
Anyway let me know if that is the problem you're talking about and if so we can try to figure out a better way of loading data into the list control. I have a few ideas, but not sure whether they will work or not.
Mike
|
|
|
|
|
Is there an advantage to use serilzation over writing your own Read File and Write File function?
Another question is \n and \r. If I read input with \r and output with TextOut I get blocky character if I write file with \n with ar I get blocky character and no carriage return I have to use \r. Do I need to write my own code to convert between \r and \n?
|
|
|
|
|
One benefit is polymorphism. For example:
int n;
double d;
char c;
ar << n << d << c; The ar object knows how to handle each type. If you were to write your own Write() method, you'd need one for each type. Here is another view.
As to your second question, TextOut() and the \r\n characters are generally not used in the same context. This is mainly because TextOut() supports the absolute positioning of the x and y reference points. In other words, if there existed a \n character in the string, you'd need to parse that out and adjust the y position before outputting more text.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
As the Java article points out... Simply stated - 'redirection of the IO stream'.
Read/Write to socket, or to file, or to com port, or to printer, etc.
Assuming you can change the 'Archiver' being used.
|
|
|
|
|
I need your expertise and opinion regarding database for my project that
I'm involve in. The project is written in C++ and store the data in the
Access database.
They are link using the ODBC driver. Then, I use the install shield to
make the whole application so that any user could install it in he/her
machine. So, when an administrator install the application, it has no
problem to access to the application or create new data and store them
in the database. But, when an local user tries to use the application,
he/she couldn't store or view the data to/from the database. How could I
grant the user the permission to view and modify the data without giving
the administrator privilege?
|
|
|
|
|
permissons
"Naked we come and bruised we go."
- James Douglas Morrison
Best Wishes,
ez_way
|
|
|
|
|
Hi guys,
I am weak in my C++. Being struggling since start.
Does anyone know where i can get a similar source code which i can take reference from?
My assignment is this;
http://www.le.ac.uk/eg/computing/eg2020/2004ex4.pdf
if u can't view, please go this site instead, and click on exercise 4.
http://www.le.ac.uk/eg/computing/eg2020/
Thanks!
|
|
|
|
|
Can we assume that you've at least started? If so, what part of the project is giving you trouble?
Do you have code for converting base-10 numbers into Roman numerals? Once you have that, it's a simple matter of going through each Roman numeral and adjusting the array mentioned in the assignment. For example, if the Roman numeral was "MMDCCLXXXIII", you could adjust the array like:
int arr[7];
for (int i = 0; ...)
{
if (roman[i] == 'M')
arr[0]++;
else if (roman[i] == 'D')
arr[1]++;
else if (roman[i] == 'C')
arr[2]++;
else if (roman[i] == 'L')
arr[3]++;
else if (roman[i] == 'X')
arr[4]++;
else if (roman[i] == 'V')
arr[5]++;
else if (roman[i] == 'I')
arr[6]++;
} Now do the same thing with the second Roman numeral.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
hmmm.....having a hard time ,huh......chillout....assuming u know the basics.....herez a skeletal prgm.....
//since they have asked for atleast six functions,herez how i have seperated em as.....
#include<iostream.h>
#include<conio.h>
void getdata(int a,int b);
void convert(int num,int roman[]);
void add_roman_numeralz(int roman1[],int roman2[],int romansum[]);
void carry_correction(int roman[]);
void display_romansum(int roman[]);
void main(void)
{
int num1,num2,sum;
int roman1[7]=NULL,roman2[7]=NULL,roman3[7]=NULL;
clrscr();
//get the data from the user.....
getdata(num1,num2);
//convert num1 into roman
convert(num1,roman1);
//convert num2 into roman
convert(num2,roman1);
//perform the roman addition and get the added value in roman3
add_roman_numeralz(roman1,roman2,roman3);
//perform the carry correction for the added roman3
carry_correction(roman3);
//display the roman3
display_romansum(roman3);
getch();
}//end of void main(void)
void getdata(int &a,int &b)
{
cout<<"Enter the first number : ";
cin>>a;
cout<<"Enter the second number : ";
cin>>b;
}//end of the function
void convert(int num,int roman[7])
{
while(num>=1000)
{
roman[6]+=1;
num-=1000;
}
while(num>=500)
{
roman[5]+=1;
num-=500;
}
while(num>=100)
{
roman[4]+=1;
num-=100;
}
while(num>=50)
{
roman[3]+=1;
num-=50;
}
while(num>=10)
{
roman[2]+=1;
num-=10;
}
while(num>=5)
{
roman[1]+=1;
num-=5;
}
while(num>=1)
{
roman[0]+=1;
num-=1;
}
}//end of the function
void add_roman_numeralz(int roman1[7],int roman2[7],int romansum[7])
{
for(i=0;i<7;i++)
romansum[i]=roman1[i]+roman2[i];
}//end of function
void carry_correction(int roman[7]);
{
while(roman[0]>=5)//safer to give while,u can give if as well
{
roman[1]+=1;
roman[0]-=5;
}
while(roman[1]>=10)//safer to give while,u can give if as well
{
roman[2]+=1;
roman[1]-=10;
}
while(roman[2]>=50)//safer to give while,u can give if as well
{
roman[3]+=1;
roman[2]-=50;
}
while(roman[3]>=100)//safer to give while,u can give if as well
{
roman[4]+=1;
roman[3]-=100;
}
while(roman[4]>=500)//safer to give while,u can give if as well
{
roman[5]+=1;
roman[4]-=500;
}
while(roman[5]>=1000)//safer to give while,u can give if as well
{
roman[6]+=1;
roman[5]-=1000;
}
}//end of function
void display_romansum(int roman[]);
{
for(i=0;i<7;i++)
cout<<roman[i]<<"\n";
}//end of function
hope that helpz.....(never tried it out.....)
cheerz
|
|
|
|
|
Thanks for your help guys!
rateep, i have send an email to your yahoo.com inbox. Can u reply me soon? Thanks!
|
|
|
|
|
Hi,
I was wondering if someone with more knowledge of the windows XP and drivers can help me debug a problem. I use a CMU 1394 Camera driver that comes with an API to connect and capture some images from a camera. The problem is that after a few times of starting and stopping the program the program no longer runs with an error that there are not enough 1394 bus resources. So something doesn't get released, I need to restart the computer. I call the API functions from threads, but I check and I destroy all the threads after a certain time using:
if ( (::WaitForSingleObject( pThread1->m_hThread , 12000 )) == WAIT_TIMEOUT )
::TerminateThread( pThread1->m_hThread , 0 ) ;
Now the problem is that looking at my code I destroy all my threads. Using a program such as Sysinternals Process Explorer or the Task Manager all the threads and the process from my program get destroyed. I don't see what's holding the resources so that I can end it.
Any suggestions on programs or things to try?
Thanks.
|
|
|
|
|
terminating the thread might not be enough.
have you looked at where the 1394 (firewire ) bus is beeing used ? there must be a way to release the bus after that.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
I can only guess at where the bus is being used by the library. I don't have the source code and if I didn't I wouldn't understand it for a while. Also I call all the functions that are supposed to stop your use of the driver...
Looks like I'm stuck.
|
|
|
|
|
Hi,
i've created my own tree control from a static window. The background is
transparent and all the items have a transparent background when not
selected. When and item is selected, I use a brush to fill the background:
::FillRect( hdc, &rBkgr, m_hBackBrush );
When an item is losing focus (being unselected), I do this:
::FillRect( hdc, &rItem, m_hNullBrush ); //Where m_hNullBrush is
GetStockObject( NULL_BRUSH );
The problem I have is that the item's background is not being refreshed. It
should be transparent so that the static window background should be
visible.
If I hide the window, the static control will refresh itself correctly. I've tried to use InvalidateRect() and UpdateWindow() but it does not work!
What can I do?
Thanks!
|
|
|
|
|
Never use UpdateWindow it can cause huge problems.
Use say:
HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
HBRUSH hbr;
pDC->SetTextColor(m_crFg);
pDC->SetBkColor(m_crBg);
hbr = *m_pBrush;
return hbr;
}
Change the m_cr?? values and let the frame handle it.
"Naked we come and bruised we go."
- James Douglas Morrison
Best Wishes,
ez_way
|
|
|
|
|
I am writing a program in c++ in which as the user types letters
in an ms dos console the letters are changed to whatever i want them to be.
For example if the person types "How are you" as they type i want to change the letters to "Whats up" instead...Do i have to change the cin code itself to not print to the screen or what?
|
|
|
|
|
I wonder if getchar() or _getche() would be better suited for this.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
use the command "getch()"(conio.h) to input characters from the keyboard(this function goes not display them on the screen),then when u take in a character using getch() command,write a code in such a way that it simultaneously displays a charcter that u want to be displayed using a character display command(use any display command)
hope that helpz.....
happy programmin.....
cheerz.....
|
|
|
|
|
by the way.....u have to change the cin code coz the the cin command is basically used to get it a string of data and it keeps on taking in the data till and enter key is pressed(not to mention,if there r spaces between the string that u have written then only till where the space is encountered is passed to the variable).....moreover the cin command "echoes" the characters on the screen.....
use the getch() command.....it takes in only one character.....so if u want to keep getting in data like cin command then u have to make a loop in such a way that it keeps on accepting characters till and enter character is encountered.....why i say to use getch() is becoz it doesnt display the characters on the screen and therefore u can use an another command along with this (in the loop) to keep displaying the characters(cout<
|
|
|
|
|
Hello,
I have made a Visual C++ 6 application that runs under Windows 2000 Professional.
The fact is that this app runs smooth, but after two days of continuous working it appears the typical message: "not enough virtual memory..." (or something like that (I can read it in spanish)).
I cannot stop the computer each day because the software is part of a machine that must work 24 hours per day.
Any idea?
Thank you in advance.
PS:
I've tried rational purify plus, but it shows me some leakages that are not real leaks. It seems that it cannot go through intelligent pointers and other kind of VC++ stuff.
|
|
|
|
|
try using _CrtMemDifference() and its helper functions to determine if memory is different before and after a function call. If so, write it out to a text file, with name of function (I think you can use __function__ or something like that). maybe that will not be the best course of action, but it might get you closer. The best way I can think of would be to have a debug version running, and whenever it reports a memdifference, have the program break, so that you can see where this memory allocation is occurring at.
If I write code in my sleep, does that make me brilliant, or just a lazy programmer?
My articles
www.stillwaterexpress.com
BlackDice - the programmer formerly known as bdiamond
|
|
|
|
|
This is a typical Handles consume.
Try to free handles for exmaple if you are using FindFirstFile and FindNextFile You need to call a FindClose after finish your process.
Also, search for all the functions that produce handles direct or indirect and make the release function if necesary.
Watch in the Task Manager to see the Handles consume and where they are not incremented You problem will be resolved.
|
|
|
|
|
Hello,
I’m looking for a slider that has the pointer invisible until the first time user clicks on it. Can anybody help me?
Thanks ahead.
teneff
|
|
|
|
|
If the pointer is initially invisible, how would the user know to click on it to make the pointer appear?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|