|
Use CRecordset and CDatabase classes to store and restore datas in database.You can check articles in CP too for how to use them:
http://codeproject.com/database/
Mazy
"The path you tread is narrow and the drop is shear and very high,
The ravens all are watching from a vantage point near by,
Apprehension creeping like a choo-train uo your spine,
Will the tightrope reach the end;will the final cuplet rhyme?"Cymbaline-Pink Floyd
|
|
|
|
|
Hi,
It's not easy to choose between functions in C runtime library and Win32 API, for example, CreateThread() and EndTread() are in Win32 API,
_beginthreadex() and _endthreadex() in C runtime library.
Can anybody tell me the difference and reason why I should choose one of then instead of the other.
Thank you in advance.
Best regard.
I confess that I am a stubborn guy, but why not put things thoroughly, logically and systematically clean. One concrete prolem is worth a thousand unapplied abstractions.
|
|
|
|
|
In this case, I believe you should choose the C runtime, because I seem to recall Richter had bad things to say about CreateThread and EndThread. As a rule, I prefer C++ over C functions, and standard functions over M$ specific ones, but overall for something OS dependant like threading I would go with the M$ ones, except in this case where Jeff Richter says not to.
There, was that confusing enough for you ?
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Hi CG,
Richter's advice was that we should use _beginthreadex if we plan on using CRT functions inside our thread. But if we are not, then we might as well use the API calls to start threads
Nish
If I am awake and my eyes are closed, it does not necessarily mean that I am thinking of naked women.
|
|
|
|
|
I am testing a program i wrote on a win98 system on a
Win2k O.S. and am having troubles with the serial communications.
When executing the program win2k is crashing in the
'WriteFile' function, which leads me to believe there
is something wrong with the flow control or handshaking.
But why would it all work fine on 98 and not 2K.
Does anyone know of any defaults etc that win2k may be setting
or looking for that 98 does not.
p.s. I have set up my DCB as follows
dcb.DCBlength = sizeof(DCB);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.StopBits = ONESTOPBIT;
dcb.fParity = NOPARITY;
dcb.fBinary = TRUE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fTXContinueOnXoff = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
|
|
|
|
|
Can't see anything wrong, but heres an example of some code for a serial port which I have used successfully on 95/98/NT/2K/XP
SECURITY_ATTRIBUTES sa ;
sa.nLength = sizeof(SECURITY_ATTRIBUTES) ;
sa.lpSecurityDescriptor = NULL ;
sa.bInheritHandle = true ;
m_hSerialPort = CreateFile((LPCTSTR)m_csCommPortName,
GENERIC_READ | GENERIC_WRITE,
0,
&sa,
OPEN_EXISTING,
0,
0) ;
if (m_hSerialPort != INVALID_HANDLE_VALUE)
{
m_bOpen = true ;
if (!GetCommState(m_hSerialPort, &m_dcb))
{
error.LoadString(IDS_CAVRO_DCB) ;
DisplayText(error) ;
}
else
{
FillMemory(&m_dcb, sizeof(DCB), 0) ;
m_dcb.DCBlength = sizeof(DCB) ;
m_dcb.BaudRate = CBR_9600 ;
m_dcb.ByteSize = 8 ;
m_dcb.Parity = NOPARITY ;
m_dcb.fParity = false ;
m_dcb.StopBits = ONESTOPBIT ;
m_dcb.fDtrControl = DTR_CONTROL_DISABLE ;
m_dcb.fOutxCtsFlow = false ;
m_dcb.fDsrSensitivity = false ;
m_dcb.fTXContinueOnXoff = true ;
m_dcb.fOutX = false ;
m_dcb.fRtsControl = RTS_CONTROL_DISABLE ;
m_dcb.fAbortOnError = false ;
if (!SetCommState(m_hSerialPort, &m_dcb))
{
error.LoadString(IDS_CAVRO_STATE) ;
DisplayText(error) ;
}
if (!SetCommMask(m_hSerialPort, EV_RXCHAR))
{
error.LoadString(IDS_CAVRO_MASK) ;
DisplayText(error) ;
}
COMMTIMEOUTS timeouts ;
timeouts.ReadIntervalTimeout = MAXDWORD ;
timeouts.ReadTotalTimeoutConstant = 0 ;
timeouts.ReadTotalTimeoutMultiplier = 0 ;
timeouts.WriteTotalTimeoutConstant = 0 ;
timeouts.WriteTotalTimeoutMultiplier = 0 ;
SetCommTimeouts(m_hSerialPort, &timeouts) ;
}
}
It may have something in it you have missed.
Roger Allen
Sonork 100.10016
If I'm not breathing, I'm either dead or holding my breath.
A fool jabbers, while a wise man listens. But is he so wise to listen to the fool?
|
|
|
|
|
Ok, I am playing around with the new HTML stuff in VS.NET/MFC7, and ditched the CDHTMLDialog, and using the CDHTMLView which I snagged from an article here.
However, what I would like to have is have a MFC ListControl in the bottom portion of the screen, the obvious answer would simply be to have a splitter window. However, I would like to have it look like its imbeded in the over all GUI and not plopped down on the bottom.
I have it so the list control displays when I click on a link, however any other link I click, it instantly vanishes, and when I click on the button again, it wont re-display.
How would I go about having it remain visible, and avoid flickering problems?
|
|
|
|
|
Possibly:
m_wndList.SetWindowPos(&CWnd::wndTopMost, 0,0,0,0, SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE);
Developers that like shiny objects also dig case mods and scratch-and-sniff stickers. Klaus Probst, The Lounge
|
|
|
|
|
Unfortuantly, that did not work. Hrmmm
|
|
|
|
|
The function I have which is run when I click an HTML link, is only called the first time I click it, and wont do it any other time...
|
|
|
|
|
How can I change the size of a dialog toolbar before it is created.
Example:
I want to change IDD_DIALOG 's size programatically before it is used to create a toolbar.
I hope that makes sense, Thanks if you can help.
- Matt Newman / Windows XP Activist
-Sonork ID: 100.11179:BestSnowman
†
|
|
|
|
|
Can;t you just resize the dialog just before you create the toolbar. I presume you do that in WM_INITDIALOG handlwer
Nish
If I am awake and my eyes are closed, it does not necessarily mean that I am thinking of naked women.
|
|
|
|
|
There is no class assigned to IDD_DIALOG , I was curious if I could change the resource dimensions on it's resource ID (it is blank)
- Matt Newman / Windows XP Activist
-Sonork ID: 100.11179:BestSnowman
†
|
|
|
|
|
Any ideas or examples?
Thanks!
|
|
|
|
|
I have already found one.
|
|
|
|
|
Why don't you share it with us?
Best regards,
Alexandru Savescu
|
|
|
|
|
Hey, I found these just exactly in www.codeproject.com
http://www.codeproject.com/dll/hooks.asp
http://www.codeproject.com/dll/keyboardhook.asp
|
|
|
|
|
For Visual Studio .
Scratch
|
|
|
|
|
Programmatically?
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
Manually?
System Properties/Advanced Tab
Jeremy L. Falcon
"The One Who Said, 'The One Who Said...'"
<nobr>
Homepage : Feature Article : Sonork = 100.16311
|
|
|
|
|
dll_file.H
extern "C"
{
<code>__declspec</code>(<code>dllexport</code>) <code>bool</code> func1(<code>bool</code> a);
<code>__declspec</code>(<code>dllexport</code>) <code>bool</code> func2();
} dll_file.cpp
<code>__declspec</code>(<code>dllexport</code>) <code>bool</code> func1(<code>bool</code> a)
{
<code>int</code> x=0;
x=x+1;
return true;
}
<code>__declspec</code>(<code>dllexport</code>) <code>bool</code> func2()
{
<code>int</code> x=0;
x=x+1;
return <code>true</code>;
}
compiling - OK
LoadLibrary - OK
GetProcAddress(* both func1 & 2 *) - OK
calling func2 - OK
calling func1 - fails while returning back to the app
the error is:
The value of ESP was not properly saved across a function call.
Please
HH EE LL PP
Thank you for reading all this....
Hope u have the answer
|
|
|
|
|
ESP is the 32-bit stack pointer CPU register that points to locations in the stack segment. Where's the stack being used here? Look at your parameters.
So, we know ESP didn't get a value it expected. Why? I dunno for sure, but you are using C linkage and C doesn't support a bool type. I'm "guessing" the compiler doesn't care because it's being compiled as C++. This may work, I just haven't tried it yet. Also, fun1() is not referencing its param in the first place. Trying using it in the function and change it to an int -- just for testing.
Jeremy L. Falcon
"The One Who Said, 'The One Who Said...'"
<nobr>
Homepage : Feature Article : Sonork = 100.16311
|
|
|
|
|
The problem is in calling convention.
I guess that you use (CALLBACK *)(bool) or (__stdcall *)(bool) calling convention.
This is wrong in the case then you use "C" declaration of functions (extern "C" {}).
Coz in "C" declaration the caller should clean up stack but not callee.
So you should use (FAR *)(bool) or (__cdecl *)(bool) calling convention in case with "C" declaration.
P.S. Try to avoid using other types in function argument but integer. Coz they will be converted to integer anyway.
Have fun.
|
|
|
|
|
How do I close a view window problematically?
Do i have to close its frame window and it in some specific order?
Anon
|
|
|
|
|
Once you have a pointer to the view, just do:
pView->SendMessage ( WM_CLOSE );
--Mike--
Actual sign at the laundromat I go to: "No tinting or dying"
Like the Google toolbar? Then check out UltraBar, with more features & customizable search engines!
My really out-of-date homepage
Big fan of Alyson Hannigan and Jamie Salé.
|
|
|
|
|
Hi, Mike!
I encountered the same problem recently. You method wont work in a MDI application. Nothing will happen after you send WM_CLOSE.
Try the following step to verify by yourself:
1. Create a MDI application called "Tst" using AppWiz;
2. Craete a CloseView menu item under View menu
add response codes to this menu item in the CTstView class.
void CTstView::OnViewCloseview()
{
// TODO: Add your command handler code here
SendMessage(WM_CLOSE);
}
3. compiled it & run. Open some views, then click on CloseView menu item. You will see, nothing happen.
Is there anybody have a solution for this?
Comments & suggestion are greatly appreciated!
Wayne King
17 April 2002
|
|
|
|