|
Thanks for your answer !
I have another question, thus. What is a 'console application' with MS VC++ &.0 ? I always thought it was a 16 bit dos application ! It is then not possible to developp a 'console application' to run it under dos ?
Thanks,
Jerome
|
|
|
|
|
A console application is NOT a DOS application. It is a Win32 application that runs in a console window (which again is NOT to be confused with a "DOS window", event though it seems to be one).
Win32 console applications can be written nearly the same way as DOS applications were written, with the added functionality of a 32-bit platform. No memory problems, no f***ing segments, memory models and similar crap. You can use Win32's advanced system functions, long file names, whatever.
Such an application does NOT run under DOS, since it is a true 32-bit Win32 application, but it will run fine in either Win32 version's console window.
|
|
|
|
|
Claudius is right. But all is not lost.
For your situation (if you simply want your DOS ap compiled to run in a windows box) I would create a console ap, then add your dos ap files to it (taking care to use the new main()).
Depending on what your dos ap does and needs to access, most if not all your code should compile. I did a similar thing a while ago with a dos comms ap and a few of my old maths libs, the only thing I changed was the way it actually captures the port (other direct hardware stuff and Windows will clip your ear and make you stand in the corner).
As for any display part of your ap, the Win console actually handles that quite well, fixed fonts etc, line graphics is ok. If you used any of the old graphics lib extensions I'm afraid your compiler or Windows (depending on which parts you used) will tell you where you can stick 'em.
The apps/libs I brought to Windows generally had very little to do with the display, but a bit of tidying up sorted some minor screen printing problems, except one.
That was with hardcopy printing itself, in my case alignment was based on fixed fonts (I'm a UNIX man ok!, only tthe very young use variable fonts in UNIX). Windows tried to make it prettier with TT fonts, hardly a major thing, unless your ap has to print reems of stuff in a legible way.
We do it for the joy of seeing the users struggle.
|
|
|
|
|
Thanks to all of you who helped me with this problem !
I learned a lot with your answers !
Thanks again,
Jerome
|
|
|
|
|
just tip: try search borland, watcom or similar sites (gnu.org?)
they can give free older or command-line-only compilers (but dos ones? send reply if you will find any)
(enum - i think it has to be wrong everywhere, minimaly strong "redefinition warning" (or it was old-compiler's bug?))
t!
|
|
|
|
|
If I have a main dialog box, and On the click of a button I want a child dialog box to appear...what do I do?
I created a dialog box (with type child) and in the BNClicked method of the button I wrote.
void CMainDlg::OnAddChild()
{
CChildDlg* ChildBox = new CChildDlg;
ChildBox->DoModal();
}
But the images of the Main and the Child dialog boxes got superimposed (and got mixed up) during runtime. So someone suggested the following, but it still does not work!
void CMainDlg::OnAddChild()
{
CChildDlg* ChildBox = new CChildDlg;
if(!::IsWindow(GetSafeHwnd())) ChildBox->Create(IDD_AJOUT, this);
ChildBox->ShowWindow(SW_SHOW);
}
Please tell me how do I get my child dialog box to show properly?
|
|
|
|
|
That's because you made it a type child, which means embedded in it's parent as opposed to a seperate dialog box. The suggestion you got was idiotic - it creates a modeless dialog and assumes it deletes itself ( because it's a pointer it won't die when it goes out of scope, nor do you have the address to interact with it or clean it up )
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
|
|
|
|
|
I have dynamically linked MFC DLL. This dll works fine under my VC++ project but there is a problem when I'm trying to use it with Delphi app. All functions work fine except one (and only one) that use MFC. Here is the code:
DLL_EXPORT BOOL Configure(HWND hWnd) {
int iRes;
COptionsDlg dlg;
HINSTANCE h = (HINSTANCE)::GetModuleHandle("briz2.dll");
ASSERT(h);
HINSTANCE hPrevious = AfxGetResourceHandle();
AfxSetResourceHandle(h);
dlg.DoModal();
AfxSetResourceHandle(hPrevious);
return (iRes == IDOK);
}
Linkage and calling are fine. It crashes at DoModal(). It's seems like dlg isn't created.
Does anyone know the solution? (I don't wanna use API calls like DialogBox...;P)
Nev
|
|
|
|
|
Add this as the first line in the function:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
Look up the technical note on AFX_MANAGE_STATE for more details.
--Mike--
http://home.inreach.com/mdunn/
#include "witty_sig.h"
your with and
|
|
|
|
|
Works! Thank you!
Nev
|
|
|
|
|
Hello,
I am planning to write a program that can record a sound from the mic.
I have no idee where to begin, what to learn, ... no idea! This mean any help/suggestion is welcome.
I thank you in advance.
Where there is a WISH, there is a WILL.
|
|
|
|
|
Maybe try Microsoft Speech SDK?
|
|
|
|
|
I am using this and have 4 columns set up number 0-3. I have tried using SetItem with an LVITEM but for some reason it isn't working. Can anyone help?
-Matt Newman
-Matt Newman
|
|
|
|
|
|
m_ctlLVDirs.InsertColumn(0, _T("Alias"), LVCFMT_LEFT, 138, 0);
m_ctlLVDirs.InsertColumn(1, _T("Directory"), LVCFMT_LEFT, 160, 1);
m_ctlLVDirs.InsertColumn(2, _T("Default File"), LVCFMT_LEFT, 80, 2);
m_ctlLVDirs.InsertColumn(3, _T("Listing"), LVCFMT_LEFT, 60, 3);
m_ctlLVDirs.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_INFOTIP | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP);
LVITEM lvi;
CString strItem;
int i = 0;
for(i=0; i<10; i++)
{
int l;
l = i + 1;
lvi.mask = LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
strItem.Format(_T("Alias %i"), l);
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
m_ctlLVDirs.InsertItem(&lvi);
lvi.iSubItem = 1;
strItem.Format(_T("Dir %i"), l);
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
m_ctlLVDirs.SetItem(&lvi);
strItem.Format(_T("Dir %i"), l);
m_ctlLVDirs.SetItemText(i, 1, _T("Dir"));
strItem.Format(_T("Default %i"), l);
m_ctlLVDirs.SetItemText(i, 2, _T("Default"));
strItem.Format(_T("Default %i"), l);
m_ctlLVDirs.SetItemText(i, 3, _T("FALSE"));
}
-Matt Newman
-Matt Newman
|
|
|
|
|
Matt Newman wrote:
l = i + 1;
This is your problem. The index is 0 based; the insertion method works correctly, but inserts it at position i rather than i+1. Then, the rest of the code attempts to modify item i+1 which doesn't exist.
To fix this, you can either adjust your code to use i instead of i+1, or you can use the return value of InsertItem() which is the index the item was actually inserted at.
|
|
|
|
|
Hi Matt,
I think Shog9 may have missed that you only use the variable 'l' for string formatting.
I think the SetItem here is working, the only problem is that you completely nuke the change after you've done it. You perform a SetItem on subitem 1 to set subitem 1's text to 'Dir 7', for example. Two statements on, you then set subitem 1's text to the constant string _T("Dir"). Is this what you were having a problem with? I removed the two lines:
strItem.Format(_T("Dir %i"), l);
m_ctlLVDirs.SetItemText(i, 1, _T("Dir"));
and got a list where column 1 had "Dir 1", "Dir 2" etc...
Is this what you were after?
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
Are columns zero based? I had set them up zero-based so the were 0,1,2,3 and the first column would show but none of the other three. I changed it to 1,2,3,4 in all it still won't show the 2,3,4 columns.
-Matt Newman
-Matt Newman
|
|
|
|
|
What do you mean by won't show? Are the columns there? Are the fields empty?
I cut and pasted your code into a sample project and I had text in all four columns (they are 0-based), although the text for columns 1,2,3 didn't have numbers in them, just the words "Dir", "FALSE" etc.
I just thought of something - you do have the list defined as "LVS_REPORT" style and not "LVS_LIST" don't you?
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
All the columns show but there isn't anything in them. And it is set as report.
-Matt Newman
-Matt Newman
|
|
|
|
|
Hmm, the only thing I can think of is that you use the return value from InsertItem in your subsequent calls:
int viInsertedAt = InsertItem(&tvi);
if (viInsertedAt != -1)
{
m_ctrlList.SetItemText(viInsertedAt, 1, _T("Dir"));
m_ctrlList.SetItemText(viInsertedAt, 2, _T("XXX"));
m_ctrlList.SetItemText(viInsertedAt, 3, _T("FALSE"));
}
viInsertedAt might not be equal to i if you have sorting or something else turned on? As I said, this code seemed to work fine for me.
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
Derek Waters wrote:
int viInsertedAt = InsertItem(&tvi);if (viInsertedAt != -1){ m_ctrlList.SetItemText(viInsertedAt, 1, _T("Dir")); m_ctrlList.SetItemText(viInsertedAt, 2, _T("XXX")); m_ctrlList.SetItemText(viInsertedAt, 3, _T("FALSE"));}
I tried this and put a message box if it made it there and what number it was on and it went 0 through nine but nothing. I am totally lost.
-Matt Newman
-Matt Newman
|
|
|
|
|
What did SetItemText return?
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
False
-Matt Newman
-Matt Newman
|
|
|
|
|
Right, I'm stumped. Do you want to send me your code?
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|