|
A simple example of what you are trying to do can be found in the EnumWindows function.
BOOL EnumWindows(
WNDENUMPROC lpEnumFunc,
LPARAM lParam
);
lpEnumFunc is the function passed in that is of type WNDENUMPROC, which is defined
typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
An example of a function of this type is
BOOL CALLBACK EnumWindowsProc(
HWND hwnd,
LPARAM lParam
);
So - define
typedef int (CALLBACK* MYFUNCTION)(int, int);
and then
BOOL CALLBACK function1(int x, iny y)
{
);
BOOL function2 (int a, int b, MYFUNCTION lpFunction)
{
return (lpFunction(a,b)>0);
}
BOOL bVar = function2(10,20, function1);
Note that callback functions like function1 must be static member functions, or globals.
Disclaimer: this is all off the top of my head - excuse any mistakes
|
|
|
|
|
Hi,
How can I get all locales which is installed on my computer?
I think that I have to use EnumSystemLocales function, but what further more?
I need quick help...
Thank you beforehand...
Tesic Goran
|
|
|
|
|
I used the CDC::DrawDragRect in the OnMouseMove method and it generates the drag rectangle corectly only when moving from topleft to bottom right and all other directions result in the last rect not being erased ... what should be added for each mouse movement direction so that the drawdragrect functions normaly ?
|
|
|
|
|
It is advised to pass normalized rectangles to DrawDragRect() - call rect.NormalizeRect();
|
|
|
|
|
I'm a novice using VC++6 and speaking and writting english too, so excuse me if I ask something too easy or in an incorrect way.
I would like to print more than one page using MFC, and when I've detected the end of the current page I don't know how to tell VC++ that must begin another one.
Thank you in advance JCpp.
|
|
|
|
|
You must set up CPrintInfo Class. It has a Method
called SetMaxPage that would set up the number of pages you want to print.
Then you can use the following loop to print
CDC dc; // Printer dc obtained from Print Dialog
CPrintInfo info; // Printer info class
For(page=Info.GetMinPage();page
|
|
|
|
|
i've got a very special problem. i created a global variable. the variable contains an array of an other object. that object contains only three pointers to other objects. they are initialized with 0.
the problem is:
the array can't be bigger than 213. why is that, and how can i solve this?
thx
|
|
|
|
|
Hi,
when i create a new document the new child window is shown in its original size; i want to
resize it to its maximum. How can i do that?
My problem is that i don't know how to get access to the new child window.
I have tried to resize all available views in CDocument::OnNewDocument() with ShowWindow(...), but this didn't work.
Any help?
Thanks,
Chris
|
|
|
|
|
|
In CChildFrame::OnCreate() send message WM_SYSCOMMAND with wParam=SC_MAXIMIZE
|
|
|
|
|
Perfect! Thanx
|
|
|
|
|
I've developed an NT Service and implemented event messages that are logged as application messages. The message compiler builds the .RC file and the .BIN file for me. The .RC file is compiled into the .RES file for the service. After I install and run the service, however when I look into the event log, I discover that while the differents events have been logged, the message assoicated with them is not available as part of the 'Details' of the event. I suspect that the .BIN file has to go somewhere, but I don't where. Anybody have a thought of what to look at?
Thanks.
Chris
|
|
|
|
|
You need to create an registry entry with the appname you use in the call to register the message.
HKEY_CURRENT_MACHINE(?)\SYSTEM\CurrentControlSet\Services \Eventlog\Application\myprog (i think)
The myprog subkey will contain several entries, one of which is the path to the file containing the resource format strings associated with the messages you are writing. In your case, this would be your service, but it could also be (and often is) a separate resource DLL.
When you invoke details on a message in the event viewer, it looks in the myprog key and tries to find the resource file specified so it can format the message for view.
There's an article on "EventLog Service Entries" in the MDSN that helps a bit - check the other reg entries to get an idea of what is needed.
|
|
|
|
|
The .BIN and .RC file from the message compiler end up being produced in the project directory. The need to be there so the resource compiler can find them. However after the service is installed, for some reason the event viewer, needs to find the .BIN file in the same directory as where the service has been registered. Once a put a copy there, all works fine. I've added a post build command to copy the .BIN files to the appropriate directory and I can forget all about it.
HTH somebody else!
Chris
|
|
|
|
|
I've found, that putting the binary messages into a dummy DLL works fine. All you do is create a dummy DLL, edit the Registry key for EventLog\Application to point at your DLL and it should work.
Just a suggestion.
Matthias
p.s.: I'm currently writing a simple tutorial "A total idiots guide to the Event Log". I will be posting it till the end of the week. So if you are patient enough...
|
|
|
|
|
HI,
I am using the following in MFC to ensure WebBrowser control on a dialog
will not run scripts etc...
BOOL CMainDlg::OnAmbientProperty(COleControlSite* pSite, DISPID dispid,
VARIANT*
pvar)
{
if (dispid == DISPID_AMBIENT_DLCONTROL)
{
// What should be enabled?
V_VT(pvar) = VT_I4;
V_I4(pvar) = DLCTL_DLIMAGES | DLCTL_NO_JAVA | DLCTL_NO_SCRIPTS |
DLCTL_NO_DLACTIVEXCTLS | DLCTL_NO_RUNACTIVEXCTLS | DLCTL_SILENT ;
return TRUE;
}
else
return CWnd::OnAmbientProperty(pSite, dispid, pvar);
}
How do i handle OnAmbientProperty for Dialog in WTL...?
note that i use the DDX macro to get the hwnd ,i didnot use CreateControl.
Thanks
tomer
|
|
|
|
|
How do i stretch blit a bitmap in the source DC to a destination DC ? As i see it the destination DC has to have a bitmap selected into it and when i stretchblt the source DC to the dest DC only the part where the selected bitmap of the dest DC exists can be overwritten by the stretched source DC and the remaining of the stretched source DC isn't visible.
|
|
|
|
|
Hi Harry,
maybe this code can help you a bit...
SetStretchBltMode(*pDC,COLORONCOLOR);
BITMAPINFOHEADER bmi;
memset(&bmi,0,sizeof(bmi));
bmi.biSize=sizeof(bmi);
bmi.biWidth=pDoc->m_nDataWidth;
bmi.biHeight=-pDoc->m_nDataHeight; // note the negative sign
bmi.biPlanes=1;
bmi.biBitCount=32;
bmi.biCompression=BI_RGB;
StretchDIBits(*pDC,
0, 0,
nWidth, nHeight, // dest
0,0,bmi.biWidth,-bmi.biHeight, // src; again note the negative sign
pDoc->m_pdwData,(BITMAPINFO*)&bmi, // Pointer to the bitmap data
DIB_RGB_COLORS, SRCCOPY);
Chris
|
|
|
|
|
Recently a simple typo produced "a -+ b". It compiled OK in VC6 Level 3. Why? What does this weird sytax mean?
|
|
|
|
|
The + is a unary operator and associates with b. So it's the same as a - (+b)
|
|
|
|
|
CODE:
LPCTSTR pszLicenseKey = "1410[Digisoft]888015934085437";
CComPtr<iclassfactory2>pICF2;
HRESULT hr1 = CoGetClassObject(__uuidof(ProxyGW),CLSCTX_INPROC_SERVER,NULL,IID_IClassFactory2,(void**)&pICF2);
if(FAILED(hr1))
{
CString strMsg;
strMsg.Format("Error (%X) creating ProxyGW", hr1);
AfxMessageBox(strMsg);
return false;
}
hr1 = CoGetClassObject(__uuidof(ProxyGW),CLSCTX_INPROC_SERVER,NULL,IID_IClassFactory2,(void**)&pICF2);
IProxyGW *pUIRaw;
pICF2->CreateLicenseLic(NULL,NULL,__uuidof(ProxyGW),_bstr_t(pszLicenseKey),(void**)&pUIRaw);
ERROR MESSAGE is this:
D:\tsadmin\HostInfoList.cpp(66) : error C2039: 'CreateLicenseLic' : is not a member of '_NoAddRefReleaseOnCComPtr<struct iclassfactory2="">'
|
|
|
|
|
In the COM Declaration Use DECLARE_CLASSFACTORY2(THE_LIC_CLASS)
Cheers
|
|
|
|
|
http://www.autodidact.co.il/
|
|
|
|
|
Too bad I can't read a word of it Is there an English translation in store for it?
|
|
|
|
|
http://www.autodidact.co.il/
|
|
|
|