|
OK, if I understand, you have:
SomeClass.h which contains a declaration of SomeClass and extern SomeClass *globalPtr; This header is used both by your main program and static library.
SomeClass.cpp which contains the implementation of SomeClass and SomeClass *globalPtr = new SomeClass(); This file is only in the static library.
The public data members of *globalPtr do not appear valid in the context of code in the main app.
I would carefully compare the compiler options for the two modules for any discrepancy that might conceivably produce different object layouts.Please do not read this signature.
|
|
|
|
|
Avi you're a genius!! It worked. The problem was that the static library was compiled with "Use Multi-Byte Character Set" and the main program was compiled with "Use Unicode Character Set".
Turns out that the static library linkage is way more fragile than I thought.
Thank you so much Avi! I've been stuck on that problem for a while.
Ofermodified on Tuesday, March 9, 2010 4:46 PM
|
|
|
|
|
how do i create & place a text file named names.dat with names into a directory with an executable file? here are the names that i want to put into the file.:
"Collins, Bill", "Smith, Bart", "Allen, Jim",
"Griffin, Jim", "Stamey, Marty", "Rose, Geri",
"Taylor, Terri", "Johnson, Jill", "Allison, Jeff",
"Looney, Joe", "Wolfe, Bill", "James, Jean",
"Weaver, Jim", "Pore, Bob", "Rutherford, Greg",
"Javens, Renee", "Harrison, Rose", "Setzer, Cathy",
"Pike, Gordon", "Holland, Beth"
|
|
|
|
|
hmmm
- Create the file with you favorite text editor.
- Save the file in the appropriate directory.
If you mean copy the file when you "build" your application, then you could use a post-build event to copy the file (that you manually created) to the destination path (or whatever the name of the variable defined in the post-event editor dialog).
If it's something else, then you need to be more clear in what you want to do.
M.Watched code never compiles.
|
|
|
|
|
CreateFile , WriteFile and CloseHandle will create the text file for you. Where the file is created is determined by the full path that you specify for the lpFileName parameter to CreateFile .
If you mean you want to create this in the same folder of the EXE from which you're creating the text file, it is usually enough to just pass the name of the file without the path as the lpFileName parameter.
Or you can also get the path where the EXE resides using GetModuleFileName and then use PathRemoveFileSpec or _tsplitpath to strip the filename and get the path alone.
|
|
|
|
|
Hello! I have taken up reading "Exploring C++ by Apress" due to my school not even teaching C++ (nice huh? They teach Java, C#, VB, but not C++). I current do all of my programming in C# but I would like to learn C++ since it seems you can do more with it (especially with different platforms).
On a project it wants me to do is create a program that basically calculates the BMI of persons and displays a list at the end of inputting all the information. I'm not to the displaying yet, but I have a problem with just entering a name.
It seems if you enter a single word for the name it works fine, but if I were to enter my first and last name (seperated by a space) it failed with this error code:
Name: Jacob Dixon
Height (cm): /Applications/NetBeans/NetBeans 6.8.app/Contents/Resources/NetBeans/dlight2/bin/nativeexecution/dorun.sh: line 33: 9387 Floating point exceptionsh "${SHFILE}"
Press [Enter] to close the terminal ...
Problem is it goes to the Height (cm) but it never ask me to enter anything. All I did in that example up there was enter my name and press enter.
Here is my code:
void AskInformation(vector<int>& heights,
vector<int>& weights,
vector<int>& bmis,
vector<string>& names,
vector<char>& sexes) {
string name;
int height(0);
int weight(0);
int bmi(0);
char sex('?');
cout << "Name: ";
cin >> name;
cout << "Height (cm): ";
cin >> height;
cout << "Weight (kg): ";
cin >> weight;
cout << "Sex (m or f): ";
cin >> sex;
names.push_back(name);
heights.push_back(height);
weights.push_back(weight);
sexes.push_back(sex);
bmi = ComputeBMI(weight, height);
bmis.push_back(bmi);
cout << "Your BMI is: " << bmi << endl << endl;
}
int main() {
vector<int> heights;
vector<int> weights;
vector<int> bmis;
vector<string> names;
vector<char> sexes;
for (int i(0); i < 6; ++i) {
AskInformation(heights, weights, bmis, names, sexes);
}
return (EXIT_SUCCESS);
}
|
|
|
|
|
things to note :
- Use a structure (or class) to hold each person data :
class Person<br />
{ <br />
int height;<br />
int weight;<br />
int bmi;<br />
string name;<br />
strign sex;<br />
};<br />
- Use 1 vector of the above class/struct instead of having different vectors (easier to manage in the long run).
std::vector<Person> personVector;
- for reading the name (first and last name) , use :
getline(std::cin, name );
Other than that I was able to make it work.
MaxWatched code never compiles.
|
|
|
|
|
I figured a structure would of been better in this case... what I would have done with C# but the book hasn't covered structures yet. It wanted me to use vectors.
getline worked perfect. I'm still curious why just plain ol (cin >> name) caused it to act like that? I will use getline for now on. (Book hasn't mentioned it yet either).
Thanks for the help!
|
|
|
|
|
The >> operator stops on whitespace, so the second word of the name was left in the input buffer for the next call.
|
|
|
|
|
Hi,
Then documentation on MSDN says that FindText
will return the Zero based charcter position
of the text
If what I am searching for is currently not
viewable
would I have to know how many characters
there are in a line of my RichEdit control
to scroll and make it viewable
|
|
|
|
|
You can use CRichEditCtrl::SetSel after FindText so that scrolling will be done automatically.
|
|
|
|
|
I'm writing a console app that uses MessageBox. At runtime I'm trying to use TaskDialog instead, if the OS has the proper 6.1 version of comctl32.dll (Vista or Win7). I'm using the MSDN approach in http://msdn.microsoft.com/en-us/library/bb776779(VS.85).aspx. In order to make TaskDialog work at all (on the OS that supports it), I have to add these two lines, else I get "ordinal 344 could not be located" when I call TaskDialog on a supporting OS.
#pragma comment(lib, "comctl32.lib") // For TaskDialog
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
However, on a non-supporting OS (XP), adding the manifestdependency causes the original MessageBox code to fail - it beeps, but never brings up the diaglog at all. This occurs even if I completely remove any TaskDialog code. What is wrong?
|
|
|
|
|
Hi All
How to implement search functionality to text on the editbox#sanroop#
|
|
|
|
|
Your question makes little sense, please try and explain what you are trying to achieve. txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
The found index or (-1) will be returned :
int CYourWnd::TryToFindInBox(const CString& cszWhat)
CString cszBoxText;
GetDlgItemText(IDC_EDIT1, cszBoxText);
return cszBoxText.Find(cszWhat);
} Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
In addition to what Eugen Podsypalnikov mentioned, may be you can use EM_SETSEL message to highlight the selected text.
Other option would be to use a Rich Edit control and EM_FINDTEXTEX message.
|
|
|
|
|
I have Developed an application using VC++ 10 (VS 2010 RC) to create a document/view architecture with Ribbon Menus and a Outlook Bar pane with (CMFCOutlookBarTabCtrl) The First time I have created the bar it appears like what my codes were implemented it but after I have customize The bar in running Mode. I can't see changes I have made in code after rebuilding the application. It seems that It save the previous state of outlook bar. what should I do to so that I could see it in the way my code implements.
|
|
|
|
|
What changes are meant exactly, please ? Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
This is my code for CMFCOutlookBarTabCtrl:
BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, int nInitialWidth)
{
bar.SetMode2003(FALSE);
BOOL bNameValid;
CString strTemp;
bNameValid = strTemp.LoadString(IDS_SHORTCUTS);
ASSERT(bNameValid);
if (!bar.Create(strTemp, this, CRect(0, 0, nInitialWidth, 32000), uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
{
return FALSE;
}
CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)bar.GetUnderlyingWindow();
if (pOutlookBar == NULL)
{
ASSERT(FALSE);
return FALSE;
}
pOutlookBar->EnableInPlaceEdit(TRUE);
DWORD dwPaneStyle = AFX_DEFAULT_TOOLBAR_STYLE | CBRS_FLOAT_MULTI;
DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE;
static UINT uiPageID = 10;
_m_OutlookPane1.Create(&bar, dwPaneStyle, uiPageID++, dwStyle);
_m_OutlookPane1.SetOwner(this);
_m_OutlookPane1.EnableTextLabels();
_m_OutlookPane1.EnableDocking(CBRS_ALIGN_ANY);
pOutlookBar->AddControl(&_m_OutlookPane1, _T("Scene*"), 0, TRUE, dwStyle);
_m_OutlookPane2.Create(&bar, dwPaneStyle, uiPageID++, dwStyle);
_m_OutlookPane2.SetOwner(this);
_m_OutlookPane2.EnableTextLabels();
_m_OutlookPane2.EnableDocking(CBRS_ALIGN_ANY);
pOutlookBar->AddControl(&_m_OutlookPane2, _T("Walls*"), 1, TRUE, dwStyle);
_m_OutlookPane3.Create(&bar, dwPaneStyle, uiPageID++, dwStyle);
_m_OutlookPane3.SetOwner(this);
_m_OutlookPane3.EnableTextLabels();
_m_OutlookPane3.EnableDocking(CBRS_ALIGN_ANY);
pOutlookBar->AddControl(&_m_OutlookPane3, _T("Furnitures*"), 2, TRUE, dwStyle);
_m_OutlookPane4.Create(&bar, dwPaneStyle, uiPageID++, dwStyle);
_m_OutlookPane4.SetOwner(this);
_m_OutlookPane4.EnableTextLabels();
_m_OutlookPane4.EnableDocking(CBRS_ALIGN_ANY);
pOutlookBar->AddControl(&_m_OutlookPane4, _T("Decorations*"), 3, TRUE, dwStyle);
_m_OutlookPane5.Create(&bar, dwPaneStyle, uiPageID++, dwStyle);
_m_OutlookPane5.SetOwner(this);
_m_OutlookPane5.EnableTextLabels();
_m_OutlookPane5.EnableDocking(CBRS_ALIGN_ANY);
pOutlookBar->AddControl(&_m_OutlookPane5, _T("Lights*"), 4, TRUE, dwStyle);
_m_OutlookPane2.SetDefaultState();
bar.SetPaneStyle(bar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
pOutlookBar->SetImageList(IDB_TABPANESHC, 24);
pOutlookBar->RecalcLayout();
BOOL bAnimation = theApp.GetInt(_T("OutlookAnimation"), TRUE);
CMFCOutlookBarTabCtrl::EnableAnimation(bAnimation);
bar.SetButtonsFont(&afxGlobalData.fontBold);
return TRUE;
}
Because I have used pOutlookBar->EnableInPlaceEdit(TRUE); user can change the title of outlook bars
and after I have changed them while running once, any changes in source became effectiveness and when I rebuild The whole Project from beginning it appears the same as I have changed while running, and not from my source code.
|
|
|
|
|
OK
After the creating of CMainFrameWnd (with all inside) -
you could call SaveState(<DefaultProfile>) explicitly...
Then will be called LoadState(<LastProfile>),
that has been saved at the last exiting...
Your toolbar could provide a command for LoadState(<DefaultProfile>)
to load the init state after the creating
2. You can prevent a part of or the whole loading
3. The saved data could be found (and deleted) in registriesCheck your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
modified on Tuesday, March 9, 2010 11:17 AM
|
|
|
|
|
Thank you for spending time to solve my problem.
I could not found the CMainFrameWnd::SaveState method, But the CMainFrameWnd could implement the CMainFrameWnd::SaveBarState(..) method Which takes CWinApp::m_pszProfileName as it's Argument.
But even using this method didn't solve my problem even I have searched the whole registery and Profile for value of m_pszProfileName But I did not found any result, I know It 's saved somewhere because when I compiled It in an other profile the frame look the same as it's source implement it. This problem really Bother me.
|
|
|
|
|
Thanks I found the answer the whole setting is stored in
HKEY_CURRENT_USER\Software\Local AppWizard-Generated Applications\%ApplicationName%
and I should delete this registry.
|
|
|
|
|
I am having the same problem and have to delete the registry entry. I wonder which part writes it to the registry, Visual Studio or my Application? And how do I disable writing to the registry either in the Visual Studio or in Application?
|
|
|
|
|
Of course the Application is responsible for saving registry info, you could test it with running release build explicitly from Bin file and changing the application custom setting, and the registry key Name is stored in your main application class cpp file (class drived form CWinAppEx) in the CwinAppEx::::InitInstance() method in the
SetRegistryKey(_T("Local AppWizard-Generated Applications")); but I have no idea of where it save the custom styles. It should be some where after whole main frame is created.
|
|
|
|
|
Yes, you could use your CWnAppEx::SaveState(..) and CWinAppEx::LoadState(...) virtual void BeHappy() = 0;
|
|
|
|
|