|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.04.2011, 16:26 | #1 |
Новичок
Джуниор
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Виртуальная клавиатура | 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 |