|
Have you tried any of the flags MB_SYSTEMMODAL and MB_TASKMODAL ? Check the documentation of ::MessageBox for more info.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
str.FormatMessage(_T("%1!d! of %2!d! developers agree: Hockey is %3%!"), nAgree, nAsked, _T("Best"));
What do the "!" do in the formatted string? I've never seen this syntax before.
Jon Sagara
What about ?
|
|
|
|
|
It is an extended format syntax explained in the documentation for ::FormatMessage which follows the pattern
%index!format_specifier!
where index selects the parameter to replace the slot with, and format_specifier is an optional specifier following the syntax of printf and related functions.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Ok, then that explains why CString::FormatMessage(...) "allows for the parameters to be inserted in an arbitrary order."
In my particular case, this must be used by Localization in case they need to reorder parameters in the strings.
Thanks.
Jon Sagara
What about ?
|
|
|
|
|
Hi
Does anyone know a free C/C++ compiler that will produce 16-bit dll:s for windows?
|
|
|
|
|
Try in the Borland Site...
Best Regards....
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Failure, unfortunately. Thanks anyway.
|
|
|
|
|
The Free C/C++ Compilers section of thefreecountry.com lists several products that might do for you (like the old Turbo C compilers that are listed here as offered for free).
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
how to work with SetMenuItemBitmaps() and set the size of the bitmaps with GetSystemMetrics(SM_CXMENUCHECK)
example will be great !
|
|
|
|
|
Hi All,
I want to display some data in multiple column ListBox. In 1st column I want to display
Attribute-Name and in 2nd column Attribute-Value.
What I need to Do?
I’ve a dialog-box created, in which I added a ListBox Control.
Any suggestions are welcome
Thanks,
-- Sumit
|
|
|
|
|
You need to Use a List View....
Best Regards....
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Altough I agree with Carlos in that you're better off using a list view control, still there's a feature of list boxes that could suit your needs, namely tabstops, which work pretty much the same as user-defined tabstops in a word processor. For instance, if your first attribute name was "Age" and its corresponding value was "30", you would have to write something like
int tabs[]={60,60};
m_listbox.SetTabStops(2,tabs);
m_listbox.AddString("Age\t30"); Hope this helps.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
How can I use a function to retrive the port number of a POP3 server?
I know there is one functions at lesat.. but don't which
------------------------------
©0d3 ©®4©k3® - That's me!
------------------------------
|
|
|
|
|
Maybe I haven't understood your question, but port number is something you must know before you begin communicating with a POP3 server. The standard port number for this service is 110.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
no, you understod me!
But I was confused and you cleared my memory so now I can use it again!
------------------------------
©0d3 ©®4©k3® - That's me!
------------------------------
|
|
|
|
|
Can anyone tell me how to enable/disable the ok button on a property sheet? I want to have the button disabled until the user enter all the required information, then enable it.
-ken
Ken Goguen
|
|
|
|
|
You can get hold of a CWnd * to the OK button with GetDlgItem(IDOK) (if inside a method of the property sheet) or GetParent()->GetDlgItem(IDOK) (from a method of a child property page). Then you can call CWnd::EnableWindow for that pointer.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
|
I have an automation interface which own a UDT array. The UDT is define as
struct NoteDesc {
float base;
float pitch;
float medium;
};
In my interface, I have set the get and put properties. put works really great but after I return from get, I have memory crash in the kernel.
Here my interface def:
[
object,
uuid(60C22F90-D3BB-4BA0-ABCC-837E4CA2AEF2),
dual,
helpstring("IScoreDesc Interface"),
pointer_default(unique)
]
interface IScoreDesc : IDispatch
{
[propget, id(1)] HRESULT NumberOfNote([out, retval] long *pVal);
[propput, id(1)] HRESULT NumberOfNote([in] long newVal);
[propget, id(2)] HRESULT Notes([out, retval] SAFEARRAY(NoteDesc) *pVal);
[propput, id(2)] HRESULT Notes([in] SAFEARRAY(NoteDesc) newVal);
};
and the class compil well, the call to get is effective. The problem occur when I return of the function get define like that in my h file:
STDMETHOD(get_Notes)(SAFEARRAY* *pVal);
Do you have any idea?
|
|
|
|
|
It'd be most helpful if you could post the actual implementation of your get_Notes function. Anything else seems to be OK.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
The source code of my function: (my comment are in french, don't take care of them)
STDMETHODIMP CScoreDesc::get_Notes(SAFEARRAY **pVal)
{
// Remplis une structure d'information pour pouvoir créer le tableau
IRecordInfo* pRecordInfo = NULL;
HRESULT hr = GetRecordInfoFromGuids(LIBID_MUSICSEARCHSYSTEM, 1, 0, GetUserDefaultLCID(), IID_NodeDesc, &pRecordInfo);
// Détruit le tableau si il existait déjà
if (*pVal != NULL)
{
SafeArrayDestroy(*pVal);
*pVal = NULL;
}
// Crée un tableau pour le transport
*pVal = SafeArrayCreateVectorEx(VT_RECORD, 0, m_NumberOfNote, pRecordInfo);
pRecordInfo->Release();
if (*pVal == NULL)
{
hr = Error(_T("Cannot create the Notes decription array"));
return hr;
}
// Rempli le tableau avec le contenu du tableau interne
NoteDesc* pNoteArray;
hr = SafeArrayAccessData(*pVal, (void**) &pNoteArray);
if FAILED(hr) return hr;
memcpy(pNoteArray, m_Notes, sizeof(NoteDesc)*m_NumberOfNote);
SafeArrayUnaccessData(*pVal);
return S_OK;
}
The IID_NoteDesc is defined at the top of this cpp file.
I have try to follow an article I found on this site write by Ioannis Stamatopoulos.
Thanks,
Bruno
|
|
|
|
|
The only thing I can guess about your code is that maybe sizeof(NoteDesc) is not equal to the value provided by pRecordInfo->GetSize() due to alignment considerations. Could you check that out?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
The error message:
HEAP[musicserver.exe]: Invalid Address specified to RtlFreeHeap( 130000, 1e0690 )
The size return pRecordInfo->GetSize and sizeof(NoteDesc) are identical (value is 12 - 3 32bits floats)
I don't know where it found to have to destroy this huge part of memory.
My test array contains only 10 elements, that's 120 bytes. Not 722576 if I have understand correctly the trace from the HEAP.
Thanks,
Bruno
|
|
|
|
|
Well, this is wild guessing, but anyway... What client technology are you using? If it's ASP or other VB-based stuff, seems like VBSCRIPT does not handle SAFEARRAY s of objects other than VARIANT s (read MSDN article PRB: Script Error Occurs When Referencing Non-variant Array (Q165967)). Also, if your client is written in C#, I've read several posts on the Usenet about an alleged bug of the .NET platform that shows when dealing with SAFEARRAY s created via SafeArrayCreateVector (Ex ) --this is far from confirmed, though.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Client are currently in C++ (Console test app and ActiveX)
I will give a try with SafeArrayCreateEx instead of SafeArrayCreateVectorEx. Perhaps, they have a bug with that last function.
Many thanks Joaquin for your help,
Thanks,
Bruno
|
|
|
|