|
Thanks, mine required that I pass an HWND object but that was fairly easy to get. Thanks again.
Gosh I feel like such a freshman.
|
|
|
|
|
AfxGetMainWnd()->PostMessage(WM_CLOSE);
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
The EndDialog thing didn't do exactly what I wanted it to do. It got rid of the dialog but it was still running in the background. This caused a nifty blue screen of death the next time I executed it. This works much better, can't believe I didn't think of it before. Thanks.
|
|
|
|
|
Is there an API that exists where I can specify a main file and then another file, where the second file just gets appended to the first file. I am looking for something like this.
CString m_MainFile = "C:\main.txt";
CString m_AnotherFile = "C:\another.txt";
AppendMyFiles(m_MainFile, m_AnotherFile);
In this case the contents of another.txt are appended to main.txt .
Thanks in advance.
Nick Parker
|
|
|
|
|
I don't believe.
Only need to open the twice files, the first in append mode, Read the second and write the first. in only four or five lines, you can do that...
Regards
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
If you're defintely not in the mood of writing your own routine, as Carlos suggests, this might do:
CString m_MainFile = "C:\main.txt";
CString m_AnotherFile = "C:\another.txt";
CString m_command;
m_command.Format("copy %s +%s %s /Y",(LPCTSTR)m_MainFile,(LPCTSTR)m_AnotherFile,(LPCTSTR)m_MainFile);
system(m_command);
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
(Use CreateProcess instead of system for best results.)
|
|
|
|
|
Joaquín M López Muñoz wrote:
(Use CreateProcess instead of system for best results.)
It's like a little footnote.. I like it
Regards,
Brian Dela
|
|
|
|
|
Joaquín, I thinked that, but I dont like to depend of the os, to do something like the following...
command.Format("mk %s", mydir);
or
command.Format("del %s", myfile);
system(command);
Sounds like. Turn off the computer when you try to close the application....
I think that this is a good point for a pool....
When you have a os function that makes the work, you prefere to write several lines of code or make a system call?
Saludos....
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Yes, you're right my solution is seriously weak. I hope the guy was in the mood of writing the routine instead!
When you have a os function that makes the work, you prefere to write several lines of code or make a system call?
Write the code, unless it's unmanageable complex.
Saludos
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
If you want I'll write you a quick little AppendMyFiles("first_file", "second_file") function. Just email me if you want it.
Regards,
Brian Dela
|
|
|
|
|
Hi,
I'm looking for a database who's drivers come standard with Windows (Access??) (if possible) so I don't have to distribute them. I have an application that I'd like to start using with a database instead of files, but I don't want to distribute a bunch of drivers.
I've looked into MySQL and it seems that the redistrution package would be at least a couple of megs. MSDE is free, but it has the same size issues...
Do you have any recommendations? I'm familiar with using SQL, but not with redistributing databases and drivers and all that... it would be nice if I could just distribute a empty database with all the tables.
Also, I'm assuming I need to create an DSN entry in each users ODBC settings to run the new db, right? How would I go about creating these at runtime/install time?
Thanks,
Chris
|
|
|
|
|
dependes, you can use SQL Server, In that case you need to distribuit a database script, for install de server. In teh client workstation, you don't need to create a DSN entry. You can use a connection string without use a dsn. only specifying the database, servername, username, password, etc....
Regards....
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Windows XP comes with DAO 3.6 preinstalled, all others have nothing. You might try SQLite at http://www.hwaci.com/sw/sqlite/
I've used it before and it works quite well. No nice fancy wrappers tho (I have one internally,but it's certainly not ready for primetime).
Small footprint (200k roughly), most SQL syntax, single file, transactions.
Joel Lucsy (jjlucsy@ameritech.net)
|
|
|
|
|
Anyone ever have a problem where, for some reason, they can no longer add any subitems to a listview?
I have been banging my head on this for two days now. The code is as follows:
for (int i = 1; i <= num_vbpc_channels; i++)<br />
{<br />
lvi.mask = LVIF_IMAGE | LVIF_TEXT;<br />
strItem.Format(_T("Item %i"), i);<br />
<br />
lvi.iItem = i;<br />
lvi.iSubItem = 0;<br />
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);<br />
lvi.iImage = i%8;
m_cListCtrl.InsertItem(&lvi);<br />
<br />
strSubItem1.Format(_T("%s"), "Past");<br />
strSubItem2.Format(_T("%s"), "Past");<br />
<br />
lvi.iSubItem =1;<br />
lvi.pszText = (LPTSTR)(LPCTSTR)(strSubItem1);<br />
m_cListCtrl.SetItem(&lvi);<br />
<br />
lvi.iSubItem =2;<br />
lvi.pszText = (LPTSTR)(LPCTSTR)(strSubItem2);<br />
m_cListCtrl.SetItem(&lvi);<br />
<br />
}
Most of you will probably notice this code as it is (for the most part) a copy/paste from one of the MFC examples here. It works for a few runs then simply stops adding sub items. The first column of items always gets added...
UGH!
|
|
|
|
|
The code seems OK. Matt Weagle, in his article Using the List Control[^] shows some code that is almost identical to yours. You might try downloading the demo project he provides to try to determine the differences that are causing the strange behavior in your app.
PS: Your loop begins at 1 instead of 0. I don't think this is where the error stems from, but definitely you should begin at zero.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Items start with number 0, not 1, I'm surprised you're seeing any subitems at all actually.
Zero-fill the LVITEM struct before setting its members. Not doing so can make the code fail in release mode. (Even though the mask field is there to indicate which members to use, the control still validates some of the other fields.)
Also, your (LPTSTR)(LPCTSTR) cast of a CString is incorrect code (although it happens to work here because the string isn't modified).
--Mike--
Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Michael Dunn wrote:
Also, your (LPTSTR)(LPCTSTR) cast of a CString is incorrect code (although it happens to work here because the string isn't modified).
This is code directly out of an article from here. The article is cited in the message above.
Why is it incorrect? Actually, why is it used in the first place. You have to forgive me, I am an emerging C++/MFC programmer....
|
|
|
|
|
It is incorrect because CString provides a read-only array. If you want to modify the string, you have to use CString methods or overloaded operators like += .
Casting to LPCTSTR is fine, because CString provides that conversion itself, and still results in a read-only pointer. Casting that to a LPTSTR (which is not const ) gives you a read-write pointer to a read-only buffer. It compiles (because casts override type checking), and it even runs in your case, but that doesn't make the code correct.
The correct way to get a non-const pointer to the CString 's buffer is GetBuffer() .
--Mike--
Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Also, your (LPTSTR)(LPCTSTR) cast of a CString is incorrect code
It is perfect code, no cast is superfluous. pszText is a non-const LPTSTR (because some CListCtrl methods use it as an out parameter).
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Joaquín M López Muñoz wrote:
It is perfect code, no cast is superfluous.
Agreed. LVITEM::pszText is non-const, because structure is used in both LVM_SETITEM/LVM_GETITEM contexts.
Tomasz Sowinski -- http://www.shooltz.com
Free your mind and your ass will follow.
|
|
|
|
|
Joaquín M López Muñoz wrote:
It is perfect code
Hardly. See my post above.
Encouraging code like that will get people into trouble, because if they use that unsafe cast everywhere, it will eventually break, and they'll wonder "why isn't this working? I copied it from XYZ and it worked fine there".
I prefer to show people the correct code (CString::GetBuffer() ) so they learn the proper way to do things, instead of unsafe hacks that just happen to work in some situations.
--Mike--
Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Ok, so I'm quasi-newb, and my apps are starting to outgrow dialog-based interfaces. With multi top-level windows and window position sizing algorithms, I meagerly try to simulate a doc/view interface only because I finally know how to pass data between dialogs and have no clue how to use doc/view. Most of my stuff is graphing apps using National Instruments Active-X controls (starting to outgrow these too). I feel I end up doing things the very hard way, but I learn more each time through. Also, the data files I deal with are usually giant csv files. I have implemented a serializing vector routine and the fun zlib compression library, so my file IO is coming along... Anyway, can anyone point me to a simple doc/view sample where someone who is used to setting things up on OnInitDialog() and laying things out on a dialog (using ETSManager to resize them) can learn how the doc/view works. I guess my questions are so basic, they may seem trivial to most, but I don't even know how to get a control in a view and display it if it's not a dialog app Sad, I know. But at least I keep trying...
Thanks all!
Nitron
_________________________________________--
message sent on 100% recycled electrons.
|
|
|
|
|
Start with a wizard generated SDI app: when selecting the type of view, choose it to be derived from CFormView . Now you've got a CFormView which plays a very similar role to a CDialog , try migrating the code of some of your dialogs to it (ETSManager and all). The data is supposed to live in a CDocument -derived class: this is initially almost empty, but you can easily plug your data management routines there. Views are not meant to hold nor serialize any piece of data, but instead they shouuld be accesing it thru the document class (see CView::GetDocument ). By the time you've managed to get this working you'll be familiar enough with the framework to attempt MDI, which allows you to have multiple docs and views open at a time.
Apart from this, try searching any tutorial on SDI/MDI on the net.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
thanx.
Nitron
_________________________________________--
message sent on 100% recycled electrons.
|
|
|
|
|
This is driving me nuts! In one of my windows, I want to bitblt a particular bitmap when the mouse is over a given region. Everything works except the window repainting itself. The region in question is at one edge of the window. If I mouse over that region, then go off the window and click the window under it and then bring my window back to the front, the bitmap has been blitted. In a nutshell, I do the following:
- in response to WM_MOUSEMOVE I test to see if in the region; if so, I set a flag. I invalidate that rectangle and do an UpdateWindow to force a WM_PAINT
- in response to WM_PAINT, I call my function that does the blitting of the bmp.
Is there something special about drawing on a window that I'm missing?!
things could always be worse...
|
|
|
|