Буфер обмена - C++ WinAPI

412
18 июня 2017, 17:29

Здравствуйте, помогите пожалуйста, нужно сделать программу, которая демонстрирует, передачу информации различных форматов(текст, графика) через буфер обмена Clipboard. Текст я сделал, кое как, нужно доработать. А изображения вообще ни как не получаются. Помогите, пожалуйста, с изображениями Вот мой код

#include <windows.h>
#include "stdafx.h"

// Описание функции главного окна
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg,
WPARAM wParam, LPARAM lParam);
// Глобальные переменные
HINSTANCE hInst;            
char ClassName[] = "Window";        
char AppTitle[] = "Application Win32";  
char * text = NULL; 


static UINT ID_edit = 3;
static HWND hWndEdit;
int WINAPI WinMain(
HINSTANCE hInstance,    
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,    
int nCmdShow)       
{
WNDCLASS wc;    
HWND hWnd; 
MSG msg;    
hInst = hInstance;

hWnd = FindWindow(ClassName, NULL);
if (hWnd)
{

    if (IsIconic(hWnd)) ShowWindow(hWnd, SW_RESTORE);
    SetForegroundWindow(hWnd);
    return FALSE;
}
// Работающая копия не найдена - функция WinMain приступает 
// к инициализации приложения.
// Заполнение структуры WNDCLASS для регистрации класса окна.
memset(&wc, 0, sizeof(wc));
wc.lpszClassName = ClassName;           // Имя класса окон
wc.lpfnWndProc = (WNDPROC)WndProc;      // Адрес оконной функции
wc.style = CS_HREDRAW | CS_VREDRAW;         // Стиль класса окон
wc.hInstance = hInstance;               // Экземпляр приложения
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);     // Пиктограмма для окон
wc.hCursor = LoadCursor(NULL, IDC_ARROW);       // Курсор мыши для окон
                                                //  wc.hbrBackground = 
GetStockObject(WHITE_BRUSH); // Кисть для окон
wc.lpszMenuName = NULL;             // Ресурс меню окон
wc.cbClsExtra = 0;              // Дополнительная память
wc.cbWndExtra = 0;              // Дополнительная память
                                // Pегистрация класса окна.
RegisterClass(&wc);
// Создаем главное окно приложения.
hWnd = CreateWindow(
    ClassName,          // Имя класса окон
    AppTitle,           // Заголовок окна 
    WS_OVERLAPPEDWINDOW,        // Стиль окна
    CW_USEDEFAULT,          // X-координаты 
    CW_USEDEFAULT,          // Y-координаты 
    CW_USEDEFAULT,          // Ширина окна
    CW_USEDEFAULT,          // Высота окна
    NULL,               // Дескриптор окна-родителя
    NULL,               // Дескриптор меню окна
    hInst,              // Дескриптор экземпляра приложения
    NULL);              // Дополнительная информация
if (!hWnd)
{
    // Окно не создано, выдаем предупреждение.
    MessageBox(NULL, "Create: error", AppTitle, MB_OK | MB_ICONSTOP);
    return FALSE;
}
// Отображаем окно.
ShowWindow(hWnd, nCmdShow);
// Обновляем содержимое клиентской области окна.
UpdateWindow(hWnd);
//Текстовое окно
hWndEdit = CreateWindow("edit", NULL,
    WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER | WS_CLIPSIBLINGS | 
ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | WS_DLGFRAME,
    20, 40, 450, 150, hWnd, (HMENU)ID_edit, hInst, NULL);

while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return msg.wParam;
}
// Функция окна
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{
//Берем текст из буфера
OpenClipboard(hWnd);
HANDLE hData = GetClipboardData(CF_TEXT);
text = (char*)GlobalLock(hData);
SetWindowText(hWndEdit, text);
GlobalUnlock(hData);
CloseClipboard();
switch (msg)
{
    case WM_DESTROY:    // Пользователь удалил окно.
    PostQuitMessage(0);
    break;
default:
    return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
READ ALSO
Использование __VA_ARGS__ в define если аргументов нет

Использование __VA_ARGS__ в define если аргументов нет

Например, есть код где всё уже определено :

265
Цикл внутри потока. С++

Цикл внутри потока. С++

Здравствуйте!

252
Анонимная функция

Анонимная функция

Есть кусок кода из учебника:

339
В папку assets попадает старая версия jquery-ui

В папку assets попадает старая версия jquery-ui

На страницах присутствуют компоненты из библиотеки UI в самой странице в секции заголовка прописана новая библиотека jQuery но при входе на страницу...

287