|
toxcct wrote: isn't what a CResultset made for ?
DataTables are made for. (Un)fortunately they belongs to the managed realm.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
I have 3 combo boxes in my application. and this 3 combo boxws indicate opening a folder and logging the data. the existing system is like whenever the appliaction is opened, it starts loggin in the data. i dont want to do that. now what i want to do is when i check one of the check box it should start loggin in in one folder and it has to be done during runtime. what can be done for this?
|
|
|
|
|
And what is the problem, aren't you able to handle check boxes events?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
i am sorry for not completing the query. i am initiating a socket. when i enable the socket a message gets passed to a folder. this is already there in the application. now i need to log this message whenever i need. for this i am using a check box. if i click the check box the message should get logged in. if i dont check the check box the message should not get logged in. and i should be able to do this when the socket is on. i need to know how can it be done. i hope the problem is clear now.
|
|
|
|
|
In fact the scenario is clear now. But I still don't know
(1) How the logging (and reading) is actually performed by the code (e.g. have you threads, what object manages logging, and so on)
(2) What is your difficulty.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
cool... its a button which helps to activate the socket and the same way to deactivate the socket. so when its activated and deacticated it will send a message. and its gets logged into a folder. i want to do it dynamically...
i am not being able to loggin the data to the folder.
|
|
|
|
|
I think you'll need to post some code.
Anyway, why don't you bind the logging message to the checkbox (removing it from the socket activation routine)?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
i can try that. and will put some piece of code also.
|
|
|
|
|
Hi,
i have subclassed one comboobox in my application using the following code
<br />
LONG FAR PASCAL SubClassFunc(HWND hWnd, UINT Message, WPARAM wParam, LONG lParam);<br />
FARPROC lpfnOldWndProc;<br />
<br />
BOOL NcClass::OnInitDialog() <br />
{<br />
cbi.cbSize = sizeof(COMBOBOXINFO);<br />
GetComboBoxInfo(m_SignalsLabel_ctl.m_hWnd, &cbi);<br />
pfnOldWndProc = (FARPROC)SetWindowLong(cbi.hwndItem, GWL_WNDPROC, (DWORD)SubClassFunc);<br />
return TRUE;<br />
}<br />
<br />
LONG FAR PASCAL SubClassFunc(HWND hWnd, UINT Message, WPARAM wParam, LONG lParam)<br />
{<br />
if(Message == WM_KEYDOWN)<br />
{<br />
if(wParam == VK_TAB)<br />
{<br />
HWND hChild, hParent;<br />
hParent = ::GetParent(hWnd);<br />
hChild = ::GetWindow(hParent, GW_HWNDNEXT);<br />
::SetFocus(hChild);<br />
}<br />
}<br />
<br />
if( Message == WM_GETDLGCODE )<br />
return DLGC_WANTTAB;<br />
<br />
<br />
return CallWindowProc(WNDPROC(lpfnOldWndProc), hWnd, Message, wParam, lParam);<br />
}<br />
Even though i am calling CallWindowProc()from my window procedure, mouse click and other thing are not woking for the combobox which i have subclassed and application is having some effect on other comboboxes also.
I have also tried by commenting the whole code of SubClassFunc() except the last line, but still the behaviour of application is same.
My problem is that i can't create seperate class for the combobox.
Thanks.
|
|
|
|
|
You mean even if the code is just as below, it is not working?
LONG FAR PASCAL SubClassFunc(HWND hWnd, UINT Message, WPARAM wParam, LONG lParam)
{
return CallWindowProc(WNDPROC(lpfnOldWndProc), hWnd, Message, wParam, lParam);
}
Are your sure that you need to subclass the edit control in the combobox?
If yes, are you sure that the combobox is having dropdown style (having edit box inside)?
|
|
|
|
|
Yes, it is of DropDown style only and i am doing all this just to move the focus. For other combobox of style DropList type the tab key is working fine.
I am sending message from some other class to the dialog containing the combobox to set the focus.
Thanks
|
|
|
|
|
ashtwin wrote: I am sending message from some other class to the dialog containing the combobox to set the focus.
How are you sending the message? Code fragment will be helpful.
|
|
|
|
|
Hi, from the function below i am sending the message.
<br />
BOOL MyBaseClass::PreTranslateMessage(MSG *pMsg)<br />
{<br />
HWND hParent, hChild;<br />
if(::FindWindow(NULL, _T("My Dialog")))<br />
{<br />
if(pMsg->message == WM_KEYDOWN)<br />
{<br />
if(pMsg->wParam == VK_TAB)<br />
{<br />
hChild = ::GetFocus();<br />
hParent = ::GetParent(hChild);<br />
::PostMessage(hParent, WM_MYMESSAGE, 0, 0); <br />
}<br />
}<br />
<br />
}<br />
return MyBaseClass::PreTranslateMessage(pMsg);<br />
}<br />
I am doing this because due to some reasons the keyboard messages are going to the above function.
MyBaseclass is the class from the child class of whom i am creating the modeless dialog.
modified on Monday, January 07, 2008 8:31:43 AM
|
|
|
|
|
First of all, are you missing the call to base class's PreTranslateMessage ?
PS:
The following should be noted.
if(::FindWindow(NULL, _T("My Dialog")))
{
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam == VK_TAB)
{
is not good. Change as follows...
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam == VK_TAB)
{
if(::FindWindow(NULL, _T("My Dialog")))
{
|
|
|
|
|
Ok, thanks i will change my code as u have suggested. But i am calling the base class PreTranslateMessage.
Thanks
|
|
|
|
|
ashtwin wrote: return MyBaseClass::PreTranslateMessage(pMsg);
OK...
ashtwin wrote: ::PostMessage(hParent, WM_MYMESSAGE, /*pMsg->wParam*/0, /*pMsg->lParam*/0);
I think this WM_MYMESSAGE is WM_USER + nonzero message, right? If so what is the exact value?
Or it a registered message?
Also did you tried by excluding the subclassing done in the InitDialog, but keeping this MyBaseClass::PreTranslateMessage function as now?
|
|
|
|
|
The value of MyMessage is WM_USER+1 and it is working fine for other controls.
Without subclassing also io have tried but the message is getting lost somewhere because the focus is on the editbox of combobox and not on combobox.
Thanks
|
|
|
|
|
One thing I noticed just now...
<blockquote class="FQ"><div class="FQA">ashtwin wrote:</div>hChild = ::GetFocus();
hParent = ::GetParent(hChild);
::PostMessage(hParent, WM_MYMESSAGE, /*pMsg->wParam*/0, /*pMsg->lParam*/0); </blockquote>
So the parent is the combobox itself, and the message is posted to it. So this message is going to be received by combobox, not the parent of the combobox. Is it expected?
What is happening exactly with the subclassing?
|
|
|
|
|
No it is not expected, i want to send the message to the parent dialog and not to the combobox. Because in dialog class i am setting the focus to the next control after receiving the message i.e why i have done subclassing for combobox.
But after doing subclassing mouse clicks and other things are not working for combobox and even it is effecting other comboboxes also(eg they are appearing as disabled untill i am cliking the mouse on them).
Thanks
|
|
|
|
|
So you should check whether it is the correct control or not. You can check control ID since you have to do it in only one control. Calling ::GetMenu( hWndCombo ) will give you the ID, provided hWndCombo is the handle to the combobox obtained by calling GetParent( hWndEdit ). You should only change the focus if the control ID is of the specified combo.
|
|
|
|
|
Hi,
now after doing the following changes the application is working fine but still i don't know about the problem with subclassing.
<br />
BOOL MyBaseClass::PreTranslateMessage(MSG *pMsg)<br />
{<br />
if(::FindWindow(NULL, _T("Temporary Catheter Connections")))<br />
{<br />
if(pMsg->message == WM_KEYDOWN)<br />
{<br />
if(pMsg->wParam == VK_TAB)<br />
{<br />
COMBOBOXINFO cbi;<br />
hChild = ::GetFocus();<br />
hParent = ::GetParent(hChild);<br />
cbi.cbSize = sizeof(COMBOBOXINFO);<br />
if(GetComboBoxInfo(hParent, &cbi))<br />
{<br />
hParent = ::GetParent(hParent);
}<br />
::PostMessage(hParent, WM_MYMESSAGE, 0, 0);<br />
}<br />
}<br />
}<br />
return BaseClass::PreTranslateMessage(pMsg);<br />
} <br />
<br />
Thanks
|
|
|
|
|
OK...
Please confirm my understanding.
You need to change the focus to the next control when the focus is set to combo using Tab key.
Am I right?
|
|
|
|
|
Yes, u r right.
Thanks
|
|
|
|
|
Then removing the WS_TABSTOP property wasn't enough?
|
|
|
|
|
I want the focus on combobox also, when user presses the tab key on the control previous to the ComboBox. So, problem was that if the focus is on Combobox and user presses the tab key, then it should move to the next control.
Thanks
|
|
|
|