List Box & Rich Edit box [modified]
-
I wanted to said insert LBS_NOTIFY when create your listbox
WhiteSky
He has created list box, shown in above post.
Prasad Notifier using ATL | Operator new[],delete[][^]
-
Suresh H wrote:
hwndListBox=CreateWindowW(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwndListBox,0);
Use
CreateWindow
instead ofCreateWindowW
. You are trying to useUNICODE
version in Non -UNICODE application.Prasad Notifier using ATL | Operator new[],delete[][^]
Hi prasad, again i am getting error..
HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST); hwndListBox=CreateWindow(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwndListBox,0);
error :- rror C2664: 'CreateWindowExA' : cannot convert parameter 11 from 'struct HWND__ *' to 'struct HINSTANCE__ *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe. -
Suresh H wrote:
hwndListBox=CreateWindowW(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwndListBox,0);
Use
CreateWindow
instead ofCreateWindowW
. You are trying to useUNICODE
version in Non -UNICODE application.Prasad Notifier using ATL | Operator new[],delete[][^]
-
Hi prasad, again i am getting error..
HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST); hwndListBox=CreateWindow(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwndListBox,0);
error :- rror C2664: 'CreateWindowExA' : cannot convert parameter 11 from 'struct HWND__ *' to 'struct HINSTANCE__ *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe.One question
HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST);
what is it? before CreateWindow
WhiteSky
-
Hi prasad, again i am getting error..
HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST); hwndListBox=CreateWindow(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwndListBox,0);
error :- rror C2664: 'CreateWindowExA' : cannot convert parameter 11 from 'struct HWND__ *' to 'struct HINSTANCE__ *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe.Suresh H wrote:
hwndListBox=CreateWindow(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwndListBox,0);
Here, instead of handle you need to pass handle to instance. Pass instance that you will get through
WinMain
.Prasad Notifier using ATL | Operator new[],delete[][^]
-
One question
HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST);
what is it? before CreateWindow
WhiteSky
-
Suresh H wrote:
hwndListBox=CreateWindow(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwndListBox,0);
Here, instead of handle you need to pass handle to instance. Pass instance that you will get through
WinMain
.Prasad Notifier using ATL | Operator new[],delete[][^]
BOOL CALLBACK SDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_INITDIALOG: { // HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST); hwnd=CreateWindow(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwnd,0); again error :- error C2664: 'CreateWindowExA' : cannot convert parameter 11 from 'struct HWND__ *' to 'struct HINSTANCE__ *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe.
-
So do you have two listbox on your project?
WhiteSky
-
BOOL CALLBACK SDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_INITDIALOG: { // HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST); hwnd=CreateWindow(_T("LISTBOX"),NULL,LBS_NOTIFY|WS_BORDER|WS_CHILD|WS_VISIBLE,0,0,100,200,hwnd,(HMENU)IDC_SLIST,hwnd,0); again error :- error C2664: 'CreateWindowExA' : cannot convert parameter 11 from 'struct HWND__ *' to 'struct HINSTANCE__ *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe.
You have two hwnds on CreateWindow? wheres HINSTANCE
WhiteSky
-
Prasad what I am trying to do is List box contains a list of file names , when we select any item in the list box that file contains should get added to rich edit box. So is there any way I can do that ??? without double click trouble ???
Suresh H wrote:
List box contains a list of file names , when we select any item in the list box that file contains should get added to rich edit box.
You can handle list box double click in following way,
case WM_COMMAND:
switch(LOWORD(wParam))
case IDC_LIST1:
if (HIWORD(wParam) == LBN_DBLCLK)
{
//double clicked
}
break;Prasad Notifier using ATL | Operator new[],delete[][^]
-
Hello all, I have List Box and rich edit box in my Dialog IDC_SLIST & IDC_FILECONT List Box contains the text file names , When the user double click on the list box that file content should be displayed in the rich edit box. Can u please tell me what all the changes I have to make and how to do the double click event in Api application ??
case WM_COMMAND: switch(LOWORD(wParam)) { case LBN_DBLCLK: { HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST); int iCurSel =::SendMessage(hwndListBox,LB_GETCURSEL,0,0); TCHAR FName[25]; SendMessage(hwndListBox,LB_GETTEXT,(WPARAM)iCurSel,(LPARAM)FName); CStdioFile file(FName, CFile::modeRead); DWORD dwSize = file.GetLength(); char *pBuffer = new char[dwSize + 1]; UINT uRead = file.Read(pBuffer, dwSize); pBuffer[uRead] = '\0'; file.Close(); HWND hwndRichEdit = GetDlgItem(hwnd, IDC_FILECONT); SendMessage(hwndRichEdit,EM_SETTEXTMODE, pBuffer,0); delete [] pBuffer; } Thanking you, Suresh HC
-- modified at 5:37 Friday 16th February, 2007Suresh H wrote:
case WM_COMMAND: switch(LOWORD(wParam)) { case LBN_DBLCLK: { HWND hwndListBox = GetDlgItem(hwnd, IDC_SLIST); int iCurSel =::SendMessage(hwndListBox,LB_GETCURSEL,0,0); TCHAR FName[25]; SendMessage(hwndListBox,LB_GETTEXT,(WPARAM)iCurSel,(LPARAM)FName);
This is Win32 code. Since you have an MFC application, based on the presence of
CStdioFile
, take advantage of it. Use ClassWizard to create aLBN_DBLCLK
handler. In that handler, call the listbox'sGetCurSel()
method to get the index of the currently selected item. Then call the edit control'sSetWindowText()
method, or itsStreamIn()
method, to display the text (after opening the file and reading its contents, of course).
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
-
Suresh H wrote:
List box contains a list of file names , when we select any item in the list box that file contains should get added to rich edit box.
You can handle list box double click in following way,
case WM_COMMAND:
switch(LOWORD(wParam))
case IDC_LIST1:
if (HIWORD(wParam) == LBN_DBLCLK)
{
//double clicked
}
break;Prasad Notifier using ATL | Operator new[],delete[][^]
-
Welcome ! :)
Prasad Notifier using ATL | Operator new[],delete[][^]
-
Welcome ! :)
Prasad Notifier using ATL | Operator new[],delete[][^]
Hi Prasad, One more last problem. After the double click event I am trying to read the file contents and display the file connects in rich edit box for that I am trying this code but I am not getting any out put can u please check what changes I have to make.
const N = 1000; char cont[N]; ifstream fin; fin.open(FName); while(fin) { fin.getline(cont,1000); ::SendMessage(hwndRichEdit,WM_SETTEXT, 0,(WPARAM)cont); } fin.close();
i have tryed this code in mfc this is working properly but this code does not work in win 32 api,CStdioFile file(str, CFile::modeRead); DWORD dwSize = file.GetLength(); char *pBuffer = new char[dwSize + 1]; UINT uRead = file.Read(pBuffer, dwSize); pBuffer[uRead] = '\0'; file.Close(); ::SendMessage(hwndRichEdit,WM_SETTEXT, 0,(WPARAM)pBuffer); delete [] pBuffer;
-
Hi Prasad, One more last problem. After the double click event I am trying to read the file contents and display the file connects in rich edit box for that I am trying this code but I am not getting any out put can u please check what changes I have to make.
const N = 1000; char cont[N]; ifstream fin; fin.open(FName); while(fin) { fin.getline(cont,1000); ::SendMessage(hwndRichEdit,WM_SETTEXT, 0,(WPARAM)cont); } fin.close();
i have tryed this code in mfc this is working properly but this code does not work in win 32 api,CStdioFile file(str, CFile::modeRead); DWORD dwSize = file.GetLength(); char *pBuffer = new char[dwSize + 1]; UINT uRead = file.Read(pBuffer, dwSize); pBuffer[uRead] = '\0'; file.Close(); ::SendMessage(hwndRichEdit,WM_SETTEXT, 0,(WPARAM)pBuffer); delete [] pBuffer;
Suresh H wrote:
const N = 1000; char cont[N]; ifstream fin; fin.open(FName); while(fin) { fin.getline(cont,1000); ::SendMessage(hwndRichEdit,WM_SETTEXT, 0,(WPARAM)cont); } fin.close();
Here, are you succesfully able to open the file ? Initialize char array like this,
char cont[N] = { '\0'};
Prasad Notifier using ATL | Operator new[],delete[][^]
-
Suresh H wrote:
const N = 1000; char cont[N]; ifstream fin; fin.open(FName); while(fin) { fin.getline(cont,1000); ::SendMessage(hwndRichEdit,WM_SETTEXT, 0,(WPARAM)cont); } fin.close();
Here, are you succesfully able to open the file ? Initialize char array like this,
char cont[N] = { '\0'};
Prasad Notifier using ATL | Operator new[],delete[][^]
Hi Prasad, I just did that changes but no output. I traced the statements, it open the file and it reads till end of the file, Since its in the loop the cont value keeps on changing ….and also nothing is added to the rich edit box. Is there any way where I can open the file read the complete contents of the file and store it in one variable and pass that variable to get displayed in the rich edit ??? Files which I am trying to open are simple text files which contains lots of blank lines in the starting and end of the file .
-
Hi Prasad, I just did that changes but no output. I traced the statements, it open the file and it reads till end of the file, Since its in the loop the cont value keeps on changing ….and also nothing is added to the rich edit box. Is there any way where I can open the file read the complete contents of the file and store it in one variable and pass that variable to get displayed in the rich edit ??? Files which I am trying to open are simple text files which contains lots of blank lines in the starting and end of the file .
I dont see any problem there, as long as array has some value.
Prasad Notifier using ATL | Operator new[],delete[][^]
-
I dont see any problem there, as long as array has some value.
Prasad Notifier using ATL | Operator new[],delete[][^]
-
Prasad I think since we are using WM_SETTEXT its replacing the rich edit contents ?? can we use some message where it adds to rich edit box with out replacing the old contents ??
There is message
EM_SETTEXTEX
. But instead, read whole file content in to string, and useWM_SETTEXT
.Prasad Notifier using ATL | Operator new[],delete[][^]
-
There is message
EM_SETTEXTEX
. But instead, read whole file content in to string, and useWM_SETTEXT
.Prasad Notifier using ATL | Operator new[],delete[][^]