Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поток в win32 и SendMessage 
:(
    Опции темы
thefree
Дата 9.5.2009, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 14.11.2007

Репутация: нет
Всего: нет



Код

#include <stdio.h>
#include <windows.h>
#include "resource.h"

HWND hWnd, hWndTextL, hWndTextP, hWndItemB;
HINSTANCE hInstance;
const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

DWORD WINAPI updateLP(char *l, char *p);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

    WNDCLASSEX wc;
    MSG Msg;

    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = (WNDPROC)WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    //wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if(!RegisterClassEx(&wc))
        return 0;

    hWnd = CreateWindowEx(0, g_szClassName, ("test"), WS_VISIBLE | WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, 300, 200, 198, 140, NULL, NULL, hInstance, NULL);

    if(hWnd == NULL)
        return 0;

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while(GetMessage(&Msg, NULL, 0, 0) > 0) {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    char *var_l = (char*)malloc(64);
    char *var_p = (char*)malloc(64);
    
    //for Thread
    HANDLE  hThread;
    DWORD  IDThread;

    HFONT hFont = CreateFont(-11, 0, 0, 0, 0, FALSE, FALSE, FALSE, 1, 0, 0, 0, 0, ("Ms Shell Dlg 2"));

    switch(uMsg) {
    case WM_CREATE:
        hWndTextL = CreateWindowEx(0, "STATIC", ("test:"), WS_VISIBLE | WS_CHILD | SS_LEFT, 12, 13, 90, 13, hWnd, (HMENU)IDC_STATIC_L, hInstance, 0); //36->90
        SendMessage(hWndTextL, WM_SETFONT, (WPARAM)hFont, FALSE);
        hWndTextP = CreateWindowEx(0, "STATIC", ("test2:"), WS_VISIBLE | WS_CHILD | SS_LEFT, 5, 39, 200, 13, hWnd, (HMENU)IDC_STATIC_P, hInstance, 0); //42->200
        SendMessage(hWndTextP, WM_SETFONT, (WPARAM)hFont, FALSE);
        hWndItemB = CreateWindowEx(0, "BUTTON", ("go"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 110, 86, 78, 23, hWnd, (HMENU)IDC_BUTTON_C, hInstance, 0);
        SendMessage(hWndItemB, WM_SETFONT, (WPARAM)hFont, FALSE);
    break;
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
            case IDC_BUTTON_C:
                hThread = CreateThread(NULL, 0, updateLP, "sss"|"sss2", 0, &IDThread);
                WaitForSingleObject(hThread, INFINITE);
                CloseHandle(hThread);
                }
            break;
        }
    break;
    case WM_CLOSE:
        DestroyWindow(hWnd);
    break;
    case WM_DESTROY:
        PostQuitMessage(0);
    break;
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    return 0;

}

DWORD WINAPI ClosePptp(char *l, char *p) {
    SendMessage(GetDlgItem(hWnd, IDC_STATIC_L), WM_SETTEXT, 0, (LPARAM)l);
    SendMessage(GetDlgItem(hWnd, IDC_STATIC_P), WM_SETTEXT, 0, (LPARAM)p);
    return 0;
}


Программа почемута виснет подскажите где ошибся, собираю под mingw
PM   Вверх
Lazin
Дата 9.5.2009, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: нет
Всего: 154



В каком месте виснет, не здесь-ли
Цитата(thefree @  9.5.2009,  08:22 Найти цитируемый пост)
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
            case IDC_BUTTON_C:
                hThread = CreateThread(NULL, 0, updateLP, "sss"|"sss2", 0, &IDThread);
                WaitForSingleObject(hThread, INFINITE);
                CloseHandle(hThread);
                }
            break;
        }
    break;


PM MAIL Skype GTalk   Вверх
J0ker
Дата 9.5.2009, 09:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(thefree @  9.5.2009,  08:22 Найти цитируемый пост)
"sss"|"sss2"

опа
вот это жопа
че за чудо чудное такое smile


--------------------
user posted image
PM MAIL   Вверх
thefree
Дата 9.5.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 14.11.2007

Репутация: нет
Всего: нет



это из разряда я хз, как туда подставить параметры для функции ...
Подскажите пожалуйста, если есть возможность то и пример.

Это сообщение отредактировал(а) thefree - 9.5.2009, 22:51
PM   Вверх
J0ker
Дата 10.5.2009, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



это тот параметр который принимает функция потока
и вы уверены, что вам нужен именно CreateThread, а не _beginthreadex?


--------------------
user posted image
PM MAIL   Вверх
thefree
Дата 10.5.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 14.11.2007

Репутация: нет
Всего: нет



2J0ker, можно пример с _beginthreadex, желательно что бы в функцию которая используется в потоке, передавалось 2-3 значения.
PM   Вверх
azesmcar
Дата 10.5.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата(thefree @  10.5.2009,  19:14 Найти цитируемый пост)
можно пример с _beginthreadex

http://msdn.microsoft.com/en-us/library/kdzttdcb(VS.80).aspx


Цитата(thefree @  10.5.2009,  19:14 Найти цитируемый пост)
желательно что бы в функцию которая используется в потоке, передавалось 2-3 значения

через структуры
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




[ Время генерации скрипта: 0.0771 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.