Эксперт
- Статус
- Оффлайн
- Регистрация
- 12 Июн 2014
- Сообщения
- 994
- Реакции
- 1,209
пример реализации простого логотипа в длл.
Суть: при запуске длл(аттаче) показывается ваша картинка, которая через определенное время плавно "затухает".
Код простой. в комментариях не нуждается. Основные регулируемые единицы подписаны:
первым делом создаем нужный логотип в формате .BMP(другие не пробовал). И импортируем в ресурсы своей длл. подключаем к проекту и пишем:
IDB_BITMAP1 - идентификатор ресурса. создается автоматически при импорте ресурса. размещается в файле resource.h
Суть: при запуске длл(аттаче) показывается ваша картинка, которая через определенное время плавно "затухает".
Код простой. в комментариях не нуждается. Основные регулируемые единицы подписаны:
первым делом создаем нужный логотип в формате .BMP(другие не пробовал). И импортируем в ресурсы своей длл. подключаем к проекту и пишем:
Код:
#include <Windows.h>
#include <process.h>
#include "resource.h"
HINSTANCE hInstance = nullptr;
HWND hWndLogo;
HBITMAP hBmp;
HBRUSH hBrush;
bool bTheEnd = false;
LRESULT APIPRIVATE WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
unsigned APIENTRY StartWindow(LPVOID lpParam)
{
WNDCLASSA wclass;
ZeroMemory(&wclass, sizeof(WNDCLASSA));
hBmp = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
hBrush = CreatePatternBrush(hBmp);
wclass.style = CS_OWNDC | CS_VREDRAW | CS_GLOBALCLASS | CS_HREDRAW | CS_DBLCLKS;
wclass.lpfnWndProc = (WNDPROC)WndProc;
wclass.hInstance = hInstance;
wclass.hbrBackground = hBrush;
wclass.lpszClassName = "_none__";
wclass.lpszMenuName = NULL;
wclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wclass.hIcon = NULL;
if (!RegisterClassA(&wclass))
return FALSE;
static int width = 300;
static int height = 150;
hWndLogo = CreateWindowExA(WS_EX_TOPMOST, "_none__", "MyApp",
WS_POPUP,
(GetSystemMetrics(SM_CXSCREEN) >> 1) - (width >> 1),
(GetSystemMetrics(SM_CYSCREEN) >> 1) - (height >> 1),
width,
height,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWndLogo, SW_SHOW);
MSG msg;
ZeroMemory(&msg, sizeof(msg));
while (GetMessage(&msg, hWndLogo, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if (bTheEnd == true)
break;
}
return 0L;
}
unsigned APIENTRY StartFrame(LPVOID lpParam)
{
Sleep(5000);//время отображения
SetWindowLong(hWndLogo, GWL_EXSTYLE, GetWindowLong(hWndLogo, GWL_EXSTYLE) | WS_EX_LAYERED);
for (size_t i = 255; i > 0; i--)
{
SetLayeredWindowAttributes(hWndLogo, 0, i, LWA_ALPHA);
Sleep(10); //скорость затухания
}
bTheEnd = true;
return 0;
}
BOOL WINAPI DllMain(
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
hInstance = hinstDLL;
_beginthreadex(NULL, NULL, StartWindow, NULL, NULL, NULL);
_beginthreadex(NULL, NULL, StartFrame, NULL, NULL, NULL);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
IDB_BITMAP1 - идентификатор ресурса. создается автоматически при импорте ресурса. размещается в файле resource.h
И еще я вернулся в прошлое, чтобы передать вин 10 Биллу Гейтсу, а интелу подогнать проц. Потом вернулся в 2010 и Стиву Джобсу показал iPhone X, так он застрелился вообще.