|
Hi All,
I'm developing an MFC application using Doc/View and within this application I am making calls to a DLL. My problem is the DLL is asking for the:
Current window handle
Parent window handle
current HINSTANCE
How the heck do I find these things in MFC? I'm trying to get this information in a class that is derived from CFormView. Any help in this matter would be extremely helpful. Thank you in advance
Danielson
Slower is Faster
|
|
|
|
|
Current Window Handle -> *this or this->m_hWnd
Parent Window Handle -> *(this->GetParent());
Current HInstance -> AfxGetInstanceHandle();
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
During last 10 years, with invention of VB and similar programming environments, every ill-educated moron became able to develop software. - Alex E. - 12-Sept-2002
|
|
|
|
|
I created an application that displays user defined functions, and provides for performing various operations on them. I recently added a cursor (vertical line) the user can move around on the graph, and I display the x and y values on the status bar. I thought it would be nice to give the user the option to display the x and y values in a small user moveable window in the client area of the graph. The only way I've been able to implement this is by creating a dialog with a CStatic on it, then writing the values to the CStatic item in the dialog. Unfortunately, the dialog is much larger than needed to display this text, but I haven't been able to "create" a CStatic object that is moveable! I've done this in the past by having the parent of the CStatic object (I actually used a button) watch for mouse movement and button presses in the CStatic rect, but it was more work than I think is necessary.
Is there any way to create a CStatic object without a title bar that is moveable by the user? I want it to be just large enough to hold the text.
Whew... Thanks in advance
|
|
|
|
|
|
Thanks for the reply...
That's what I've done in the past. I thought by proper selection of window styles on creation of the CStatic (WS_???) I could get that functionality for free!
Guess I'll just have to brute force it again.
|
|
|
|
|
Hi,
I use a stored procedure for retrieve some recordset from my database.
I can calling my stored procedure but I can read my Recordset.
please find my sample :
_CommandPtr pCmd2("ADODB.Command");
pCmd2->ActiveConnection = m_pConn2;
//Store procedure
pCmd2->CommandText = "CheckNumSeg2";
pCmd2->CommandType = adCmdStoredProc;
pParam2 = pCmd2->CreateParameter ( _bstr_t ("TEST"), adVarChar,
adParamInput, strFileName.GetLength (), (_bstr_t) strFileName);
pCmd2->Parameters->Append ( pParam2);
_RecordsetPtr pRecordset;
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset = pCmd2->Execute(NULL, NULL, adCmdStoredProc);
pRecordset.Release(); //Only after this line is executed will the parameters be filled in Parameters collection.
//I would like to know how many record the stored procedure return me
long lnumCount = 0;
pRecordset->GetRecordCount();
//Close the DATABASE
if ( (m_pConn2->State & adStateOpen) == adStateOpen)
{
m_pConn2->Close();
}
Best Regards
youssef
|
|
|
|
|
|
Thanks a lot
It is my solution
Best Regards
youssef
|
|
|
|
|
I declare this CArray in Header file
CArray<int, int=""> m_arrHashFileListBoxWidth;
When I compile, there are error message show
error C2143: syntax error : missing ';' before '<'
error C2501: 'CArray' : missing storage-class or type specifiers
error C2059: syntax error : '<'
error C2238: unexpected token(s) preceding ';'
Do you know how to solve this problem?
Thank you for your answer.
|
|
|
|
|
First, you really should use > and < in place of > and < when posting code, as it'll mess up otherwise (or just uncheck the "display as HTML" checkbox).
Second, you most likely need to #include the file afxtempl.h, as that is where CArray is defined.
Third, if at all possible use the STL classes (i.e. vector<> ) instead; they work better, are more portable, and will in general ensure you less headaches in the future.
Shog9
------
So they took me down to the gallows
And this boy, he said to me:
"Why do you smile, when the rope's around your neck?"
I said, "I tell you boy, when i get back..."
|
|
|
|
|
Thank you.
I will use this when I post code
>
Thank you
<
|
|
|
|
|
Hi
Try like this and it should work.
CArray < Your class name, Your class name > m_arrHashFileListBoxWidth;
e.g.
CArray < CMyClass,CMyClass > m_arrHashFileListBoxWidth;
This is because CArray is a template class and it expects the type of argument whenever it try to initialize.
Kindly tell me whether it works or not.
Thanks
|
|
|
|
|
Hello,
Does anyone know where I can find a visually small calendar control (perhaps similar to the "Palm Desktop" mini calendars) that I could use? I would like to tweak it slightly for a project. It need not respond to mouse-clicks.
thanks!
JennyP
|
|
|
|
|
MS calender control won't cut it...?
Anyways have you looked under (i think) Misc. controls here at CP I know theres a mini calender control there which is totally rockin'
Cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Hello All,
In my project, I am using IStorage::CreateStream(). What I am doing is creating storage, and adding a file into the stream. For that I am using CreateStream, but the problem is, if the file name is large my program is crashing. I read MSDN, that CreateStream can't handle large filename (more than 31 characters.) Its giving me an error invalid pwcsName.Is there anyway to handle this problem???
Or is there any alternative which can solve this problem. Please, help.
Thanks,
|
|
|
|
|
The SDK reference for IStorage::CreateStream[^] is quite clear that pwcsName must not exceed 31 characters. Just use a short version of the file name (<= 31 chars long,) and put the real file name length as the first thing in your stream, and the actual name right after. When "walking" the streams in your storage, you can always read in the length and the actual file name from each stream.
Assuming your file name, strFileName, is an STL string , you can:
ULONG nLen = strFileName.length();
ULONG cbWritten = 0;
pIMyStream->Write(reinterpret_cast<void*>(&nLen), sizeof(ULONG), &cbWritten);
pIMyStream->Write(reinterpret_cast<void*>(strFileName.c_str()), nLen, &cbWritten);
And
ULONG nLen = 0;
ULONG cbRead = 0;
pIMyStream->Read(reinterpret_cast<void*>(&nLen), sizeof(ULONG), &cbRead);
char* pszBuf = new char[nLen + 1];
memset(pszBuf, 0, nLen + 1);
pIMyStream->Read(reinterpret_cast<void*>(pszBuf), nLen, &cbRead);
strFileName = pszBuf;
delete [] pszBuf;
Or something like that...
-- ian
http://www.ian-space.com/
|
|
|
|
|
I would like to know how one determines the state of all keys pressed when OnKeyDown is triggered in a MFC dialog. I need this to do a special key combination that only I will have access too while developing the application. Specifically "s" and "+" as well as "s" and "-"
Thanks,
Clint
|
|
|
|
|
Try looking at either one of these API functions:
GetAsyncKeyState
GetKeyboardState
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
You can do something like this in your OnKeyDown handler:
if( nChar == _T('S') || nChar == _T('s') )
{
if( GetKeyState( _T('+') ) & 0x10000000 )
{
}
else
if( GetKeyState( _T('-') ) & 0x10000000 )
{
}
}
Chris Richardson
|
|
|
|
|
Does anybody know, which image format is supported by ListCtrl ? I create CImageList from resource. I tried do put there 32-bit bitmap, 8 bit indexed bitmap, but there always was an problem with colors - some colors in image was changed. When i use standard colors in VC++ bitmap editor, it's ok, but i need to use non-standard colors. Any idea how to do that ?
Thanks.
rrrado
|
|
|
|
|
1) Make sure you're not editing the bitmap in Visual Studio; it won't work for 32bit images, and generally chokes badly on anything better than 4-bit color...
2) The normal MFC code to load a bitmap from resources doesn't work on high-color images. You can use either of the following techniques to get a bitmap from resources into your image list (we'll assume the resource ID is IDB_MY_IMAGES, and you want it split into 6 16x16 pixel images with no transparency):
CImageList MyImageList;
MyImageList.Attach(ImageList_LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_MY_IMAGES), 16,0,
CLR_NONE, IMAGE_BITMAP, ILC_COLOR32));
or:
CImageList MyImageList;
MyImageList.Create(16,16,ILC_COLOR32,0,6);
CBitmap bmpTmp;
bmpTmp.Attach(::LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_MY_IMAGES),
IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION));
MyImageList.Add(&bmpTmp, NULL);
Shog9
------
So they took me down to the gallows
And this boy, he said to me:
"Why do you smile, when the rope's around your neck?"
I said, "I tell you boy, when i get back..."
|
|
|
|
|
Thank you very much !
The first solution didn't work - it did exactly what standard
imageList.Create(IDB_MAILSTAT,16,1,RGB(255,255,255));
but second solution is working !
rrrado
|
|
|
|
|
is it fast, reliable? What are the cases it is must suitable for and what
are the cases it shouldn't be used?
Thanks a lot!
Wenrich
|
|
|
|
|
I am using pipes for comunicate threads in a security system And I never had problems with that...
Best Regards...
Carlos Antollini.
Pi Five[^]Creator
Sonork ID 100.10529 cantollini
|
|
|
|
|
It's a terrible, and extremely inefficient, way to communicate between threads. A semaphore based queue will be the most efficient general solution. If complex synchronization isn't needed, or we're talking just mainting state information, using CriticalSections or the Interlocked... calls is sufficient.
|
|
|
|
|