|
If you will always run on XP or later, use the built-in SysLink control. Otherwise, check out CHyperLink in WTL, or any of the other hyperlink controls in the previous posts.
|
|
|
|
|
My problem is that i want to open an instance of internet explorer on click of a context menu item with a certain URL. I have the event handler function for context menu item. I wan only the code for the above mentioned work to be inserted into it.
Thanks In Advance.
dhiraj
Dhiraj Kumar Saini
|
|
|
|
|
Hi,
ShellExecute(NULL,"open","www.codeproject.com",NULL,NULL,SW_SHOW);
should work
|
|
|
|
|
Thanks alot it worked.
Great man u r excellent!
Dhiraj
|
|
|
|
|
Might b code underneath will help u.
<br />
STARTUPINFO si;<br />
PROCESS_INFORMATION pi;<br />
si.cb = sizeof(si);<br />
ZeroMemory( &si, sizeof(si) );<br />
ZeroMemory( &pi, sizeof(pi) );<br />
TCHAR str[] = _T("IEXPLORE.EXE http:\\www.codeproject.com");<br />
CreateProcess(NULL,str,0,0,FALSE,0,0,0,&si,&pi);<br />
|
|
|
|
|
This would be bad - what if the user's default browser is firefox?
It's one of my pet peeves about programs like Live Messenger (though they're at least MS programs, so a bias is understandable)
Iain.
|
|
|
|
|
I wonder if somebody could remind me the method of defining a struct where you can set the bits of a member directly, without using the bitwise OR or bitshift operators. ie. I have a struct with 2 members
struct foo
{
BYTE Repaint;
BYTE Offset;
};
The offset member requires only 4 bits, and the repaint only 1. Idealy they could be combined so that the Repaint member uses the high order bit of the same BYTE. I remember seeing a way to do this, possibly using a union, but I cannot remember how or where I saw it.
Waldermort
|
|
|
|
|
Add the number of bits after the member names:
struct foo
{
BYTE Repaint:1;
BYTE Offset:4;
};
|
|
|
|
|
Thanks Mike, that's exactly what I was looking for. Can't think why I thought a union had something to do with it, possibly one of MS's wierd structs...
Waldermort
|
|
|
|
|
There is usefulness in using a union as well.
Below is a code snippet from my software:
union __ChannelsOn
{
BYTE Mask;
struct {
BYTE On1 : 1;
BYTE On2 : 1;
BYTE On3 : 1;
BYTE On4 : 1;
BYTE OnTOF : 1;
BYTE Unused : 1;
BYTE MasterOn: 1;
BYTE ScanOn : 1;
} Bits;
} ChannelsOn;
This is mirroring a register in some hardware I talk to. I can set the variable by twiddling individual bits: ChannelsOn.Bits.MasterOn = 1<code>, and also use it as a whole byte... <code>SendStuffToHardware (...., ChannelsOn.Mask, ....);
So, while its not a linked language construct, it's often handy.
Unions can also be usedto ensure the overall variable ends up the correct size.
Iain.
|
|
|
|
|
I am having trouble understanding what it is your trying to accomplish, however I believe you want to manipulate the bits in these bytes indirectly without accessing struct members, although I can't imagine why you would want to do this. Perhaps you have a high performance application and are attempting to shave off a few operations in a critical function.
If speed is your goal, then you should work with the fastest datatype on a 32 bit operating system, sizeof(int). On a modern Intel Core 2 Duo the following function is the fastest, you should define bit masks in your application. The function does not generate any branching op codes, quite fast.
unsigned int bitset(unsigned int bits,unsigned int mask,bool flag)
{
bits = (bits & ~mask) | (-flag & mask);
}
Best Wishes,
-Randor (David Delaune)
|
|
|
|
|
void CDisplayBody::OnNavigateComplete2(LPCTSTR strURL)<br />
{ <br />
CString pszText="<html><head><body>Hi How r u</body></head></html>";<br />
if (GetBusy())
Stop(); <br />
<br />
IDispatch * pDisp = GetHtmlDocument();<br />
if (!pDisp)<br />
return;<br />
<br />
IHTMLDocument2* pDoc;<br />
if (SUCCEEDED(pDisp->QueryInterface( IID_IHTMLDocument2, (void**)&pDoc )))<br />
{<br />
CComBSTR bstrURL;<br />
CComVariant varDummy;<br />
pDoc->open(bstrURL, varDummy, varDummy, varDummy, NULL);<br />
<br />
SAFEARRAY *pSA;<br />
SAFEARRAYBOUND saBound = {1, 0};<br />
pSA = SafeArrayCreate(VT_VARIANT, 1, &saBound);<br />
<br />
VARIANT *pVar;<br />
CComBSTR bstrHTML = pszText;
varDummy = bstrHTML;
<br />
SafeArrayAccessData(pSA, (void**)&pVar);
pVar[0] = varDummy;
SafeArrayUnaccessData(pSA);
<br />
pDoc->write(pSA);
pDoc->close();
<br />
SafeArrayDestroy(pSA);
pDoc->Release();
<br />
}<br />
<br />
}<br />
This code is to display html in html view But the statement (IDispatch * pDisp = GetHtmlDocument();)return Null .Why ? plz help
|
|
|
|
|
Where do you use of strURL and do you want to show a html file?
|
|
|
|
|
hi every one
i wrote one mfc project and called StartService Api .
it work in windows xp correctly but in vista this Api returned 0;
please help me.
|
|
|
|
|
Did you use of GetLastError for see error information?
|
|
|
|
|
hi ,
first tell me did u start u r service under system or admin. context. i think if u start under admin context then in vista u need to give Manifest.
|
|
|
|
|
thanks of my dear friends
i fined my problem.it was in registery .
when i deleted some key in Windows registry ,my program worked correctly.
Good Luck
|
|
|
|
|
hi every one
whats the means of \\\\.\\ in path?
current directory or system directory?
please help me.
|
|
|
|
|
\\.\ is used when opening a device or device driver on the local computer. The dot is used in place of a computer name.
|
|
|
|
|
thanks dear Michal
in all windows?
(vista????)
|
|
|
|
|
|
Hello Friends.
I am Using RegEnumValue() to Obtain the Names of the Values in the Specified Registry. But Its Not Working correctly. I dont know where I am doing the mistake. According to me the code is perfectly OK. But see if u can Find any Bug and can HELP me.
When I debug the Following in Code it just Show me the Last Value Name int he Registry MyApplication while there is eight Values. I get Other Values as Empty String.(String Values).
HKEY hKey;<br />
DWORD dValue;<br />
RegOpenKey(HKEY_CURRENT_USER,L"Software\\MyApplication",&hKey);<br />
RegQueryInfoKey(hKey,NULL,NULL,NULL,NULL,NULL,NULL,&dValue,0,0,0,0);<br />
for(int i=0;i<dValue;i++)<br />
{<br />
RegEnumValue(hKey,i+0,ValueName,&size,0,0,0,0);<br />
SendMessage(hCombo,CB_ADDSTRING,(WPARAM)0,(LPARAM)ValueName);<br />
}
|
|
|
|
|
The 4th parameter to RegEnumValue() ?
lpcValueName [in/out] should be the size of the buffer before the call, after the call its the number of characters returned, being in a for loop you should be setting that before the call everytime.
|
|
|
|
|
Thnx a lot for Your Help. Now Its Woking Correctly.
|
|
|
|
|
I have a PE file a.exe, I hope that during a.exe is running, it can write some bytes to a.exe's .rdata block. If you have any idea helpful to me, please tell me, thanks a lot.
|
|
|
|