|
How to get the frame rate of a .wmv file if the attribute WM/VideoFrameRate cannot be found by the interface IWMHeaderInfo?
|
|
|
|
|
I try to create a file, the filename i will get from a string. What do I do wrong. It works ok in Visual C++, but in Emededd C++ i get an error.Some one told me that i just have to convert ,char* filnavn1 to a wide char format string
Can some one show me how I do that.
HANDLE hFile1;
char *filename1;
char *token;
char seps[] = ",";
char string[] = "\\windows\\2004-10-T-gr1-tstTag1.csv,\\windows\\2004-10-T-gr1-tstTag2.csv";
token = strtok( string, seps );
filnavn1 = token;
hFile1 = CreateFile (filnavn1, // Open .txt
GENERIC_READ, // Open for reading
0, // Do not share
NULL, // No security
OPEN_EXISTING, // Existing file only
FILE_ATTRIBUTE_NORMAL, // Normal file
NULL); // No template file
Get this error:
cannot convert parameter 1 from 'char *' to 'const unsigned short *
|
|
|
|
|
Instead of using char*, try to use TCHAR*.
So, for example for string:
TCHAR* string = _T("\\windows\\2004-10-T-gr1-tstTag1.csv,\\windows\\2004-10-T-gr1-tstTag2.csv");
And instead of strtok, use wcstok.
|
|
|
|
|
Still get an error
cstok' : cannot convert parameter 2 from 'char [2]' to 'const unsigned short *
int ch = ',';
TCHAR* token;
int i = 0;
int ch = ',';
TCHAR* filnavn1;
TCHAR* string = _T("\\windows\\2004-10-T-gr1-tstTag1.csv,\\windows\\2004-10-T-gr1-tstTag2.csv");
|
|
|
|
|
Always use TCHAR instead of chars. This error comes because you pass a char array instead of a TCHAR array.
|
|
|
|
|
As I told you in another thread, there seems to be something fishy about the way your compiler handles the typedefs for TCHAR, PSTR, LPSTR and so on.
When you invoke CreateFile, you actually invoke either CreateFileA or CreateFileW based on whether UNICODE is defined or not.
Based on the error message, it seems that you are calling CreateFileW, which takes a unsigned short * as the filename parameter. This indicates that UNICODE is defined. I have no idea about what you mean when you mention "Emededd C++", but somewhere UNICODE is defined either explicit or implicit.
You have some considerations to do:
1. If you are sure that you only need to build for unicode, then you could start to use the proper functions explicit like this:
HANDLE hFile1;
unsigned short *filename1;
unsigned short *token;
unsigned short seps[] = L",";
unsigned short string[] = L"\\windows\\2004-10-T-gr1-tstTag1.csv,\\windows\\2004-10-T-gr1-tstTag2.csv";
token = wcstok( string, seps );
filnavn1 = token;
hFile1 = CreateFile (filnavn1,
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
2. Or you could find out why your compiler insists on using the *W functions, but in the same breath refuses to translate TCHAR to unsigned short .
I would go for #2
By the way, for runtime translation of string types: look up MultiByteToWideChar(), but as I said, you main problem is the confusion of string types.
"After all it's just text at the end of the day. - Colin Davies
"For example, when a VB programmer comes to my house, they may say 'does your pool need cleaning, sir ?' " - Christian Graus
|
|
|
|
|
jan larsen wrote:
I have no idea about what you mean when you mention "Emededd C++"
FYI,
Microsoft eMbedded C++[^]
Is a development IDE for writing code for Windows CE based devices. It instists on UNICODE.
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Walliams (Little Britain)
|
|
|
|
|
Ah, "Embedded", I had a vague idea that this was probably the case , I didn't know it insisted on UNICODE.
"After all it's just text at the end of the day. - Colin Davies
"For example, when a VB programmer comes to my house, they may say 'does your pool need cleaning, sir ?' " - Christian Graus
|
|
|
|
|
Sorry, I think it is rather that CE requires UNICODE therefore the API implementations are all UNICODE.
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Walliams (Little Britain)
|
|
|
|
|
Thanks to Antony for clearing up some things here.
Embedded C++ insists on UNICODE, this means that if you want to build for both platforms, you should use the proper typedefs when working with strings.
Michael Dunn has written a very good article on this: The Complete Guide to C++ Strings[^]
So it seems that the compiler confusion springs from: When compiling for the embedded environment, it will allways link to wide character functions, this means that you can't use char , and that, when you compile for the embedded environment, have to define UNICODE.
"After all it's just text at the end of the day. - Colin Davies
"For example, when a VB programmer comes to my house, they may say 'does your pool need cleaning, sir ?' " - Christian Graus
|
|
|
|
|
TCHAR* filnavn1 did it.
Did not know that it was UNICODE.
All works fine now.
Thanks to all
|
|
|
|
|
This problem puzzled me a long time,can somebody help me?
Thanks a lot!
(Visual C++ 6.0)
Use MFC wizard to create a ActiveX Control project.Name the control class as CTestCtrl. Then Use Classwizard to add a new class to project, name it as CTestObj ,select CCmdTarget as base class,select create by ID "testctrl.TestObj". Now use ClassWizard to add a Automation method named GetObj to the control CTestCtrl.The method has a parameter that is of LPDISPATCH type. The definition just like below
void CTestCtrl::GetObj(LPDISPATCH inserObj)
{
CTestObj *pObj = (CTestObj*) CCmdTarget::FromIDispatch( inserObj);
if (!pObj)
AfxMessageBox("Error, cannot get dispatch object");
else
AfxMessageBox("OK");
}
The project is ready now, build and register the control.
Write a simple test html page using visual Interdev(or anything else).Insert the TestCtrl and a Button to the html page .Add below codes for the button click event function.
var obj = new ActiveXObject("testctrl.TestObj");
DTestocx1.GetObj(obj);
Now begin test.Open an IE window and Select File->Open to open the test html page. Click the button,it will show message "ok". But if you select File->New Window in IE to open a new same window, and in new IE window click the button ,it will show "Error, cannot get dispatch object" . Why???
|
|
|
|
|
Hi.
This may not be entirely proper for this group, but it would be nice to have
a C++ solution...
I'm running cacls in order to change permissions for a folder. (Setting
change permission to the "Everyone" group.) E.g. cacls <dirname> /E /G
Everyone:C
The problem is however that the name of this "everyone" group is not
"Everyone" on non-english Windows OS.
I'm running cacls as part of an installation, and the product can be
installed on NT/2000/XP in any language. The installation fails however,
when i run cacls as listed above on non-english OS. I need to replace
"Everyone" with the correct name for the group in the language of the OS the
product is being installed on.
So, is there a way to get the correct name of the "everyone" group?
- Jan Ove Aase
|
|
|
|
|
Maybe NetGroupEnum or the ADSI IADsGroup will help.
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Walliams (Little Britain)
|
|
|
|
|
I am not familiar with CACLS, but I do know there is a listing in the MSDN of well known SIDs and the 'everyone' group has a well known SID, perhaps you can use that instead.
We ran into a similar problem with translating 'Everyone' and I changed the code to use the well known SID instead.
|
|
|
|
|
Yes, this seems like a good solution. Except, the MSDN doc says it's only included in XP and later. I need a solution that will work for W2000 and NT4.
Am I missing something, or is this solution only for XP?
Jan Ove Aase
|
|
|
|
|
I finally managed to sort it out. I can use InitializeSid on NT/2000 (seems to work on XP too), and CreateWellKnownSid on XP and Server2003.
InitializeSid does not create a valid SID for LookupAccountSid on XP or Server2003. (Actually, when I built release, it did work on XP, but not in debug mode.)
Anyway, with two programs, one for NT/2000 and one for XP and later, it seems to work.
Thanks.
Jan Ove Aase
|
|
|
|
|
How to get ID of a dialog from another class?
|
|
|
|
|
why do u wnat ID of Dialog Box
-----------------------------
"I Think It Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
Hi,
I already have Platform SDK installed in win2k in the path c:\psdk.
I want to update the SDK.Do i need to specify the same directory c:\psdk while installing the latest one. Or specify a different path ?
Pls help
Thanks in advance
Ram
|
|
|
|
|
My personal preference would be to remove the old version and install the new version to whatever path I prefered.
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Walliams (Little Britain)
|
|
|
|
|
I agree. Very few items benefit from overwriting.
"Opinions are neither right nor wrong. I cannot change your opinion of me. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
DWORD __stdcall MEditStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CString sThisWrite;
sThisWrite.GetBufferSetLength(cb);
CString *psBuffer = (CString *)dwCookie;
for (int i=0;i<cb;i++) {
="" sthiswrite.setat(i,*(pbbuff+i));
="" }
="" *psbuffer="" +="sThisWrite;
" *pcb="sThisWrite.GetLength();
" sthiswrite.releasebuffer();
="" return="" 0;
}
<u="">I use above function to get string form buffer but i have problem.
Assume the string on editor is "##123456789##" and i test MEditStreamOutCallback function with below function
void CRichEgView::OnReadout()
{
CString sReadText; to
EDITSTREAM es;
es.dwCookie = (DWORD)&sReadText; es.pfnCallback = MEditStreamOutCallback;
GetRichEditCtrl().StreamOut(SF_RTF,es); MessageBox(sReadText.Mid(0,500));
}
The string below is the result but i need noly "##123456789## string,please suggest
"{\rtf1\ansi\ansicpg874\deff0\deflang1054{\fonttbl{\f0\fswiss\fprq2\fcharset222 System;}}
\viewkind4\uc1\pard\lang1033\b\f0\fs20 ##123456789##\lang1054\par
}
"}
|
|
|
|
|
Have you tried GetWindowText() ?
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
GetWindowText() so work!!!
|
|
|
|
|