|
I thought that the very very very first thing that gets called is CMyApp::InitInstance(). I attempt to "run to cursor" to that function with my release build, and it doesn't make it. Do the constructors of the other classes get called before reaching the InitInstance function....? ( I also tried your suggestion, without success.
|
|
|
|
|
The constructor gets called first! Try setting a breakpoint there.
Brad
|
|
|
|
|
For strange it seems, you can debug a release version of a program in VC; read the article on http://www.pgh.net/~newcomer/debug_release.htm; very good!
|
|
|
|
|
MSDN states "Visual C++ includes the SDK Edition of Stirling Software’s InstallSHIELD". I have Visual Studio 6.0....I can't find it!
"If a man speaks in the forest, and there is no woman around to hear him, is he still wrong?"
|
|
|
|
|
You can downloaded the crappy but free version of installshield from installshield.com. Microsoft let's you download there installation package for visual c++ professional edition user's. I have the standard edition and when I went to download it they make you type in that long identification number and well....I never got to download the software.
Let me bestow my advice. INSTALLSHIELD SUCKS BADLY! A spectacular business-like (and free) installation package is inno-setup located at jrsoftware.org. It's easy to use and looks really nice. Installshield is difficult to use and takes forever to install.
Peace.
|
|
|
|
|
Allow me to second that motion.
InstallShield is incredibly hard to use; and virtually impossible to manage in source control. Wise Installer, on the other hand (www.wisesolutions.com) is very easy to use, just as powerful as IS, and uses a single file to manage the entire installation.
|
|
|
|
|
InstallShield is incredibly hard to use
If I can use it correctly, it can't be incredibly hard to use. Maybe a little hard to use, but definitely not incredibly.
and virtually impossible to manage in source control
To give them credit, the latest offering handles SFC very well. I haven't had any problems as of yet with using IS7 and VSS.
Wise Installer ... uses a single file to manage the entire installation
Why is that advantageous?
David Wulff
dwulff@battleaxesoftware.com
|
|
|
|
|
I've got to give the contrary opinion. I have used Installshield quite successfully for a number of years. Generally I find that when someone says it SUCKS they usually don't understand the tool. After demonstrating and correcting their misconceptions they are usually more excepting of Installshield.
|
|
|
|
|
I am not saying this to be mean.
Your statement "I find that when someone says it SUCKS they usually don't understand the tool" is correct (you sound like a university professor). However, it shouldn't take hours and hours and hours of training to understand an installation package. I spent several weeks studying installshield and I use to use it regularly. Compared to other packages on the market, installshield is complex and unbelievably expensive.
Take a simpler example. I bought my parents a vcr so they can record shows. It's esay for me to program the vcr. They however don't understand it. I could develop a vcr that is easier to use than anything on the market today. That easy-to-use vcr would be valuable because people can understand it without reading the manuals! The current vcr's suck badly because people who want them don't understand how to use them unless they have someone there showing them the features. It shouldn't be that complicated. Other installation packages are not that complicated nor expensive.
|
|
|
|
|
However, it shouldn't take hours and hours and hours of training to understand an installation package. I spent several weeks studying installshield and I use to use it regularly. Compared to other packages on the market, installshield is overly complex...
You're obviously not a linux fan then .
David Wulff
dwulff@battleaxesoftware.com
|
|
|
|
|
I'll agree that Installshield is much to expensive. Anyone from Instalshield out there, PAY ATTENTION!!
As for taking hours to learn, that depends on the individual of course. Some master subjects easier than others. In general however just as with <insert language="" here=""> it takes time to master it.
|
|
|
|
|
Yes he is!
|
|
|
|
|
I've only ever had experience installing VS 6 Enterprise edition, but after you install VS (or any of it's components), and then after you optionally install MSDN, you should be asked to install the additional tools (or which InstallShield is an option).
|
|
|
|
|
Hi there,
I am trying to use CListCtrl in a dialog box as a one column table.
So, I insert a column as following on the OnInitDialog:
m_List.InsertColumn(0, _T("Names"), LVCFMT_LEFT, -1, -1);
m_List.SetColumnWidth(0, LVM_SETCOLUMNWIDTH );
I have selected this to be of Report Type and to have scrolling.
My problem is that whenever I have a lot of names which would require
vertical scrolling, my horizontal scrolling also kicks in, evnethough
visually it's not needed.
i.e.
When my list has
1234
12
15
12
2
45
67
vertical scrolling comes in because we need to see the bottom part
but these numbers are too small to justify horizontal scrolling at
that time.
How do you force the List to be more smart? or for that programmer
its programmer?
|
|
|
|
|
Hello, the codegurus around the world.
Probably, you don't need insert all data to CListCtrl.
1) Create Array object like CArray to restore all column data.
2) Calculate the data number which don't show the scroll bar at all.
3) If the user want to move up or down the data, refill the data on the index
which going down or up by one index or more.
Refilling the data brings GUI flicker, and maybe you need some type of
owner draw CListCtrl?
Good luck.
Have a nice day!
-Masaaki Onishi-
|
|
|
|
|
m_List.SetColumnWidth(0, LVM_SETCOLUMNWIDTH );
You have your constants mixed up. LVM_SETCOLUMNWIDTH is a message. Pass LVSCW_AUTOSIZE instead.
--Mike--
http://home.inreach.com/mdunn/
You are the weakest link, GOODBYE!
|
|
|
|
|
From MSDN:
CListCtrl::SetColumnWidth
This method changes the width of a column in report view or list view.
BOOL SetColumnWidth(
int nCol,
int cx );
Parameters
nCol
Specifies the index of the column whose width is to be set. In list view, this parameter must be –1.
cx
Specifies the new width of the column. Can be either LVSCW_AUTOSIZE, LVSCW_AUTOSIZE_USEHEADER or LVM_SETCOLUMNWIDTH.
Return Value
Nonzero if it is successful; otherwise, it is zero.
|
|
|
|
|
I have tried to implement a drag and drop functionality based on the cmnctrl sample, except I tried to expand by using SetInsertMark in some case to signify that the item wqill be inserted rather than inserted as a child, but the as the dragging image from the CImageList is dragged around it leaves a trail of unerased insert marks & drop selections which have be erased while the drag image has been over them, how do I avoid this?
Joel
-My cup of tea has caught fire
|
|
|
|
|
Hi, i would like to know, in a human-readable output please, what does that mean:
classX * pclassX = (classX*) classY->pclassZ
|
|
|
|
|
you're declaring a variable named "pclassX" that is of type "classX". you're assigning to that variable, the value of classY's pclassZ member. but, for whatever reason, you're telling the compiler that the pclassZ member is to be treated as a pointer to classX.
-c
------------------------------
Smaller Animals Software, Inc.
http://www.smalleranimals.com
|
|
|
|
|
Does that code scare anybody else?
<shiver>
|
|
|
|
|
Declare a pointer to classX and initialize it to the address pointed by pClassZ (which is a member of classY).
Maybe it would be easier for you to understand, if we break it into multiple lines:
classX * pclassX; // declare a pointer
classZ * myPointerToZ = classY->pclassZ;
pclassX = (classX *) myPointerToZ;
I vote pro drink
|
|
|
|
|
classX * pclassX; // declare a pointer classZ * myPointerToZ = classY->pclassZ;
pclassX = (classX *) myPointerToZ;
Ok, but why not
classX * pclassX;
myPointerToZ = classY->pclassZ;
pclassX = myPointerToZ;
???
Why the "(classX *)" ?
|
|
|
|
|
I assume that pclassZ is of type classZ* Since pClassX is of type classX*, you cannot assign pclassZ to pclassX without casting. They are different types; E.G.
char* pChar;
float* pFloat;
*pFloat = 1000.00;
pChar = (char*) pFloat; // OK (although not very wise)
pChar = pFloat; //Error
I vote pro drink
|
|
|
|
|
(classX*) classY->pclassZ;
This is casting (like forcing) a type pclassZ to a type classX*.
A good example of this is with casting dialog controls from CWnd* types. CWnd::GetDlgItem(IDC) returns a CWnd*, and is cast as the type of control you are wanting to reference.
CListBox* pLB = (CListBox*)GetDlgItem(IDC_MY_LISTBOX_ID);
|
|
|
|