|
Guess what, you're right!! That was the thing i was overlooking. You're a genius!!!
Did a quick try, made 0x00800000 as the last parameter to Alphablend() and it does the job. And it is lightyears faster then the workaround i made with getpixel(). Problem solved!
The reason i never questioned it, is because a struct is a chunk of memory so i expected this would always be a pointer when used as a parameter. I mean: when a have a struct of let's say 200 bytes and use it as a parameter to a function would this mean these 200 bytes are allocated on the stack?
Saw you're living in Canada, although you have a dutch name. So whenever you are in holland, call me, i have a present for you. Thanks for taking your time.
Rozis
|
|
|
|
|
Rozis wrote: You're a genius!!!
Not really, I just read the documentation , I am just glad to be able to help.
Rozis wrote: Saw you're living in Canada, although you have a dutch name.So whenever you are in holland, call me, i have a present for you
My grandparents emigrated from Holland to Canada in the fifties. I would love to go there some day and see where my heritage comes from. Maybe when I do finally manage the trip I will try to look you up and take you up on your offer.
You may be right
I may be crazy
-- Billy Joel --
Within you lies the power for good - Use it!
|
|
|
|
|
Hi,
i have a resource file in which i have changed the font property of the dialog to "Arial" regular
20....
then the font inside the dialog got increased...along with the text of the controls inside dialog..
and now i tried changing from the code in initDialog function like...
CFont newfont;
LOGFONT lf;
SecureZeroMemory(&lf, sizeof(lf));
lf.lfHeight = 20;
lf.lfWeight = FW_MEDIUM;
lstrcpy(lf.lfFaceName, _T("Arial"));
newfont.CreateFontIndirect(&lf);
GetDlgItem(IDC_CHECK1)->SetFont(&newfont);
GetDlgItem(IDC_STATIC)->SetFont(&newfont);
newfont.Detach();
and now when i build and see the output the look of the dialog with new font is not same and even the font looks smaller than the font of the dialog which i have tried to change manually the font property of the Dialog....
Please suggest me how can i make changes to my code so that both look similar....
modified on Friday, June 26, 2009 4:20 PM
|
|
|
|
|
Well, it looks like newfont goes out of scope.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
i mean even though thru code i have applied the font height as 20 font looks smaller
than the font which is obtained by manual change....
the font(thru code) is getting applied but it doesn"t looks same as the other font(manual)..
|
|
|
|
|
OK.
kumar sanghvi wrote: lf.lfHeight= 20;
From MSDN [^]:
For the MM_TEXT mapping mode, you may use the following formula to specify a height for a font with a given point size.
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
where MulDiv is defined as follows:
#define MulDiv(a,b,c) (((a)*(b))/(c))
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Thanks for ur valuble response...
it improved than before but font looks a bit smaller than the font which i have modified manually....
both doesn"t looks exactly similar....
|
|
|
|
|
anybody please try to help me....
|
|
|
|
|
Hi all,
I've beating this around for a few days now and I'm totally lost.
I was given a DLL written in VB by a client with the idea of instantiating a class and calling some of the methods. I created a small test app (from code I found here) and attempted to use CoCreateInstance. This worked fine in the code shown below. The client then gave me a more up-to-date version of the DLL and with this new version, CoCreateInstance failed with a E_NOINTERFACE.
I've gone back and forth with the client about this and they have said that it was compiled with the same compiler (really old was the comment) and that all that was changed with the new release was couple of lines of code. They said they had recompiled the DLL under the highest compatibility. A couple of years has gone by since releases, so there may be underlying OS changes, if that would make a difference. They have said they have other users using the DLL without issues, though perhaps not with C/C++.
I modified the code so that instead of using CoCreateInstance, it uses CoGetClassObject and CreateInstance. CreateInstance fails with E_NOINTERFACE, the same error.
I would appreciate all help in understanding how to debug this, bearing in mind that I'm unfamiliar with COM.
This is a snippet from stdafx.h:
#import "TTExt.dll" no_namespace
This is a snippet from the area where I do the CoCreateInstance:
void CVCClientDlg::OnButton1()
{
HRESULT hresult;
CLSID clsid;
CoInitialize(NULL);
hresult=CLSIDFromProgID(OLESTR("TTExt.WebRes"), &clsid);
if(FAILED(hresult))
{
switch (hresult) {
case CO_E_CLASSSTRING:
AfxMessageBox("CLSID Failed -- registered CLSID for the ProgID is invalid");
break;
case REGDB_E_WRITEREGDB:
AfxMessageBox("CLSID Failed -- error occurred writing the CLSID to the registry.");
break;
default:
AfxMessageBox("CLSID Failed -- unknown reason");
break;
}
}
_WebRes *wr;
IClassFactory *pCF;
hresult=CoGetClassObject(clsid, CLSCTX_INPROC_SERVER, NULL, IID_IClassFactory, (LPVOID *)&pCF);
hresult = pCF->CreateInstance(NULL, __uuidof(_WebRes), (LPVOID *)&wr);
if(FAILED(hresult))
{
switch (hresult) {
case REGDB_E_CLASSNOTREG:
AfxMessageBox("Creation Failed -- Class not registered");
break;
case CLASS_E_NOAGGREGATION:
AfxMessageBox("Creation Failed -- class cannot be created as part of an aggregate.");
break;
case E_NOINTERFACE:
AfxMessageBox("Creation Failed -- class does not implement the requested interface");
break;
case E_POINTER:
AfxMessageBox("Creation Failed -- ppv parameter is NULL");
break;
default:
AfxMessageBox("Creation Failed -- unknown reason");
break;
}
return;
}
bool bCon = wr->Connect("GEX", "");
if (bCon)
MessageBox("Connect Succceded\n");
else
MessageBox("Connect Failed **********\n");
wr->Release ();
CoUninitialize();
}
This is a snippet from the top of the .tlh file:
#pragma once
#pragma pack(push, 8)
#include <comdef.h>
struct __declspec(uuid("f5171c2c-b846-47bc-8c7f-19658cfc0086"))
__TTExt;
struct __declspec(uuid("787d47a3-020f-4b1f-912e-003523277942"))
_WebRes;
struct WebRes;
_COM_SMARTPTR_TYPEDEF(_WebRes, __uuidof(_WebRes));
struct __declspec(uuid("787d47a3-020f-4b1f-912e-003523277942"))
_WebRes : IDispatch
{
I did a comparison of the .tlh files from the two different versions of the DLL and this is the result:
Compare: (<)C:\Documents and Settings\phild\My Documents\Visual Studio Code\VBDll\VCClient\Debug\tmp\v7.ttext.tlh (10755 bytes)
with: (>)C:\Documents and Settings\phild\My Documents\Visual Studio Code\VBDll\VCClient\Debug\tmp\v6.ttext.tlh (10755 bytes)
6c6
<
---
>
17,19c17,19
< struct __declspec(uuid("e897466c-75b0-459f-9512-21d42e1f5703"))
< __TTExt;
< struct __declspec(uuid("dc8718c4-d07f-4542-a799-f2015a0614cf"))
---
> struct __declspec(uuid("f5171c2c-b846-47bc-8c7f-19658cfc0086"))
> __TTExt;
> struct __declspec(uuid("787d47a3-020f-4b1f-912e-003523277942"))
33c33
< struct __declspec(uuid("dc8718c4-d07f-4542-a799-f2015a0614cf"))
---
> struct __declspec(uuid("787d47a3-020f-4b1f-912e-003523277942"))
311c311
< struct __declspec(uuid("d00de9f1-98eb-4cd9-8685-0ea4f283971f"))
---
> struct __declspec(uuid("0cab506a-1b4d-473f-9a8b-051277ae5603"))
modified on Friday, June 26, 2009 2:32 PM
|
|
|
|
|
Did you unregister the previous DLL and register the new one?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi Pallini,
Thank you for responding.
Yes, in fact I can unregister the old DLL, register the new DLL, try the test code and it will fail. I can then unregister the new DLL and register the old DLL and it will work fine.
Other ideas?
|
|
|
|
|
BeerFizz wrote: hresult=CLSIDFromProgID(OLESTR("TTExt.WebRes"), &clsid);
BeerFizz wrote: hresult = pCF->CreateInstance(NULL, __uuidof(_WebRes), (LPVOID *)&wr);
Have you done, using the debugger, a constistency check between clsid and __uuidof(_WebRes) ?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
|
Actually this picture shows that there is consistency.
Can you get an instance of the object via, for instance, OleView tool?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
Hey, wait a moment. The code snippet of tlh file you provided in your OP is relative to the old DLL. I hope you aren't using it.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
C.Palinni, you are a genius!!! That was the issue!
You know, at some point I had thought of that but obviously screwed it up. You would think that after the multitude of compiles I've done, registers and unregisters that at some point I would have lucked on the right combination.
Thank you so much for your help, it is very much appreaciated,
Best Regards
Phil
|
|
|
|
|
You're welcome.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I can not refresh the forms of my application when I execute the .exe file. Whether I click over my application then the screen seens to be frozen...same result if I do soemthing with another application like web browser...I've tried with refresh() and bringtofront() methods but it doesn't work.
I would really apreciate if someone could tell me how to keep the forms updated when it is running...
c u soon...
David
|
|
|
|
|
David21u2 wrote: I would really apreciate if someone could tell me how to keep the forms updated when it is running...
How did you initially populate them?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Hi,
Thanks a lot for your help...
My issue is the following...when I'm running the .exe file... any further action I do with the mouse, lets say open another application or even click over my application cause that the screen gets frozen...i've added refresh() and Bringtofront() methods but they only work whether I run the application from the Builder IDE...
tks in advance for your help...
dg
|
|
|
|
|
David21u2 wrote: ...cause that the screen gets frozen...
Instead of what? Is your application doing something at that point?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Yeah,
The application is a cellular networks simulator; some simulations are really heavy computationally speaking that the system I think is unable to refresh the graphical interface...but the curious thing is that only the app's screen gets frozen because the simulation itself keeps working properly; I've verified it because once the overall simulation process finishes then the application screen returns.
I've viewed some articles refering to threads but I have no idea how to use them...maybe there is another way !!
c u,
dg
|
|
|
|
|
David21u2 wrote: ...some simulations are really heavy computationally speaking that the system I think is unable to refresh the graphical interface...I've verified it because once the overall simulation process finishes then the application screen returns.
Put these computations into a worker thread.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|