|
Hi,
Static librarys eh.
Well,
1. Nothing. It's the user of your library that will have the problem ). So if your libray, LibraryA uses something from LibraryB, then its your client EXE that will have to link to both LibraryA and LibraryB. Pain eh. Especially if the library you are using is not your own.
2. Yes. Unfortuantly if you put something like
class CDerived : public CBase
{
}
in a header file that is part of your library, the user of your library will also need access to the .H for CBase to compile it.
Unlike DLL's - you can't say export some of CDerived's methods, but none of CBase's.
|
|
|
|
|
Can someone tell me how to capture key presses when they are being entered into a Text box.
I did add the ON_WM_KEYUP and OM_WM_KEYDOWN messages but breakpoints in there procedures (OnkeyDown etc) were never reached.
|
|
|
|
|
Hi Sweep,
One way is to use PreTranslateMessage virtual function, e.g.
BOOL CMyWindow::PreTranslateMessage(MSG* pMsg)
{
BOOL bEatMe = FALSE;
if (pMsg && pMsg->message == WM_KEYDOWN && pMsg->hwnd == m_edit1.GetSafeHwnd())
{
BOOL bShift = (GetKeyState(VK_SHIFT) < 0);
BOOL bCtrl = (GetKeyState(VK_CONTROL) < 0);
BOOL bAlt = (pMsg->message == WM_SYSKEYDOWN);
bEatMe = FALSE;
}
return (bEatMe) ? TRUE:CDialog::PreTranslateMessage(pMsg);
}
If you are trying to do clever things, my advice would be to create a class (derived from CEdit) and use this in your views/dialogs.
Hope this helps,
Andy
|
|
|
|
|
Depends what you want to capture.
If your only intrested in 0 > 9, a > z, A > Z plus a few others like VK_RETURN, VK_ESCAPE etc - the easist way is to add a ON_WM_CHAR handler to your text box class. Anything that has its WM_KEYUP/WM_KEYDOWN translated to a WM_CHAR will be caught this way.
Though - your ON_WM_KEYUP/DOWN handlers should work. Is this text box part of a dialog? Is it being subclased correctly, probably via a DDX_Control?
|
|
|
|
|
The Edit box has not been sub-classed, I assume I need to do that to get the WM_KEYUP/WM_KEYDOWN working.
I just ant to trap the Tab and Return keys.
|
|
|
|
|
lol. Would be them two wouldn't it.
Well, your KEYUP/DOWN handler will and should work for all other keys.
Not however, Tab and return, which are dialog box navigation keys. The system handles these in a different way
"The WM_GETDLGCODE message is sent to the window procedure associated with a control. By default, the system handles all keyboard input to the control; the system interprets certain types of keyboard input as dialog box navigation keys. To override this default behavior, the control can respond to the WM_GETDLGCODE message to indicate the types of input it wants to process itself."
In other words, you'll never get a KEYUP/DOWN for Tab/return as you get a WM_GETDLGCODE which returns DLGC_DEFPUSHBUTTON/DLGC_WANTTAB depending
|
|
|
|
|
So what about Andy's solution of using PreTranslateMessage, would that work?
Or I am stuck!?!
|
|
|
|
|
What they are trying to say is some other alternatives are error prone, subclass your CEdit is better like this article
http://www.codeproject.com/editctrl/NumEditCtl.asp
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
The solution Andy Q gave you should work with tab and enter keys. I used a similar technique to trap Enter key in a form view.
<br />
BOOL CMyFormView::PreTranslateMessage(MSG* pMsg) <br />
{<br />
if(pMsg->message==WM_KEYDOWN) <br />
{ <br />
if(pMsg->wParam == 0x0d)
{<br />
return TRUE;<br />
}<br />
else if(pMsg->wParam == 0x1b)
{<br />
return TRUE;<br />
}<br />
} <br />
<br />
return CFormView::PreTranslateMessage(pMsg); <br />
}<br />
|
|
|
|
|
For example, I want to launch the below file
C:\Windows\Tasks\Low Battery Alarm Program.job
What function can I use to launch the file in VC++ ?
|
|
|
|
|
Can it be executed by just double clicking on it?
If can, you can use ShellExecute(...) to start it, I think.
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
Hi,
Through my Windows service i want to create a COM control under some specific user credentials.Do achive this i am doing following set of activities.
a)Calling impesonation API
b)Laoding user profile,environment vaiables for impersonated account
c)Creating a browser control
d)Setting a authentication information that will be used to make calls on
the browser control using CoSetProxyBlanket() API
Even after following above steps, control is getting created under SYSTEM user account.Do need to use to do anything extra like setting DACL?.
What could be the problem?.
thanx in advance.
Here with i am attaching the code
//***************************************
HANDLE hProcToken;
IWebBrowser2 *g_WebBrowser2;
LPSTREAM g_lpStream;
void InitialiseControl()
{
if (!LogonUser( szUserName,
szDomain,
szPassword,
LOGON32_LOGON_NETWORK,
LOGON32_PROVIDER_DEFAULT,
&m_hToken))
{
if (ImpersonateLoggedOnUser(m_hToken))
{
//I am loading user profile,environment vaiables for impersonated
//account and setting WindowStation/Desktop to "winStat0/Desktop"
CoInitialize(NULL);
//Create IBrowserControl instance
HRESULT hr = CoCreateInstance( CLSID_InternetExplorer,NULL,
CLSCTX_INPROC_SERVER,IID_IWebBrowser2,
(void**)&g_WebBrowser2 );
hr = CoSetProxyBlanket(g_WebBrowser2,RPC_C_AUTHN_WINNT,
RPC_C_AUTHZ_NONE, NULL,
RPC_C_AUTHN_LEVEL_DEFAULT,
RPC_C_IMP_LEVEL_IMPERSONATE, // Allow impersonation
NULL,EOAC_DYNAMIC_CLOAKING);
//Marshal interface pointer as browser control is single threaded control
hr = CoMarshalInterThreadInterfaceInStream(
IWebBrowser2 ,g_WebBrowser2,
&g_lpStream );
}
}
} //End Of InitialiseControl
//This method loads HTML page and prints to default printer,this method is called from seperate thread
void Print( char* l_strFileName )
{
if (ImpersonateLoggedOnUser(m_hToken))
{
COleVariant vaURL( l_strFileName );
COleVariant noArg;
CoInitialize(NULL);
//Unmarshal interface pointer
hr = CoGetInterfaceAndReleaseStream( (IStream*)g_lpStream,
IID_IWebBrowser2,(void**)&g_WebBrowser2 );
hr = g_WebBrowser2->Navigate2(vaURL,&noArg,&noArg,
&noArg,&noArg);
//Wait till document gets loaded completely
hr = g_WebBrowser2->ExecWB (OLECMDID_PRINT,
OLECMDEXECOPT_DONTPROMPTUSER
,&noArg,&noArg);
}
}
|
|
|
|
|
The COM register utility allow you to activate activeX or COM server based on user. Normal regsvr32 can't do that but this one can.
You have to thank Rama Krishna for his wonderful article.
http://www.codeproject.com/w2k/regsvrex.asp
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
Hi all,
I am a Beginner in Vc++. I made some dialoge box which includes Three Command button, namely OK,Cancel any Apply.
I want to do operation like Enable/Disable on Apply Button.
So,Please provide me some idea to this work.
Regards
Rajesh
rajesh
|
|
|
|
|
this is the code for want you want about Apply Button
note:IDC_Apply is the id of your Apply Button
CButton* ApplyButton ;
ApplyButton =(CButton*)GetDlgItem(IDC_Apply);
ApplyButton->EnableWindow(false);
ApplyButton->EnableWindow(true);
|
|
|
|
|
Hmmmm
One small thing - EnableWindow takes a BOOL, not a bool.
EnableWindow(false) is not the same as EnableWindow(FALSE) which is what it should be.
Other thing, the 'ApplyButton=(CButton*)GetDlgItem' works only because of MFC. Most people, including me, are gulity of doing it this way - but the recomened MFC way (if you dont belive me, read MSDN) is actually like this.
CButton but;
but.Attach(GetDlgItem(IDC_Apply)->GetSafeHwnd());
but.EnableWindow(FALSE);
but.Detach();
More code I know, but your not relying on the evils of non RTTI-safe downcasting.
|
|
|
|
|
the function EnableWindow allow you to do that.
you can find it in one of the base classes of your control (here, a CButton) : Cwnd
BOOL Cwnd::EnableWindow(BOOL bEnable = TRUE);
<font style="color:green;">
TOXCCT >>> GEII power
|
|
|
|
|
I need some help designing a UI which supports both compact as well as full mode. Any ideas or articles written about this will be greatly appreciated. Also since i have a time constraints which language should i go for. Can code in VB,VC and C# but am not a UI guru.
|
|
|
|
|
FASTian wrote:
I need some help designing a UI which supports both compact as well as full mode.
What do you mean by "compact" and "full" mode?
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
what i mean by compact mode is that while in compact mode we only show a limited UI meaning that it shows only neccessary values whereas full mode means that i might want to show graphs and other UI related material which is only adds on to the application.
|
|
|
|
|
Here are two different ways:
http://www.codeproject.com/dialog/dlgboxtricks.asp (see section titled Expanding and Contracting your dialog boxes)
http://www.codeproject.com/dialog/dlgexpand.asp
I prefer the latter.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
thanks for the help
|
|
|
|
|
hi.
any one have Network programming (Microsoft Press)in VC++ soft copy ... other help abut it..
thanx
|
|
|
|
|
Yes, and before you ask, you'll need to go and buy it, as it does not come with an MSDN style electronic copy of the book on CD.
|
|
|
|
|
Giles wrote:
it does not come with an MSDN style electronic copy of the book on CD
Network Programming in Microsoft Windows is available as a soft copy (CHM). I have it... It is about 2.2 MB
- Nirav
* Don't wish it was easier, wish you were better! *
|
|
|
|