|
Hi all,
I am trying to instantiate a dialog box and keep getting the error message
'too few parameters, expected 2'
the offending piece of code is:
void CFisheriesView::OnAlmforeignkeys() {
COpenDB open; //ok
open.ALM(); //ok
CALMFKeyDlg dlg; //bombs out here
dlg.DoModal();
}
Anyone can give me some pointers? Thx,
Ralf.
ralf.riedel@usm.edu
|
|
|
|
|
Hi RalfPeter,
I guess your dialog class is derived from CDialog. Is that right?
If you create a mfc dialog application, use default settings and just go 'finish' to create the code, you may find the following piece of codes in your ...Dlg.cpp file:
<br />
CtestmfcDlg::CtestmfcDlg(CWnd* pParent )<br />
: CDialog(CtestmfcDlg::IDD, pParent)<br />
{<br />
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);<br />
}<br />
Here you can see that the CDialog class actually need two or one parameter to initialize. You need to do this in your code as well.
The IDD is a id to a dialog resource. you can create a new dialog resource by using 'add' option in the drop down menu of the resource explorer window.
Regards,
Chris
|
|
|
|
|
It looks like the constructor expects arguments. ie.
CALMFKeyDlg dlg(something_here, and_something_here);
You'll have to look at the definition of CALMFKeyDlg::CALMFKeyDlg to see what it expects.
Steve
|
|
|
|
|
Should you be able to create your own mfc42.dll from the MFC/SRC source files (plus whatever else is available to the VC++ developer)? I'd like to put some breakpoints in MFC code to debug a release-only problem.
dahill
|
|
|
|
|
No, you can't. Your release only problem is probably a problem with memory that you're not initialising properly, debug mode does it for you. The best way to check that stuff is to write logging code in your exe and read the log after running it.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
A release-only problem screams uninitialized variable, or a pointer problem. I use TRACE statements.
------- sig starts
"I've heard some drivers saying, 'We're going too fast here...'. If you're not here to race, go the hell home - don't come here and grumble about going too fast. Why don't you tie a kerosene rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
i wanna get the device information from the registry and take it as parameter to connect to the particular bluetooth device.
I manage to get the service information but not device infomation.
Below is the code:
/////////////////////////////////////////////////////////////////////
typedef struct _BT_DEVICE /* BT Device structure */
{
BD_ADDRESS bdAddress; //Address of the devcie
UINT8 pageScanRepetitionMode; //Page scan repetetion mode
UINT8 pageScanPeriodMode; //Page scan period mode
UINT8 pageScanMode; //Page scan mode
UINT16 serviceClass; //Service class field
UINT8 majorDeviceClass; //Device class(Major) feild
UINT8 minorDeviceClass; //Device class(Minor) feild
UINT8 clockOffset[2]; //Clock offset
}BT_DEVICE, *PBT_DEVICE;
////////////////////////////////////////////////////////////////////
BOOL retResult = FALSE;
BT_DEVICE devices[1] = {0};
UINT8 retCount1 = 0 ;
BT_DEVICE device1 = {0};
HANDLE sdpHandle = NULL;
BT_SERVICE services[1] = {0};
UINT16 numServices1 = 1;
// INT16 testnumServices;
HANDLE sppConnection = NULL;
BT_SERVICE service = {0};
UINT16 frameSize = 1500;
PINT8 portName = (PINT8) SPP_COM_Port;
HKEY hkTimeZones;
int iErr = 1;
bool bShow = false;
INT dwIndexToFind = -1;
if(BT_IsInitialized())
{
if(BT_Open())
{
int count = 0;
if( RegOpenKeyEx(HKEY_LOCAL_MACHINE,REMOTE_BLUETOOTH_DEVICE_SETTING,0, 0,&hkTimeZones) == ERROR_SUCCESS )
{
DWORD dwIndex = 0;
TCHAR tcKeyName[512];
DWORD dwcbName = 512 * sizeof( TCHAR );
FILETIME ftLastWrite;
HKEY hkTimeZone;
HKEY hkTimeZone2;
AfxMessageBox(_T("test here"));
/*while( RegEnumKeyEx(hkTimeZones,dwIndex++,tcKeyName,
&dwcbName,NULL,NULL,NULL,NULL) !=
ERROR_NO_MORE_ITEMS || count <=1)
{
AfxMessageBox(_T("while"));
count++;
HKEY hkTimeZone;
if( RegOpenKeyEx(hkTimeZones,tcKeyName,0,
KEY_READ,&hkTimeZone) == ERROR_SUCCESS )
{
*/
//
DWORD dwDataSize = sizeof( BT_SERVICE );
if(RegQueryValueEx(hkTimeZone,_T("service"),NULL,
NULL,(BYTE*)&service,&dwDataSize)== ERROR_SUCCESS)
AfxMessageBox(_T("Got service"));
else
AfxMessageBox(_T("No service"));
DWORD dwDataSize2 = sizeof(BT_DEVICE);
if(RegQueryValueEx(hkTimeZone2,_T("device"),NULL,
NULL,(BYTE*)&device1,&dwDataSize2)== ERROR_SUCCESS)
AfxMessageBox(_T("Got device"));
else
AfxMessageBox(_T("No device"));
RegCloseKey( hkTimeZone );
RegCloseKey( hkTimeZone2 );
/*
}
else
AfxMessageBox(_T("subkey not open"));
dwcbName = 512 * sizeof( TCHAR );
}
RegCloseKey( hkTimeZones );
*/
}
else
AfxMessageBox(_T("Open Register fail"));
retResult = TRUE;
}
else
AfxMessageBox(_T("BT not yet open!"));
}
else
{
AfxMessageBox(_T("BT not yet initialized!"));
BT_Init();
SPPConnectToSerialPort();
}
sdpHandle = SDAP_GetConnection(&device1);
sppConnection = SPP_Connect(&device1, &service, &frameSize, NULL,portName);
if(sppConnection == NULL)
{
AfxMessageBox(_T("Finally SPP Not connect"));
}
else
{
AfxMessageBox(_T("Finally SPP connect"));
}
I fail to get the device1 info from the method above.
Another question, how could I put the define for the path REMOTE_BLUETOOTH_DEVICE_SETTING which is always vary?
Please give me any comment or suggestion on this.
Thanks
|
|
|
|
|
I need help coming up with code that can teach students how to make change.
Students enter a price while computing a 5.6% sales tax also. The program will allow the student to enter the amount of change, as well as how many $20's,$10, $1, quarters nickels, and pennies to return to the customer.
If someone could help me (as im am learning the basics) with that i just need help on how to change the amuont the customer paid to an integer, or all cents, so that all the calcualtions will b with integers.
J-Dub
|
|
|
|
|
Am I right in thinking that when you say 'students', it means you're running a class, but you can't write this yourself ?
To make a double an int, use the floor function in math.h. To get the floating point bit, you could always subtract the int from the full value. There may also be a function that does this ( I am answering under the influence of jetlag, and I don't remember one right now )
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
when i say students i mean that this is part of the program...kinda like a story. in this program i need to b able to calcualte everything into change but i dont kno how to do that
J-Dub
|
|
|
|
|
OK - did my suggestion help ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I got myself into a dilemma. I started a C++ project using MFC. Later I extended the application to interface to a C# dll.
According to Microsoft docs, my C# DLL will only be able to access HTML help. However my application can only use WinHelp, because that is the way I originally built it. I would like to use the same help application for both. I have not been able to find any documentation on how I could modify my MFC application to use HTML help. If anyone has any suggestions or could point me in the right direction I would be most thankful.
Craig
|
|
|
|
|
Hi,
I have uninstalled VC++ express edition 2005 and back to VC++ 6.0 .
I wanted to get back to some projects and enhance some points as well as some complementary requests.
However, now with Visual C++ 6.0 , I cannot have the extension *.dsp, only *.dsw !!
How can I get back properly to VC++ 6.0 ?
Thanks a lot,
Regards
TPP
|
|
|
|
|
Right click on a dsp file, choose 'open with' and check 'always use this program' ( obviously select VC6 )
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
|
Thanks, but in fact, it is with VC++ express edition 2005, which is cancelled by now, and all my projects are in VC++ 6.0.
I do not think that the concept of VC++ express edition 2005 follows the framework of VC++7.0.
But if you have experienced, that is pretty good to know!!!!!!
Otherwise, the question remains, how to get back *.dsp files while working back with VC++ 6.0?
Regards
and thanks!
|
|
|
|
|
Hi again
I have various classes that I use fairly regularly (mainly to do with souncards). I was wondering whether it is worth while generating a dll with the classes.
What are the advantages of using dlls over just including the classes within my application (other than the exe will be smaller)?
Also, can you use threads in dlls as well (I am new to threads as well!)
Thanks for (yet more) help!
Mike
|
|
|
|
|
Hi Mike,
Well, I have no idea about the dll thing. Since you talked about something related to soundcard, have you tried "The Synthesis ToolKit in C++ (STK)" library before? You can download it from:
http://ccrma.stanford.edu/software/stk/[^]
I don't know whether it fit your application, but for mine, it just perfect.
Regards,
Chris
|
|
|
|
|
Well one of the advantages is that with a DLL you can just add the library to your project and include the corresponding header file and then you are able to access the functionality in that DLL. It seems annoying to constantly copy the same header+implementation file to you project.
Er zit een korstje op mijn aars.
|
|
|
|
|
If you use them in a lot of your applications, it's worth making DLLs. If you don't, then no, it's not.
There are "trade-offs", but there are no real advantages unless a LOT/all of your apps use those DLLs.
Yes, you can use threads in DLLs.
------- sig starts
"I've heard some drivers saying, 'We're going too fast here...'. If you're not here to race, go the hell home - don't come here and grumble about going too fast. Why don't you tie a kerosene rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
I writting a MFC app to read header infos like http://codeproject.com/bitmap/iptc.asp[^]
when i click F5 to compile,program shows a box :
"Unhandled Exception in JPEGHeader.exe,0xC0000005 :Access Violation
How can i debug ??
Plzz help me,thanks so much!!
|
|
|
|
|
Hi;
for (int i=0; i<21; i++)
cout << i<<" " ;
return 0;
My question is how can I get the outputs in bold form?
|
|
|
|
|
I haven't used it myself but you may want to check out the SetConsoleTextAttribute API.
Steve
|
|
|
|
|
Em... I tried this approach. It works! I learn a new skill from you.
Thank you, Steve.
Thanks to the person who post this question too.
Regards,
Chris
|
|
|
|
|
Hello community!
I've recently taken on a new task of rewritting an old control panel (originally written w/ Borland). The basic idea is to do the following:
-Read control settings from a database
-Dynamically create multiple forms based on the database
-Dynamically populate multiple controls on the forms
-Changes/updates to the control are taken from RAM on a PCI device.
-Beyond manipulating controls, I have to communicate some data over RS232 and Ethernet (basically, I need to write a terminal program).
The task seems simple, but I'm a programmer from a more embedded/unix world. My experience in VC only goes as far as the extent of one of those "Learn VC in 21 days" type books.
The main difficulty I'm having right now, is overcoming the learning curve to the MFC. Since my application is primarily form based, it would seem logical to use a simple Dialogs Application - however, I've been toying with the idea of using the Doc/View architecture with multiple CFormViews. I can see some benefit of using the MDI interface and binding each of the my control panels to a seperate CDocument. I would, however, need to instantiate each of these CDocuments and CFormViews dynamically, as their properties/content depend entirely upon the database.
Any insight you could provide to help me choose an architecture and get me started along the right direction is appreciated.
Thanks!
Embedded
|
|
|
|
|