SendMessage() function

G

George Carrey

Im trying to write to the list box "Win_1" with SendMessage() but im doing
something wrong.

Thanks in advance!

____________________________________

Code:
#include <windows.h>
#include <tchar.h>
#include <string>
#include <iostream>
#include <richedit.h>
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"Gdi32.lib")
using namespace std;

#define IDB_TEXT2 101
#define IDB_TEXT3 102
#define GetText 103

HWND hwnd, Win_1, Win_2, Send;
MSG Msg;
HDC hdc;
PAINTSTRUCT ps;
TCHAR *buf = {0};
int length;
size_t found;
string Text, str;

void GetIt()
{
     length = GetWindowTextLength(Win_2);
     buf    = new TCHAR[length+1];
     GetWindowText(GetDlgItem(hwnd,IDB_TEXT3), buf, length+1);
     str   = buf;
     found = str.find("\r\n");
     Text  = str.substr(0,found);
     SendMessage(Win_1, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)Text.c_str());
     delete[] buf;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){
  switch(msg){
              case WM_CREATE:
                   Win_1 = CreateWindowEx(0,"ListBox", 0,
                         WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL |
                         WS_HSCROLL | LBS_DISABLENOSCROLL,
                         20, 20, 550, 460, hwnd, (HMENU)IDB_TEXT2, 0, NULL);
                   Win_2 = CreateWindowEx(0,"Edit","Hello",
                         WS_VISIBLE | WS_CHILD |  WS_HSCROLL | WS_VSCROLL |
                         ES_AUTOHSCROLL | ES_WANTRETURN | ES_MULTILINE,
                         20, 500, 550, 180,hwnd,(HMENU) IDB_TEXT3,
                         ((LPCREATESTRUCT)lParam)->hInstance,NULL);
                   Send  = CreateWindowEx(0,"Button","Send",
                         WS_CHILD | WS_VISIBLE | WS_BORDER,
                         20, 700, 550, 20,hwnd,(HMENU)GetText,0,NULL);

                   EnableWindow(Send ,TRUE);
                   EnableWindow(Win_1 ,TRUE);
                   EnableWindow(Win_2 ,TRUE);
                   break;
              case WM_PAINT:
                   GetIt();
                   break;
              case WM_COMMAND:
                   switch(wParam)
                   {
                    case GetText:
                         InvalidateRect(Win_1,0,FALSE);
                         //system("start http://www.google.com");
                         break;
                   }
              case WM_TIMER:
                  // if (GetAsyncKeyState(VK_F11)) ShowWindow(hwnd,SW_HIDE);
                   //if (GetAsyncKeyState(VK_F12)) ShowWindow(hwnd,SW_SHOW);
                   break;

              case WM_CLOSE:
                   DestroyWindow(hwnd);
                   break;

              case WM_DESTROY:
                   PostQuitMessage(0);
                   break;
              default:
                   return DefWindowProc(hwnd,msg,wParam,lParam);
       }
       return 0;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR 
lpCmdLine,int nCmdShow)
{
    WNDCLASSEX wc;
    wc.hInstance = hInstance;
    wc.cbClsExtra = 0;
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.cbWndExtra = 0;
    wc.hbrBackground = (HBRUSH) CreateSolidBrush(RGB(100,100,100));
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hIcon   = LoadIcon (NULL, IDI_APPLICATION) ;
    wc.lpfnWndProc =  WndProc;
    wc.lpszClassName = "Class";
    wc.lpszMenuName = NULL;
    wc.style = 0;
    wc.hIconSm = NULL;
    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Window Registration Failed!", "Error!",
        MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    hwnd = CreateWindowEx(WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_WINDOWEDGE,
                           "Class",
                           " The_Chatter",
                           WS_OVERLAPPEDWINDOW,
                           CW_USEDEFAULT, CW_USEDEFAULT, 600, 800,
                           HWND_DESKTOP, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
        MessageBox(NULL, "Window Creation Failed!", "Error!", 
MB_ICONEXCLAMATION | MB_OK); return 0;
    }

    SetTimer(hwnd,1,125,NULL);
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
          TranslateMessage(&Msg);
          DispatchMessage(&Msg);
    }
    return Msg.wParam;
}
 
R

red floyd

Im trying to write to the list box "Win_1" with SendMessage() but im doing
something wrong.

Let's see what's wrong here.

1. You have an error on line 42 of your code. That is, we're not
psychic. Why do you think something is wrong? See FAQ 5.8
http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.8

2. You have posted to the wrong newsgroup. The C++ language knows
nothing about SendMessage or "list boxes". You have a question
about the Win32 API, not the C++ language. See FAQ 5.9
http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.9
or try a newsgroup with "windows" in its name.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,015
Latest member
AmbrosePal

Latest Threads

Top