|
Mark, I have to disappoint you. I am in the middle(?) of a program, many thousands of code lines. I don't intend to go back in time and in code.
I had come to the idea, that it would be nice to have a feature controlled with the mouse button hold down. (No, I don't need any suggestions, how to realize that. I only need "my cursor" back.)
|
|
|
|
|
Ok no problem
There's lots of us here that can help with the cursor problem if needed!
Good luck!
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I'm guessing it's not possible to export a Class method - unless it's static?
So I would need to provide a class wrapper around my DLL exported functions?
Just curious
I'm finding the only constant in software development is change it self.
|
|
|
|
|
See if this[^] helps.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
how can i get the item value of selected records in a list control.
thanks.
|
|
|
|
|
Use this:
CListCtrl::GetFirstSelectedItemPosition()
CListCtrl::GetNextSelectedItem()
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Is it possible to place an expaned macro inside a string literal?
#define NUMBER 123
...
strcmp(SomeString, "NUMBER"); I want the strcmp line to expand to:
strcmp(SomeString, "123"); I need to use the macro as both a string and an integer, and I want to avoid atoi() etc.
I looked at the # and ## preprocessor operators but can not seem to get them to work.
Any ideas greatly appreciated.
Darker than a black steer's tookus on a moonless praire night
Within you lies the power for good, use it!!!
|
|
|
|
|
I got the following from the source of Boost's preprocessor library:
// CommandLine.cpp : Defines the entry point for the console application.
//
#include "StdAfx.h"
#include <iostream>
#define STRINGIZE(text) STRINGIZE_A((text))
#define STRINGIZE_A(arg) STRINGIZE_B ## (arg)
#define STRINGIZE_B(arg) STRINGIZE_I ## arg
#define STRINGIZE_I(text) #text
#define NUMBER Hello
void main()
{
using namespace std;
cout << STRINGIZE(NUMBER) << endl;
}
Steve
|
|
|
|
|
That works, Thanks!
Now I just have to figure out how it works. Looks like black magic to me so far.
It's not rocket surgery!
Within you lies the power for good, use it!!!
|
|
|
|
|
To me it looks like gibberish, a bunch of no-op macro steps.
The intermediate steps just wrap several () around the arg.
Just unroll them to see:
SS(T) == SS_A((T))
SS(T) == SS_B(((T)))
SS(T) == SS_I(((T)))
SS(T) == (((#T)))
You may as well as used SS_I(T) to start with.
I have to believe they use SS_A, SS_B, SS_I elsewhere as part of other macros as well.
[EDIT]
Whoops, just tried it, looks like it does do something.
[/EDIT]
-- modified at 20:02 Monday 30th April, 2007
...cmk
Save the whales - collect the whole set
|
|
|
|
|
An explanation to what Stephen posted.
What would be ideal would be:
#define NUMBER 123
#define ASSTR(X) #X
But, when used in:
strcmp(SomeString, ASSTR(NUMBER));
We get:
strcmp(SomeString, "NUMBER"); because the token is converted _before_ it is checked for further macro expansion.
So we have to remove the expansion by one level (the boost example adds an extra 2 levels for some reason):
#define NUMBER 123
#define STR(X) #X
#define ASSTR(X) STR(X)
Now we get:
strcmp(SomeString, "123");
This is because:
- first ASSTR(NUMBER) is replaced with STR(NUMBER)
- _then_ the macro is checked for further explansion and NUMBER is replaced with 123 _before_ STR() is resolved
- so we get STR(123) which gives "123".
...cmk
Save the whales - collect the whole set
|
|
|
|
|
cmk wrote: (the boost example adds an extra 2 levels for some reason)
Read the article[^] linked by Stephen below. Section A.2.3 explains about how commas and parentheses can screw things up. The Boost code given accounts for this.
Darker than a black steer's tookus on a moonless praire night
Within you lies the power for good, use it!!!
|
|
|
|
|
Ahhh, there had to be a reason - thanks.
...cmk
Save the whales - collect the whole set
|
|
|
|
|
See here[^]. Search for "A.4.4". This might provide some insight as might the rest of the document.
Steve
|
|
|
|
|
Thanks Stephen, great info there!
It's not rocket surgery!
Within you lies the power for good, use it!!!
|
|
|
|
|
Hello,
This is a very basic question for C++ on arrays. I am getting 2 errors when I compile & do not know what I'm doing wrong. Please assist. Lab is due 2 hrs from the time this email is posted, so very soon.
Error is - expected constructor, destructor or type conversion before = token
and - expected , or ; before = token
void pause(void);
void load_array_from_file(fileSpec filename, arrayType nums, int arraySize);
void display_array(arrayType nums, int arraySize);
int sum_array(arrayType nums, int arraySize);
int average_array;
(lots of other coding in here)
average_array = total / sum_array;
Thanks for the help!
Melissa
|
|
|
|
|
wertyou wrote: average_array = total / sum_array;
what type is total ?
Why are you calling sum_array without any parameters?
It's not rocket surgery!
Within you lies the power for good, use it!!!
|
|
|
|
|
Ok- here is the whole lab & the compiler errors are on line 127, which is the average_array. The total is defined in the sum part.
#include<iostream>
#include<string>
#include <iomanip> // For setw()
#include <fstream> // For file I/O
#include <cstdlib> // For the exit() function
using namespace std;
typedef int arrayType[]; // Declare data type alias
typedef char fileSpec[]; // Declare data type alias
// user defined function prototypes
void pause(void);
void load_array_from_file(fileSpec filename, arrayType nums, int arraySize);
void display_array(arrayType nums, int arraySize);
int sum_array(arrayType nums, int arraySize);
int average_array;
//******************************************************
// main
//******************************************************
int main(void)
{
//------------------------------------------------------
// Place the D6_Lab_01_Input.txt file on the root level
// of your C: (hard disk) drive
//------------------------------------------------------
char filename[] = "c:\\D6_Lab_01_Input.txt";
const int FARMERS = 7; // Input file has at least 7 members
int acres[FARMERS];
// call functions
load_array_from_file(filename, acres, FARMERS);
cout << "The individual farm acerages are: \n";
display_array(acres, FARMERS);
cout << "\n\nThe total acerage is: " << sum_array(acres, FARMERS);
cout << "\n\nThe average acerage is: " << average_array;
pause();
return 0;
}
//******************************************************
// pause
//******************************************************
void pause(void)
{
char pause;
cout << "\n\n\nHit Enter Key to Continue: ";
cin.get(pause);
cin.get(pause);
return;
}
//******************************************************
// load_array_from_file
//******************************************************
void load_array_from_file(fileSpec filename, arrayType nums, int arraySize)
{
ifstream inData; // Used to read the data from a file
int index; // Loop counter
inData.open(filename); //Open input file
if (!inData)
{
cout << "\n\nError opening data file: " << filename << "\n\n";
pause();
exit(EXIT_FAILURE);
}
else
{
for (index = 0; index < arraySize; index++) // Load the array
{
inData >> nums[index];
}
inData.close();
}
return;
}
//******************************************************
// display_array
//******************************************************
void display_array(arrayType nums, int arraySize)
{
int index; // Loop counter
cout << "\n*************************";
for (index = 0; index < arraySize; index++)
{
cout << "\nMemeber " << index+1 << " value is: " << setw(5) << nums[index];
}
cout << "\n*************************";
return;
}
//******************************************************
// sum_array
//******************************************************
int sum_array(arrayType nums, int arraySize)
{
int index; // Loop counter
int total = 0; // Accumulator
for (index = 0; index < arraySize; index++)
{
total += nums[index];
}
return total;
}
//******************************************************
// average_array
//******************************************************
average_array = total / sum_array;
//******************************************************
// End of Program
//******************************************************
Mel
|
|
|
|
|
Ok, you posted a pile of code but your last lne makes no sense. Is average_array supposed to be a function? If it is a variable how are you setting it? That last line of code is not inside any function so it will not work as is. Also, you declared sum_array to be a function that takes two parameters, but in the last line you are treating it as a variable, that will not work.
Straighten out what you want that last line to be.
Darker than a black steer's tookus on a moonless praire night
Within you lies the power for good, use it!!!
|
|
|
|
|
Thanks a lot - I put the last line in the for of the sum function above and changed the operand to match the variable.
It works now- great!
Thanks again,
Melissa
|
|
|
|
|
hi
i want to find the temp folder path of the user and not the windows.
so is there a way to get the info.
thnx
|
|
|
|
|
Look up SHGetSpecialFolderPath(). You're looking for a CSIDL that matches the folder you're trying to get - the closest I could find was CSIDL_INTERNET_CACHE which is for storing the user's temporary internet files.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
well this is ok but i think we don't have direct way to do that.
do we have?
well this leads to C:\WINDOWS\TEMP when i want something C:\Documents and Settings\User\Local Settings\Temp.
any idea??
|
|
|
|
|
I gave you the function name...
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
yap
thanks a lot for the help.
|
|
|
|