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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 16:26   #1
alex_stp
Новичок
Джуниор
 
Регистрация: 08.04.2011
Сообщений: 1
По умолчанию Виртуальная клавиатура или как вставить символ в чужое приложение

Здравствуйте. Пишу приложение виртуальная клавиатура на winapi используя только цифры от 0 до 9. hwnd компонента по которому кликнула левая кнопка мыши отловить получается, но нему понять как напечатать символ в этом компоненте. функция SetWindowText не помогает. может подскажите ещё варианты?

Заранее благодарю за ответы.

вот, что у меня есть

// 3.cpp : Defines the entry point for the application.
//

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

#define ID_BUTTON0 3000
#define ID_BUTTON1 3001
#define ID_BUTTON2 3002
#define ID_BUTTON3 3003
#define ID_BUTTON4 3004
#define ID_BUTTON5 3005
#define ID_BUTTON6 3006
#define ID_BUTTON7 3007
#define ID_BUTTON8 3008
#define ID_BUTTON9 3009

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char Name[]="MWind";
static HWND hButton0;
static HWND hButton1;
static HWND hButton2;
static HWND hButton3;
static HWND hButton4;
static HWND hButton5;
static HWND hButton6;
static HWND hButton7;
static HWND hButton8;
static HWND hButton9;

HINSTANCE hinst;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE Prev,
LPSTR Line,
int Show)
{
MSG msg;
HWND hwnd;

hinst=hInstance;

WNDCLASS wc;
wc.style=wc.cbClsExtra=wc.cbWndExtr a=0;
wc.lpfnWndProc=WndProc;
wc.hInstance=hinst;
wc.hIcon=LoadIcon(NULL,IDI_APPLICAT ION);
wc.hCursor=LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WIN DOW+1);
wc.lpszMenuName="Main";
wc.lpszClassName=Name;
wc.style=CS_HREDRAW | CS_VREDRAW;
if (RegisterClass(&wc)==0) return FALSE;


hwnd=CreateWindowEx(WS_EX_TOPMOST, Name,"Âèðòóàëüíàÿ êëàâèàòóðà",
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
100,100,550,250,0, 0, hInstance, NULL);

if (!hwnd) return FALSE;

hButton0 = CreateWindow("button", "0",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
0,0,30,30, hwnd, (HMENU)ID_BUTTON0, hInstance, NULL);

hButton1 = CreateWindow("button", "1",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
30,0,30,30, hwnd, (HMENU)ID_BUTTON1, hInstance, NULL);

hButton2 = CreateWindow("button", "2",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
60,0,30,30, hwnd, (HMENU)ID_BUTTON2, hInstance, NULL);

hButton3 = CreateWindow("button", "3",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
90,0,30,30, hwnd, (HMENU)ID_BUTTON3, hInstance, NULL);

hButton4 = CreateWindow("button", "4",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
120,0,30,30, hwnd, (HMENU)ID_BUTTON4, hInstance, NULL);

hButton5 = CreateWindow("button", "5",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
150,0,30,30, hwnd, (HMENU)ID_BUTTON5, hInstance, NULL);

hButton6 = CreateWindow("button", "6",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
180,0,30,30, hwnd, (HMENU)ID_BUTTON6, hInstance, NULL);

hButton7 = CreateWindow("button", "7",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
210,0,30,30, hwnd, (HMENU)ID_BUTTON7, hInstance, NULL);

hButton8 = CreateWindow("button", "8",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
240,0,30,30, hwnd, (HMENU)ID_BUTTON8, hInstance, NULL);

hButton9 = CreateWindow("button", "9",
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
270,0,30,30, hwnd, (HMENU)ID_BUTTON9, hInstance, NULL);

while (GetMessage(&msg, 0, 0, 0)) DispatchMessage(&msg);
return msg.wParam;
}

HHOOK MouseHook;
MSG msg1;

int x, y;
POINT pt;
HWND hWnd;
bool nnn=false;
//---------------------------------------------------------------------------
LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam) {

switch (wParam) {
case WM_LBUTTONDOWN :

if(nnn==false)
{
GetCursorPos (&pt);
hWnd = WindowFromPoint(pt);
nnn=true;
}

break;
}
return CallNextHookEx(MouseHook, nCode, wParam, lParam);
}






LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{

switch (msg)
{

case WM_COMMAND:
{
if(lParam==(LPARAM)hButton0)
{
//MessageBox(hwnd,"111","111",MB_YESN O|MB_ICONQUESTION);
//SetWindowText(hwnd, "0");
MouseHook = SetWindowsHookEx(14,&LowLevelMouseP roc, hinst, NULL);

while (GetMessage(&msg1,(HWND)(NULL),0,0) )
{
TranslateMessage(&msg1);
x = msg1.pt.x;
y = msg1.pt.y;
DispatchMessage(&msg1);
}
//return (0);
return (0);
}

if(lParam==(LPARAM)hButton1)
{
SetWindowText(hWnd, (LPCTSTR)"0");
//PostMessageA(hWnd, WM_CHAR, "0", 1)
//PostMessage(hWnd, WM_IME_CHAR, 0, (LPARAM)"0");
return (0);
}

if(lParam==(LPARAM)hButton2)
{

UnhookWindowsHookEx(MouseHook);
nnn=false;
}

}

case WM_DESTROY:
{
UnhookWindowsHookEx(MouseHook);
PostQuitMessage(0);

return (0);
}

case WM_QUIT:
{
UnhookWindowsHookEx(MouseHook);
PostQuitMessage(0);

return (0);
}

}
return DefWindowProc(hwnd, msg, wParam, lParam);
}

Последний раз редактировалось alex_stp; 08.04.2011 в 16:33.
alex_stp вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Виртуальная клавиатура basil Общие вопросы Delphi 6 02.10.2014 08:16
Виртуальная клавиатура mobilitialex Общие вопросы Delphi 12 18.05.2012 00:13
Виртуальная клавиатура nik-maximal Общие вопросы Delphi 4 30.03.2011 22:43
Виртуальная клавиатура Alex Cones Мультимедиа в Delphi 2 10.05.2009 20:03
Как активировать чужое приложение Hintman Win Api 3 30.04.2007 16:24