Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Вниз

Получить Handle без Application   Найти похожие ветки 

 
MScorp   (2003-12-26 17:34) [0]

у меня проект, в который не хотелось бы добавлять форму и Application, но Handle нужен, для нормальной работы иконке в трее. Сразу оговорюсь, что это не троян, это мой резидент/драйвер для работы ДУ через COM-порт


 
alex_***   (2003-12-26 17:45) [1]

Handle модуля: hInstance.


 
jack128   (2003-12-26 17:47) [2]

создать окно на апи, если с Forms связоваться не хочешь..С Сети примров навалом...


 
alex_***   (2003-12-26 17:50) [3]

в rx есть компонент для tray, где создается свое невидимое окно, которое ловит сообщения от tray


 
MScorp   (2003-12-26 18:10) [4]

а если без создания окна и без компонента?
как-то можно?


 
jack128   (2003-12-26 18:36) [5]

>>а если без создания окна
никак.


 
Zelius   (2003-12-26 18:44) [6]

Можно, есть такая ф-ия
function AllocateHWnd(Method: TWndMethod): HWND;
живет в Classes (ее только в D7 туда перенесли, за что огромное им спасибо!). ТТАймер работает через нее.
Я через нее же делал консольное приложение, которое отображает иконку в трее с возможностью скрыть консоль по дабл клику.


 
jack128   (2003-12-26 18:50) [7]


> Можно, есть такая ф-ия
> function AllocateHWnd(Method: TWndMethod): HWND;
> живет в Classes

угу, в пятерке в Forms она живет. Эта функция как раз и создает окно...


 
Юрий Зотов   (2003-12-26 23:25) [8]

> MScorp (26.12.03 18:10) [4]

> а если без создания окна
Никак. Должно быть окно, чья оконная функция будет получать сообщения "от иконки". Обычно оно невидимое, но без него - никак. Иначе как же обрабатывать эти сообщения? Сама структура NOTIFYICONDATA заточена именно под окно, и ничего уж тут не поделаешь.

> и без компонента?
А вот это запросто. См. [2].


 
Mystic   (2003-12-27 11:54) [9]

Вот пример из MSDN окна на чистом API.

Как видишь, не так уж много. Рекомендую перевести на Delphi, заставь работать... Потом выкинуть ShowWindow и UpdateWindow и наращивать функциональность: проинициализировать иконку в трее, внутри MainWndProc обрабатывать сообщения, ...

#include <windows.h>

// Global variable

HINSTANCE hinst;

// Function prototypes.

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
InitApplication(HINSTANCE);
InitInstance(HINSTANCE, int);
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);

// Application entry point.

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;

if (!InitApplication(hinstance))
return FALSE;

if (!InitInstance(hinstance, nCmdShow))
return FALSE;

while (GetMessage(&msg, (HWND) NULL, 0, 0) != 0 && GetMessage(&msg, (HWND) NULL, 0, 0) != -1)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
UNREFERENCED_PARAMETER(lpCmdLine);
}

BOOL InitApplication(HINSTANCE hinstance)
{
WNDCLASSEX wcx;

// Fill in the window class structure with parameters
// that describe the main window.

wcx.cbSize = sizeof(wcx); // size of structure
wcx.style = CS_HREDRAW |
CS_VREDRAW; // redraw if size changes
wcx.lpfnWndProc = MainWndProc; // points to window procedure
wcx.cbClsExtra = 0; // no extra class memory
wcx.cbWndExtra = 0; // no extra window memory
wcx.hInstance = hinstance; // handle to instance
wcx.hIcon = LoadIcon(NULL,
IDI_APPLICATION); // predefined app. icon
wcx.hCursor = LoadCursor(NULL,
IDC_ARROW); // predefined arrow
wcx.hbrBackground = GetStockObject(
WHITE_BRUSH); // white background brush
wcx.lpszMenuName = "MainMenu"; // name of menu resource
wcx.lpszClassName = "MainWClass"; // name of window class
wcx.hIconSm = LoadImage(hinstance, // small class icon
MAKEINTRESOURCE(5),
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
LR_DEFAULTCOLOR);

// Register the window class.

return RegisterClassEx(&wcx);
}

BOOL InitInstance(HINSTANCE hinstance, int nCmdShow)
{
HWND hwnd;

// Save the application-instance handle.

hinst = hinstance;

// Create the main window.

hwnd = CreateWindow(
"MainWClass", // name of window class
"Sample", // title-bar string
WS_OVERLAPPEDWINDOW, // top-level window
CW_USEDEFAULT, // default horizontal position
CW_USEDEFAULT, // default vertical position
CW_USEDEFAULT, // default width
CW_USEDEFAULT, // default height
(HWND) NULL, // no owner window
(HMENU) NULL, // use class menu
hinstance, // handle to application instance
(LPVOID) NULL); // no window-creation data

if (!hwnd)
return FALSE;

// Show the window and send a WM_PAINT message to the window
// procedure.

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
return TRUE;

}

LRESULT CALLBACK MainWndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam) // second message parameter
{

switch (uMsg)
{
case WM_CREATE:
// Initialize the window.
return 0;

case WM_PAINT:
// Paint the window"s client area.
return 0;

case WM_SIZE:
// Set the size and position of the window.
return 0;

case WM_DESTROY:
// Clean up window-specific data objects.
return 0;

//
// Process other messages.
//

default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
3-37531
mva
2003-12-16 10:16
2004.01.13
Формат даты


14-37842
Devourer
2003-12-23 15:40
2004.01.13
2 глюка Win98


1-37757
Kuku
2003-12-30 00:38
2004.01.13
case of не работает для строк


1-37749
Titeha
2003-12-30 08:20
2004.01.13
Изменения в TComboBox и TDateTimePicker


3-37522
Sandman25
2003-12-16 17:33
2004.01.13
Insert и Autoincrement





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский