Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
OK, I recently had a really hard time getting and setting the properties of an ActiveX control in C++. I'm just writing a quick post on how this works because I had a heck of a time finding the right resources for this. What I had done was dragged and dropped a control from the toolbox onto a dialog application. After dropping the component onto the application, I wanted, inside of code and not within the resource editor, to alter a few of the properties for the control. For some ungodly reason, in C++, the project wizard does not create a reference to the ActiveX control to enable programmers to easily call methods on the control. What I had to do was the following:
1.) Get a client reference to the control that you will be getting/setting properties on.
CComPtr<IInkPicture> ip;
ip.CoCreateInstance(CLSID_InkPicture);
2.) Now, use that control to retrieve the DISPID for the property you will be getting/setting.
// for dispid retrieval
DISPID dispid = 0;
OLECHAR FAR* szMember = OLESTR("EditingMode");
ip->GetIDsOfNames(IID_IInkPicture, &szMember, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
3.) Retrieve the CWnd (Control Window) for the control by using its control identifier (right-clicking the control in your dialog editor will get you to its properties).
CWnd* pInkWnd = NULL;
pInkWnd = this->GetDlgItem(IDC_INKPICTURE1);
4.) Set the property. Note that you must pass the property type in the second parameter for CWnd::SetProperty. The types of properties are in the remarks for the COleDispatchDriver::InvokeHelper function on MSDN.
// I'm assuming that using a short for setting the property will work fine here
pInkWnd->SetProperty(dispid, VT_I2, mode);
ip.Release();
There you have it. Getting and setting properties in dialog applications built using MFC.
Comments
- Anonymous
June 18, 2008
PingBack from http://wordnew.acne-reveiw.info/?p=188