|
hi,Saini
Thanks for your help. I use "this->ShowWindow(TRUE)" to make the checkbox show. But does hWnd have the function "EnableWindow()"??? It seems that it only has one variable...
|
|
|
|
|
Dear ATL people,
I have a maybe-newbie question, so sorry for that. I have a
CAtlExeModuleT (see code below) and want to adjust a sample that I
got. It started by creating a modal CAxDialogImpl object in the
PreMessageLoop of the CAtlExeModuleT. What I wanted to do is to make
the dialog modeless so that I can display additionally a CWindowImpl
(with the option to make it fullsceen later, to display jpegs).
So is it possible to create a CAxDialogImpl and a CWindowImpl which
both have the desktop as parent (giving NULL as first parameter in
the Create call)? Or do they have to be related to each other (forming
a chain of parent-child)? When I execute the code below the program
runs for short and then ends without displaying anything. I added
a Sleep(5000) after the window creation and the window was visible.
So it seems to be a matter of scope. But the dialog wasn't visible.
How could I get it work that the window AND the modeless dialog are
created correctly and do not go out of scope so that the event
handling works properly? Do I have to put them in PreMessageLoop
(I tried this, but the effect was the same; do I need
PreMessageLoop)? - I would prefer a solution with _tWinMain only to
get rid of the PreMessageLoop if possible.
Please help, I think it's not a hard problem for someone who has some
experience with the ATL. You would really help me greatly because I am
totally stuck despite two books on ATL and the web (I only found exam-
ples where they use the older CCom stuff with a main message loop in
_tWinMain and TranslateMessage(&msg) and DispatchMessage(&ms) into it)
but not how to use ATL windows in context of the CAtlExeModuleT like
I need in this case (ATL 8.0, Visual Studio 2005).
So with the hope on help I send you
Best regards,
Peter.
Here comes the code:
#include "stdafx.h"
#include "resource.h"
#include "mainDialog.h"
class CMyWindow : public CWindowImpl<CMyWindow>
{
public:
DECLARE_WND_CLASS("MyName")
BEGIN_MSG_MAP(CMyWindow)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
END_MSG_MAP()
LRESULT OnPaint(UINT nMsg, WPARAM wParam,
LPARAM lParam, BOOL& bHandled)
{
return 0;
}
};
class CSampleModule : public CAtlExeModuleT< CSampleModule >
{
public :
HRESULT PreMessageLoop(int nShowCmd)
{
HRESULT hr = CAtlExeModuleT<SampleModule>::PreMessageLoop(nShowCmd);
if (FAILED(hr))
return hr;
return S_FALSE;
}
};
CSampleModule _AtlModule;
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE ,
LPTSTR , int nShowCmd)
{
CMainDialog* mainDlg = new CMainDialog();
mainDlg->Create(NULL);
CMyWindow* myWnd = new CMyWindow();
myWnd->Create( 0, CWindow::rcDefault, "Image Test",
WS_OVERLAPPEDWINDOW, WS_EX_CLIENTEDGE );
if( !myWnd ) {
return FALSE;
}
myWnd->CenterWindow();
myWnd->ShowWindow( nShowCmd );
myWnd->UpdateWindow();
return _AtlModule.WinMain(nShowCmd);
}
|
|
|
|
|
Passing Cstring to BSTR gets truncated.The lengthy strings gets truncated.
CString str= "fjgdfldfkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"
add(_btsr_t(str.AllocString,false))
add(BSTR arg1)
{
}
I am passing in this maaner to a function which accepts BSTR , but the string gets truncated.
Thanks in Advance.
|
|
|
|
|
Why you are using _bstr_t ?
Modify code to,
CString str= "fjgdfldfkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"
BSTR bsStr = str.AllocSysString();
add(bsStr);
Prasad
MS MVP - VC++
|
|
|
|
|
I want to craete a custom right click context menu for Internet Explorer whenever the user takes the pointer over an image and right clicks. The custom menu context should have icons along with the text for menu items.
i want the code for the events fired on clicking menu items.
Please help me out.
Thanks In advance.
Dhiraj
Dhiraj Kumar Saini
|
|
|
|
|
|
The API AlphaBlend doesn't work in ATL owner-draw button.
why?
and how to implement the spark effect when pushed a button?
thx!!
C++, MFC, ATL, PHP
|
|
|
|
|
i want to add a new item menu whenever user right click a image file saved on hard disk. The right click context menu of windows explorer bar for the file should show a new item with the name upload to 123greeting and also want an event handler for it.
Make sure it should be for windows explorer and not for internet explorer.
pls help me out
Thanks in advance.
Dhiraj
Dhiraj Kumar Saini
|
|
|
|
|
|
Are you calling him a "complete idiot"?
Steve
|
|
|
|
|
Hello
I am working on a COM project in which i use Interface Inheritance.
The IDL file looks like this,
interface IEarthInterface : IUnknown
{};
interface IOceanInterface : IEarthInterface
{};
interface IPacificInterface : IOceanInterface
{};
interface IAntarticInterface : IOceanInterface
{};
interface IDataInterface : IUnknown
{};
interface IFindInterface : IDataInterface
{
HRESULT GetOceanTypeInterface(IOceanInterface** pOceanInterface);
};
From inside IFindInterface i need to figure out which Ocean is currently attached and then attach or typecast
it was IOceanInterface and send it back to client.
All i wanted to know is how to get a Interface pointer from inside another Interface.
ie, can i call CoCreateInstance or QueryInterface from inside IFindInterface and get the
Interface Pointer to IPacificInterface or IAntarticInterface.
I been already told that CoCreateInstance will not work in this case.
Any idea how to implement this?
Thanks in advance.
|
|
|
|
|
This should work:
<br />
IPacificInterface* pPacific = NULL;<br />
pOceanInterface->QueryInterface(NULL, IID_IPacificInterface, &pPacific);<br />
If this fails, try all other possible derived interfaces until a call to QueryInterface succeeds. This is pretty much like using dynamic_cast to determine the type of object by pointer or reference to base.
|
|
|
|
|
SCENARIO:
From a C++ ATL program I'm submitting database queries to an MSSQL 2000 system in the following formats:
Select * from dbo.table (returns a rowset)
Select * from dbo.table for xml auto (returns an XML stream)
Exec dbo.sproc ... (could return a rowset or an XML stream)
I can't tell before I execute the query whether it will return a rowset or an XML stream, however, after the query is executed I can determine which type of output was returned by checking the rowset's number of columns and first column name.
PROBLEM:
I now have the output in a rowset. This is fine if the output is a rowset, but, if its an XML stream I have a problem. How can I get the output from the rowset into a stream object AND have it properly translate the XML to a readable format?
-- modified at 11:17 Friday 24th August, 2007
The art of conversation is not only saying the right thing at the right time,
but to leave unsaid the wrong thing at a most tempting moment!
|
|
|
|
|
I want to get hwnd of IE main menu,and click one of the items,for example:View->Refresh,I write codes like this:
HWND hwndIE=::FindWindow(_T("IEFrame"),NULL);
HMENU appMenu=::GetMenu(hwndIE);
HMENU subMenu=::GetSubMenu(appMenu,1);
...
Everytime I got zero from subMenu,why?
|
|
|
|
|
It is because IE doesn't have a standard menu, but instead uses a Rebar band with menu in it. Sadly, there's hardly any way to retrieve IE's menu with GetMenu().
Instead, you may want to try using IE's automation interface. I haven't used it to get IE's menu, but it shouldn't be too difficult.
|
|
|
|
|
Dhiraj kumar Saini wrote: how to convert VT_DISPATCH into CString or VT_BSTR
They are not convertable, are they ?
The value returned is in form of VT_DISPATCH , then there must be some property of that interface(object), that might interests you.
Prasad
MS MVP - VC++
|
|
|
|
|
Good morning,
i derived a class CMyStatusBarCtrl from CWindowImpl<mycstatusbarctrl,cstatusbarctrl>
i re-define the create method (private) and i need also to derive the "SubclassWindow" method.
But i don't know from which parent-class i need to derive
For example CStatusBarCtrl::SubclassWindow doesn't exists
Big thanks for help
|
|
|
|
|
Use CWindowImpl::SubclassWindow. It is actually derived from CWindowImplBaseT.
|
|
|
|
|
I have developed an ActiveX control that I want to use on a web site. The general idea is that it won't be accessible from the main page, but rather from a popup window that can be opened from any of the pages on the site. I can open the popup, and the control works just fine. However, when I close the popup, and then close the original (parent) window, I get an exception.
From what I gather in my search on the Internet, an ActiveX control does not get (fully?) unloaded when closing the popup. It only gets unloaded when the first browser windows is closed. However, when closing this first browser window, the exception occurs since the ActiveX control has already been sort of "closed".
The exception occurs on an attempt at closing a socket, but the socket can't be found in the CAsyncSocket classes' socket handle map. Weird.
Some further information... I have nine classes (controls) in the ActiveX DLL. I am calling only one of them - the others are just support controls.
I'm not clear at all on what's going on. Has anybody ever experienced something like this before? I would greatly appreciate any ideas since I'm absolutely stuck at this point.
|
|
|
|
|
in following code:
CString s(_T("hello"));
std::wstringstream oss;
CSimpleStringT<wchar_t> ss = s;
oss << (CSimpleStringT<wchar_t>::PCXSTR) ss; //1
oss << ss; //2
both (1) and (2) use CSimpleString<T>::operator PCXSTR()
however,
(1) uses wstringstream::operator<< for const wchar_t *
(2) uses wstringstream::operator<< for const void *
Why?
Compiled on MSVC2005 with enabled unicode support
|
|
|
|
|
Hi,
I have created an ATL exe server which contains one interface. That interface contains one method. I passed an array of short from client side and is printing value of that array in server side. First value of array is correct but other values are worng. I find myself unable to get the reason.
Please Help.
Server Side
-----------
[
object,
uuid(40290173-0658-4414-9379-106D912396C2),
dual,
helpstring("IExeServer1 Interface"),
pointer_default(unique)
]
interface IExeServer1 : IDispatch
{
[id(1), helpstring("method Display")]HRESULT Display([in]short nCount, [in, size_is(nCount)] short *pnValue);
};
Server side Implementation
--------------------------
STDMETHODIMP CExeServer1::Display(short nCount, short *pnValue)
{
char szBuffer[20] = {0};
short int nCounter;
for(nCounter = 0; nCounter < nCount; nCounter++)
{
sprintf(szBuffer, "%d", pnValue[nCounter]);
MessageBox(NULL, szBuffer, "Message", MB_OK);
}
return(S_OK);
}
Client Side Implementation
--------------------------
HRESULT hResult;
IExeServer1 *pIExeServer = NULL;
int iCounter = 0;
short *pnValue = NULL;
::CoInitialize(NULL);
hResult = CoCreateInstance(CLSID_ExeServer1, NULL, CLSCTX_LOCAL_SERVER, __uuidof(IExeServer1), reinterpret_cast<void **="">(&pIExeServer));
if(SUCCEEDED(hResult))
{
pnValue = reinterpret_cast<short *="">(CoTaskMemAlloc(5 * sizeof(short)));
for(iCounter = 0; iCounter < 5; iCounter++)
{
pnValue[iCounter] = iCounter + 1;
}
pIExeServer->Display(5, pnValue);
CoTaskMemFree(pnValue);
pIExeServer->Release();
}
::CoUninitialize();
Thanks
Manish Rastogi
|
|
|
|
|
Hi AJAX xperts,
I have AJAX autocomplete Textbox, which is a user control. i am getting employee details into this text box. upon typing 3 chars it will fetch 20 records which matchs with the prefix text.
I modified _highligted function(item) in Autocomplete.js in order to store emp fullname in window.status .
upon mouse over on this list i need populate employee details like dept, empid, empmanager, empcost center
here is my autocomplese.asmx C# code :
public string[] GetCompletionList(string prefixText, int count)
{
if (count == 0)
{
count = 10;
}
string peopledata = ConnectionStrings.GetConnectionString("Peopledata");
using (SqlConnection ConnStr = new SqlConnection(peopledata))
{
ConnStr.Open();
SqlCommand sqlcmd = new SqlCommand("GetPeopleDetails", ConnStr);
sqlcmd.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText + "%";
sqlcmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
DataTable dt = new DataTable();
da.Fill(dt);
DataSet ds = new DataSet();
da.Fill(ds);
string[] items = new string[dt.Rows.Count];
int i = 0;
List<string> PeopleData = new List<string>();
foreach (DataRow dr in dt.Rows)
{
items.SetValue(dr["EmpFullName_MngrName"].ToString(), i);
PeopleData.Add(dr["NBKid"].ToString());
PeopleData.Add(dr["PersonNo"].ToString());
PeopleData.Add(dr["CostCenter"].ToString());
PeopleData.Add(dr["Hierarchy"].ToString());
i++;
}
//return PeopleData.ToArray();
return items;
}//end of sqlconnection
} //end of GetCompletionList
here is my java script code:
var obj;
function GetDataViaAJAX()
{
try
{
obj = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e1)
{
obj = null;
}
}
if(obj!=null)
{
obj.onreadystatechange = ProcessResponse;
obj.open("POST", "http://localhost/Autocomplete.asmx/GetEmployeeDetails");
obj.setRequestHeader("Host","localhost");
obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
obj.setRequestHeader("Content-Length","12");
obj.send("Name=" + document.getElementById("lblNamevalue").value);
}
return false;
}
function ProcessResponse()
{
if(obj.readyState == 4)
{
if(obj.status == 200)
{
var dsRoot=obj.responseXML.documentElement;
var ddlOrders = document.getElementById("ListBox1");
for (var count = ddlOrders.options.length-1; count >-1; count--)
{
ddlOrders.options[count] = null;
}
var orders = dsRoot.getElementsByTagName('orderid');
var text;
var listItem;
for (var count = 0; count < orders.length; count++)
{
text = (orders[count].textContent || orders[count].innerText || orders[count].text);
listItem = new Option(text, text, false, false);
ddlOrders.options[ddlOrders.length] = listItem;
}
}
else
{
alert("Error retrieving data!" + obj.status);
}
}
}
function SetValue()
{
var selectedvalue=document.getElementById("ListBox1").value;
document.getElementById("Hidden1").value=selectedvalue;
return true;
}
Can anyone help me on this plzzzz.......Is it possible to work this functionality with Autocomplete
regards,
Menon
|
|
|
|
|
I have a COM dll written using ATL. There is a interface named
"IVehicle". I want to derive 2 new interfaces from this, named
"IToyota" and "IHonda". How can i do that?
The purpose of doing this is that i should be able to use functions
inside both Base interface(IVehicle) from the drived new interfaces.
Thanks in advance.
|
|
|
|
|
[
uuid(XXXXXXXXXXXXXXXXXXXXXXXXXX),
helpstring("IToyota Interface")
]
interface iToyota : IVehicle
{};
Manish Rastogi
|
|
|
|
|
Hi,
What is the Difference between “vector” and “array”?
when to use which one?
Thanks
Nandu.
|
|
|
|
|