Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 09:42   #1
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию WinAPI

не знаю, куда нужно было создать тему. так что заранее извиняюсь, если не там)

Вопрос:
Есть два файла -.c и .exe
Во втором можно увидеть интерфейс(кнопка, два текстовых поля..), который с помощью WinAPI написан в первом файле.

Ткните меня носом туда, где описано Текстовое поле и работа с ним(ввод, прокрутка, к примеру, создание его) -(оно там есть, если что)

Файл .с
Код:
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <string.h>
#include <stdlib.h>
#include <winsock.h>
#include "c:\lcc\project\tcp\tcpres.h"

#define WS_VERSION_REQD	0x0101
#define WM_ASYNC WM_USER+1


WSADATA stWSAData;
int nRet;
HWND hwndDlg;
SOCKET hSock = INVALID_SOCKET;
char TxtBuf[256];
SOCKADDR_IN rmaddr;
int nAddrSize = sizeof(SOCKADDR);
WORD WSAEvent;

static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);


int APIENTRY WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow)
{
	WNDCLASS wc;

	memset(&wc,0,sizeof(wc));
	wc.lpfnWndProc = DefDlgProc;
	wc.cbWndExtra = DLGWINDOWEXTRA;
	wc.hInstance = hinst;
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
	wc.lpszClassName = "tcp";
	RegisterClass(&wc);
	WSAStartup(WS_VERSION_REQD, &stWSAData);
    hSock = socket (AF_INET, SOCK_STREAM, 0);
	return DialogBox(hinst, MAKEINTRESOURCE(IDD_MAINDIALOG), NULL, (DLGPROC) DialogFunc);
}


static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{

	switch (msg) {

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
			case IDB_SEND:
			SendDlgItemMessage(hwndDlg,IDE_RUN,WM_GETTEXT,(WPARAM)256,(LPARAM)TxtBuf);
			send(hSock,TxtBuf,256,0);
			return 1;

			case IDB_CON:
				rmaddr.sin_family = AF_INET;
				SendDlgItemMessage(hwndDlg,IDE_IP,WM_GETTEXT,(WPARAM)256,(LPARAM)TxtBuf);
				rmaddr.sin_addr.s_addr = inet_addr(TxtBuf);
				rmaddr.sin_port = htons (2049);
				connect (hSock, (struct sockaddr *)&rmaddr,sizeof(rmaddr));

				SendDlgItemMessage(hwndDlg,IDE_MSG,EM_REPLACESEL,(WPARAM)TRUE,(LPARAM)"Try connecting with ");
				SendDlgItemMessage(hwndDlg,IDE_MSG,EM_REPLACESEL,(WPARAM)TRUE,(LPARAM)TxtBuf);
				SendDlgItemMessage(hwndDlg,IDE_MSG,WM_CHAR,(WPARAM)13,(LPARAM)28);

				nRet=WSAAsyncSelect (hSock,hwndDlg,WM_ASYNC,FD_READ);

			return 1;

		}
		return TRUE;

	case WM_CLOSE:
		nRet = WSACleanup();
		EndDialog(hwndDlg,0);
		return TRUE;

	case WM_ASYNC:
		WSAEvent = WSAGETSELECTEVENT (lParam);
		switch (WSAEvent)
		{
			case FD_READ:

				nRet=recv(hSock,TxtBuf,256,0);
				SendDlgItemMessage(hwndDlg,IDE_MSG,EM_REPLACESEL,(WPARAM)TRUE,(LPARAM)TxtBuf);
				SendDlgItemMessage(hwndDlg,IDE_MSG,WM_CHAR,(WPARAM)13,(LPARAM)28);
		}
		return TRUE;
	}
	return FALSE;
}
monolit111 вне форума Ответить с цитированием
Старый 12.05.2012, 10:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

здесь окно описано в ресурсах.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.05.2012, 13:31   #3
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

просто файл,который там подключается, выглядит так:

Код:
#define	IDD_MAINDIALOG	100
#define	IDB_SOCKET	101
#define	IDB_SEND	102
#define	IDB_RESV	103
#define	IDM_PORT	104
#define	IDE_IP	105
#define	IDE_RUN	107
#define	IDB_CON	109
#define	IDE_MSG	110
#define	IDB_SOCKETS	201
#define	IDB_SOCKETC	203
что это может значить?)
monolit111 вне форума Ответить с цитированием
Старый 12.05.2012, 14:24   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я говорю про файл ресурсов, а не заголовок к нему, а это просто идентификаторы ресурсов судя по всему.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.05.2012, 14:51   #5
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

Дело ясное, что дело темно)
Видимо этого файла к примеру не прилагается, спасибо)
monolit111 вне форума Ответить с цитированием
Старый 12.05.2012, 14:59   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

файл ресурсов это не .h файл.
.rc помоему.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.05.2012, 17:15   #7
srh
 
Регистрация: 12.05.2012
Сообщений: 4
По умолчанию

Можешь взять какой-нибудь редактор ресурсов, например Restorator и открыть им exe файл. Где-то там увидишь свой диалог.
srh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) Артём1991 Помощь студентам 0 25.03.2012 17:13
Com и winapi AFA Общие вопросы C/C++ 6 09.05.2011 15:46
WinApi+C# Dimarik C# (си шарп) 13 20.04.2011 20:05
WinAPI for me Kazimir Фриланс 4 14.12.2009 14:36