|
It's much easier for you to just send a LVM_SETCOLUMNWIDTH message to the control, passing the column number as the first parameter, and LVSCW_AUTOSIZE_USEHEADER as the second (see MSDN). But, in answer to your question, it doesn't matter - scrollbars are generally part of the non-client area of a window, so you can just call GetClientRect() to get the width sans scrollbars (and borders, etc...).
If neither of these works for you, i have some code around somewhere for doing this sort of thing - let me know.
Shog9
I'm not the Jack of Diamonds... I'm not the six of spades.
I don't know what you thought; I'm not your astronaut...
|
|
|
|
|
Apparently, you can't just set the column width to LVSCW_AUTOSIZE_USEHEADER and expect it to resize as the list control is redrawn. I had to include this line...
ListView_SetColumnWidth(m_lbxSymbols, iCol, LVSCW_AUTOSIZE_USEHEADER);
in the OnInitDialog, OnSize (because the dialog/control is resizable), and after I load data into the list.
I had been under the impression, that this was like a style setting, but I guess it is actually a size value - one that is computed for you and you must set the size whenever the list control changes in size or content.
Thanks for your help.
Susan
Some people see things that are and ask, Why? Some people dream of things that never were and ask, Why not? Some people have to go to work and don't have time for all that ...
Author: George Carlin
|
|
|
|
|
Yes, one thing that my dialog app is not doing is resizing. So this is why i set this like I did. Also I have this in my OnInitDialog so the headers are sized correctly upon creation of the dialog box.
I'm assuming that when you mean resize you mean the whole screen.....but now I am thinking that you mean as data is entered you want the fields to resize to their lengths...right?
I understand why you are switching to WTL/ATL....someday I need to move over to that and get out of MFC....but old habits are hard to break.
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
I was wondering if anyone knew the function to let a program perform a left mouse click. im happily moving the mouse cursor with SetCursorPos() but cant seem to find anything that allows my program to perform a click once SetCursorPos() has put the cursor in the right spot over the button. anyone else know? thanks.
|
|
|
|
|
Send a WM_COMMAND message to the parent window simulating the button click message of the child button control.
|
|
|
|
|
Take a look at mouse_event or SendInput()
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Just send a WM_LBUTTONDOWN message with appropriate params to the button, followed by a WM_LBUTTONUP message (again with appropriate params - see MSDN). You don't even have to bother with the SetCursorPos() , as these messages must be sent with the mouse position as a parameter (unless you want the user to see his mouse cursor jumping all over).
Alternately, if you know the ID of the button, you can send a WM_COMMAND message with a BN_CLICKED parameter (and the other parameter w/ handle and ID of the button) to the parent window of the button.
Shog9
I'm not the Jack of Diamonds... I'm not the six of spades.
I don't know what you thought; I'm not your astronaut...
|
|
|
|
|
our software is on a CD to customers, do you know how to protect the software from been copied (illegally) - i.e. disk copy etc?
any suggestions or aticles?
thx
includeh10
|
|
|
|
|
check the serial numer of the CD. if it doesn't match then they copied it. The only problem is can you make multipule CD's with the same serial number.
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Tom,
do you know which c++ functions are used for checking serial number of a CD?
thx
includeh10
|
|
|
|
|
Hi:
is is possible to add extern hyperlinks into the help file afxcore.rtf?
|
|
|
|
|
Hi All,
I am new to MFC and so I thought I would set myself a small project as an exercise which is:- To read in an ASCII file from the hard disk (like the Notepad program). Then to add a button called "process" on the top row next to help. When pressed this button should process the displayed data in some way, then display the altered data on the screen. I should be able to then save that data to file.
The first part is accomplished with the helpful tutorial here
http://www.geocities.com/mcoiii2000/MFCtutorial.html to produce a simple text editor. and I have added the button to the top line
but now to manipulate....here is the task I set myself
Read in QWERTY contained in a file "ascii.txt"
All done with the created text editor. The button "process" is pushed (ok to here).
Now I want to display YTREWQ and save the file. i.e I now have a file ascii.txt containing ytrewq.
Simple? -not to me
The question, how can data from that filename be stored into an array/variable in order to be manipulated and then re displayed and saved??
Thanks for your help!
If I get it working I'll put it in the examples section!
|
|
|
|
|
Hi,
If your file contains only text, you can use CStdioFile for file processing. Open the File with file path and read the content, store CString varibale.
Finally, reverse that sting and save it.
Regards,
Selvam
|
|
|
|
|
Thanks , I really don't understand I am so new to this.
If I have made myself clear, I have constructed a simple text editor and loaded a file called ascii.txt I have added a button which when pushed takes me to the code below. Obviously I have to add the code. I actually want to manipulate the data on the screen. Where is it stored? what is the variable called?
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::Onreverse()
{
// TODO: Add your command handler code here
// I have used file>load >ascii.txt. The file contents are being displayed on the screen. Now I want to manipulate the data
// load the data displayed on the screen (qwerty)how with MFC , where is it?
// reverse it (ytrewq)-code for me to write!
// update the screen - how with MFC?
}
I can then save it to file. done with file>save
I hope that makes some sense
Thank you all for your time and help
|
|
|
|
|
While the task is easy enough to do, I certainly would not have chosen it for my first MFC project.
I presume you have created an SDI application (using AppWizard). If so, I would derive the view from CEditView . In the handler funtion for the button, call GetEditCtrl() to get a reference to the edit control used by the view. You can then call CEdit::GetWindowText() to get the text currently displayed in the edit control. Use the function _strrev() to reverse the text. Call CEdit::SetWindowText() to write the new text. Call GetDocument()->SetModifiedFlag(TRUE) to let the document know that the text has been changed. Upon exiting, the framework should prompt you to save the changed file.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Thank you I'll give it a go and let you know how I get on.
You are right If I knew it was going to be this difficult I wouldn't have chosen this either but I've started so I'll finish as they say
|
|
|
|
|
Nearly there!!
I have entered the code you suggest and it now looks like this
/////////////////////////////////////////////////////////////////////////////
// CReverseView message handlers
void CReverseView::OnReverse()
{
// TODO: Add your command handler code here
GetEditCtrl() ;
CEdit::GetWindowText() ;
//_strrev();
//CEdit::SetWindowText();
//GetDocument()->SetModifiedFlag(TRUE) ;
}
and I get this error message
error C2661: 'GetWindowTextA' : no overloaded function takes 0 parameters.
and subsequently for all the other items when not commented out. I presume something needs to go into the bracket?
do I declare a variable here or what happens? I want to get it correct.
Now you can see how new I am to this but I have learnt more today than in weeks of trying on my own. NB the SDI project was called reverse hence the reference
Regards
Thank you again for your time and help
|
|
|
|
|
hugPW wrote:
GetEditCtrl() ;
This should be:
CEdit &edit = GetEditCtrl(); hugPW wrote:
CEdit::GetWindowText() ;
This should be:
CString strText;
edit.GetWindowText(strText); There are other changes to make, but see how you can fare with these first.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Now we are really getting somewhere!
code looks like this
void CReverseView::OnReverse()
{
// TODO: Add your command handler code here
CEdit &edit = GetEditCtrl();
CString strText;
edit.GetWindowText(strText);
_strrev(strText);
edit.SetWindowText(strText);
GetDocument()->SetModifiedFlag(TRUE) ;
}
doesn't like _strrev, get this error. After that it should work!
error C2664: '_strrev' : cannot convert parameter 1 from 'class CString' to 'char *'
I was going to write my own bit of code but if the function exists I might as well use it.
Thank you I really appreciate this help.
|
|
|
|
|
hugPW wrote:
error C2664: '_strrev' : cannot convert parameter 1 from 'class CString' to 'char *'
The answer is in the error message. You need to figure out how to "convert" a CString object to a char * that _strrev() expects. Become very familiar with the CString class.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Thank you once again for all your help!
Kind Regards
Peter
|
|
|
|
|
Hi,
I have a Property Sheet Class with three pages.
My question is, how can I disable/enable the OK button based on the user input on
any of the pages?
I have a Property Sheet Class with three pages.
BOOL CPropSht::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
CWnd *wnd=(CWnd*)GetDlgItem(IDOK);
wnd->EnableWindow(FALSE);
return bResult;
}
I have seen that OK button is disable.
I have added three pages page1,Page2 and Page3 in a property Sheet.
Now, suppose user changes something on any of the pages then in this situation OK
button should be enable.
I mean, OK button should behave like apply button.
Please provide me some idea.
Thanks!
rajesh
|
|
|
|
|
|
Hi,
I am trying to use cdhtmldialog to display a html page in the resource folder, it works fine untill I want to have more than one html file.
Do anyone know how to change to the other html file while having the original one displayed? Thanks a lot!!!
|
|
|
|
|
hi all,
I am using SQLConfigDataSource(HWND hwndParent,UINT fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes) Method to configure the ODBC datasource..
The Problem is I have used the above Method Like this:-
SQLConfigDataSource(NULL,ODBC_ADD_DSN, "SQL Server\0","DSN=myfinger\0" "Server=SERVER\0" "Database=emp\0");
This working perfectly and create the DSN..
Now I want to give the DSN ,server ,Database Name as variables..
But when I create create Like this This is not working..
CString var4,v1,v2,v3;
v1="myfinger";
v2="SERVER";
v3="emp";
var4.Format(" \"DSN=%s\0\" \"Server=%s\0\" \"Database=%s\0\" ",v1,v2,v3);
SQLConfigDataSource(NULL,ODBC_ADD_DSN, "SQL Server\0",var4);
But No error When compilling the Program..But Not creating the DSN..
So please any know the correct way to show this please send me a reply...
Thanks in advance..
|
|
|
|