|
Try setting the height like this:
lfHeight = -MulDiv(11, GetDeviceCaps(hDC, LOGPIXELSY), 72);
This comes from the LOGFONT entry in MSDN.
Like it or not, I'm right.
|
|
|
|
|
Okay. The solution is to use CreateFontIndirect() instead of CreatePointFontIndirect(). I have no idea why that is.
Also, when I first instantiate a CFontDialog and pass in a reference of a LOGFONT object of the current font, for some reason CFontDialog does not recognize its height. It only recognizes the height after the user makes changes via CFontDialog.
Kuphryn
|
|
|
|
|
can anyone tell me the software name that i can create avi file please
i downloaded, videdit but i can't install it. it is keep asking missing sample.avi
so i search one avi file and change the name as sample.avi but another error message, " the same is not the same" pop up..
i want to create my own .avi file so i can use animation control of MFC.
thanks
|
|
|
|
|
Win wrote:
i search one avi file and change the name as sample.avi but another error message, " the same is not the same" pop up..
Amazing.
I think an avieditor comes with VC, but I don't remember the name of it. Look in the Tools directory.
|
|
|
|
|
Rama Krishna wrote:
Amazing.
Truly so!!!
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
i meant "the size is not the same"... it was a typo... sorry friends...
|
|
|
|
|
Platypus Animator.
Maxwell Chen
Lets make bugs better!
|
|
|
|
|
|
CAnimateCtrl only can display AVI file?
i want to post my animation .gif file on my dialog but don't know how. I only found a big class on codeguru. but i dont' want an another big class add to my application to run a .gif file. another one is CAnimation, that only can run avi file.. ( from what i understood). i want .gif not avi. anyway. i dont' even know how to create .avi file. what kind of software that i have to use to create avi.. adobe photoshop doesn't have .avi file format when you save.
i think i have to drag picture icon from control box( control box that has all check, radio, animation, treectrl,listctrl,.. etc.) and then just post my .gif on the dialog like other check boxes and radio buttons.
how can i do that? no. can i do it?
|
|
|
|
|
'cause you have to pay money to develop software that deals with .gif files. Search CP; i know there's at least one article on playing .gif files. Or search the Net; there are quite a few AVI creation proggies out there, some free even.
[update]
Just stumbled across this AVI software; give it a look
---Shog9---
Extreme ways are back again, extreme places i didn't know
I broke everything new again, everything that i'd owned -- Moby, Extreme ways
|
|
|
|
|
it's not that difficult all you have is to add an ActiveX control to your dialog called Animation GIF Control .. easy to use .. enjoy it )
MCP
|
|
|
|
|
how? could you tell me please, i have never used activex control. i read activex control from mfc book by Mike Blaszczack. i though activex control is a server type and it is like DLL. that's what i understood from what i read.
now u are saying that i can call animation GIF control. so i looked for it and i could not find animation GIF control when you inserting activex control to your dialog.
i only found
1) animation control 6.0
2) animation control version 5.0
3) direction animation control
4) direction animation path
5) direction animation sequencer
6) direction animation structure
7) direction animation window
so i added each one of them to my applicaiton, but i dont' know how to use them , i couldn't find in MFC lib either.. i search for those classes that activx control created or vc 6 created in MFC and online.. but can't find it.
tell me how to use activex controla and where can i find animation gif control?
i just simple want my gif file running on my dialog.
i didn't except posting gif file on dialog is that difficult..
|
|
|
|
|
why dont u just render each frame to screen? gif are small enuf.
norm
|
|
|
|
|
hi.. all
my application is a printing program.
the program gets all the files from the choosen folder and insert to the tree, ( tree ctrl)
there are checkbox for each tree item.
when the item is checked, do printing, and estimate how many pages those checked files will be printed.
to do estimating and printing, at least one file or one item has to be checked, otherwise, the message "no file is checked". will shows up.
that's basiscally what my program does.
if the program (i just double click on .exe file from debug folder) is run under win2000, and i check on one file, then click on estimate pages button to estimate num of pages that will be print. it gives me num of pages.
but under XP, i did the check the same file, then click on estimate pages button, "no file is checked " message shows up.
why under win2000 works and not under xp eventhough runing the same program, did the same thing, calling the same function?
oh.. i dont' have visual studio under xp though... but i have .dll pasted into my program folder.. so it is runnable under xp too.
|
|
|
|
|
In VC6, WSAGetLastError() returns the proper error code, but in VC7 it doesn't. It returns a system code contrary to the documentation. Anyone know why?
Code-------------------------
#include <iostream>
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")
using namespace std;
int main(int argc, char *argv[])
{
if (!gethostbyname("www.microsoft.com"))
{
cerr << "gethostbyname error " << WSAGetLastError() << endl;
}
return 1;
}
--- Output from VC6 ---------------------
gethostbyname error 10093
--- Output from VC7 ---------------------
gethostbyname error 5
Another oddity is that VC6 returns almost instantly where vc7 takes several seconds (1.4Ghz machine)
|
|
|
|
|
You apparently haven't even bothered to look up what error 5 is (if you had you wouldn't ask).
|
|
|
|
|
Please read my post before attempting to respond.
If you look in the documentation, gethostbyname() returns "a specific error number can be retrieved by calling WSAGetLastError" it continues on to list several error codes. One of which is WSANOTINITALISED, the correct error code in this case.
WSAGetLastError() does not return the specific error code (consistant with previous versions of VC) but a more generic system error of 5. The question is not what does the returned error message mean but why WSAGetLastError() returns "access denied" and not WSANOTINITALISED?
Does anyone with some experience know?
|
|
|
|
|
I have a function which is being passed a _TCHAR*. I need to find out how long the string is, but when I call sizeof( the_tchar ), it always returns 4, no matter what the string, which of course tells me that it is returning the size of the pointer, not the string. How do I get the length of the string being pointed to by the _TCHAR*?
|
|
|
|
|
|
if the return type of a function is defined as const CStringArray & and you define a local variable of that type, can you then call RemoveAll on the CStringArray to delete all entries? if not, would this cause a memory leak?
i.e.
const CStringArray & aszarray = foo(a,b)
aszarray.removall(). ????
|
|
|
|
|
|
How can I get this to compile? I am trying to get late binding to set the size of the char to the length of the document that I specify. But I keep getting the following errors, even when I declare the function virtual in the class definition. Here is the code sample:
void CMyClass::MyFunction(){
CFile myFile;
UINT uBytesRead;
CSting szText;
myFile.Open("File.txt",CFile::modeRead,NULL);
int nFileSize = myFile.GetLength();
char Buff[nFileSize];
while(uBytesRead = myFile.Read(Buff,nFileSize){
Buff[uBytesRead] = NULL;
szText += CString(Buff);
}
MessageBox(szText,"Thank you for your help",MB_OK);
}
My class definition:
class CMyClass : public CDialog
{
virtual void MyFunction();
}
Here are the errors I got when I tried to compile the program:
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
If all you Herb Sutters and Tim Smiths can help me, I will be very greatful and wish you a long and healthy life. If you can read my code and suggest and alternate way of doing what I want it would be cool too.
|
|
|
|
|
you have to allocate this dynamically
char * Buff = new char[nFileSize];
....
delete [] Buff;
-c
Cheap oil. It's worth it!
|
|
|
|
|
So would this be the correct way to do it?:
void CMyClass::MyFunction(){
CFile myFile;
UINT uBytesRead;
CSting szText;
myFile.Open("File.txt",CFile::modeRead,NULL);
int nFileSize = myFile.GetLength();
char* Buff = new char[nFileSize];
while(uBytesRead = myFile.Read(*Buff,nFileSize){
*Buff[uBytesRead] = NULL;
szText += CString(Buff);
}
MessageBox(szText,"Thank you for your help",MB_OK);
}
|
|
|
|
|
actually, you need to add 1 to the length of the buffer, if you want to put the NULL on the end:
char* Buff = new char[nFileSize + 1];
then, before the MessageBox, you have to "delete [] Buff".
-c
Cheap oil. It's worth it!
|
|
|
|