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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2018, 16:21   #1
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию Как сделать чтобы путь к файлу в окне писался?

Я хочу написать программу которая открывает файл и считывает файл в окно.
И я хочу:
1) чтобы когда я открыл файл путь писался в (1). У меня рабоетает кнопка Load File, открывается окно чтобы выбрать файл
2) чтобы все что есть в файле записалось сюда(2)
Мой код:
Код:
#include "stdafx.h"
#include <windows.h>

#define WIN32_LEAN_AND_MEAN

HINSTANCE hInst;
const WCHAR szTitle[] = L"Test";
const WCHAR szWindowClass[] = L"WindowClass";

ATOM RegisterWndClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

bool OpenDialog(HWND);

#define ID_LOADFILE 1
#define ID_EDIT 3


HINSTANCE g_hinst;
HWND ghwndEdit;

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPWSTR    lpCmdLine,
	_In_ int       nCmdShow)
{
	UNREFERENCED_PARAMETER(hPrevInstance);
	UNREFERENCED_PARAMETER(lpCmdLine);



	RegisterWndClass(hInstance);
	if (!InitInstance(hInstance, nCmdShow))
		return FALSE;

	MSG msg;
	while (GetMessage(&msg, nullptr, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return (int)msg.wParam;
}

ATOM RegisterWndClass(HINSTANCE hInstance)
{
	WNDCLASSEXW wcex;
	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.style = CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc = WndProc;
	wcex.cbClsExtra = 0;
	wcex.cbWndExtra = 0;
	wcex.hInstance = hInstance;
	wcex.hIcon = NULL;
	wcex.hCursor = NULL;
	wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
	wcex.lpszMenuName = NULL;
	wcex.lpszClassName = szWindowClass;
	wcex.hIconSm = NULL;

	return RegisterClassExW(&wcex);
}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
	hInst = hInstance;

	HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

	if (!hWnd)
		return FALSE;

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

	return TRUE;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
	WPARAM wParam, LPARAM lParam) 
{
	static HWND hwndComboFirst;
	static HWND hwndComboSecond;
	static HWND hwndEditFirst;
	static HWND hwndEditSecond;
	
	std::vector<Triangle> triangles;
	auto optimizedData = OptimizeTriangleData(triangles);
	
	switch (msg)
	{
	case WM_CREATE:
		
		hwndEditFirst = CreateWindowW(L"Edit", NULL,
			WS_CHILD | WS_VISIBLE | WS_BORDER,
			690, 100, 200, 21, hwnd, (HMENU)ID_EDIT,
			NULL, NULL);
		ghwndEdit = CreateWindowW(L"Button", L"Load File", WS_VISIBLE | WS_CHILD,
			900, 100, 80, 25, hwnd, (HMENU)ID_FINDPATH, NULL, NULL);

		hwndEditSecond = CreateWindowW(L"Edit", NULL,
			WS_CHILD | WS_VISIBLE | WS_BORDER,
			10, 300, 1400, 390, hwnd, (HMENU)ID_EDIT,
			NULL, NULL);

		break;

	case WM_COMMAND:
		if (LOWORD(wParam) == ID_FINDPATH)
		{
			OpenDialog(hwnd);
		}
		

		if (LOWORD(wParam) == ID_LOADFILE)
		{


		}

		if (HIWORD(wParam) == ID_EDIT)
		{
			
		}
		break;
	case WM_DESTROY:

		PostQuitMessage(0);
		break;
	}
	return DefWindowProcW(hwnd, msg, wParam, lParam);
}

bool OpenDialog(HWND hwnd) 
{
	OPENFILENAME ofn;
	TCHAR szFile[MAX_PATH];

	ZeroMemory(&ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.lpstrFile = szFile;
	ofn.lpstrFile[0] = '\0';
	ofn.hwndOwner = hwnd;
	ofn.nMaxFile = sizeof(szFile);
	ofn.lpstrFilter = TEXT("All files(*.*)\0*.*\0");
	ofn.nFilterIndex = 1;
	ofn.lpstrInitialDir = NULL;
	ofn.lpstrFileTitle = NULL;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

	if (GetOpenFileName(&ofn))
		return true;
}
Изображения
Тип файла: jpg ввіівівівівівіів.jpg (17.1 Кб, 124 просмотров)

Последний раз редактировалось dimaSlon; 21.04.2018 в 16:26.
dimaSlon вне форума Ответить с цитированием
Старый 22.04.2018, 04:11   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

вот в этом блоке
Код:
case WM_COMMAND:
		if (LOWORD(wParam) == ID_FINDPATH)
		{
			OpenDialog(hwnd);
		}
как раз после OpenDialog'а
пошли сообщение SendMessage:
Код:
SendMessage(h1,WM_SETTEXT,0,LPARAM(PChar('тут твой текст')));
h1 - Это хэндл твоего окна или объекта.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 22.04.2018, 08:21   #3
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Как вариант, можно еще использовать функцию SetWindowText
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать так чтобы открывалось не в новом окне, а том же deadark Общие вопросы Web 5 02.03.2018 08:12
Как указать путь файлу в c++ NoInfo Общие вопросы C/C++ 10 02.04.2017 19:52
Как сделать, чтобы ссылка открывалась в новом окне? blissful HTML и CSS 4 11.09.2016 23:59
Как задать путь к файлу!? David Villa Общие вопросы C/C++ 4 03.02.2012 00:36
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24