Консультация № 131457
10.04.2008, 02:50
0.00 руб.
0 1 1
Help me!!!
устал, уже несколько часов борюсь с MSDN - кой . не могу решить след. проблему- надо нарисовать в сонсольном приложении фигурку , например rectangle , и как я понимяю надо получить контекст GetDC(hwnd). только где узнать этот hwnd для этой функции !!!???
напишите пожалуйсто небольшой фрагментик кода с получением контекста и рисованием чего-либо. И как можно отслеживать здесь же местоположение мыши в real-time+ действмя мыши. о4 надо сделать менюшку.
заранее благодарен

Приложение:
hdc = GetDC(hOutput); MoveToEx(hdc, 11,11, NULL); LineTo(hdc, 555,555); ReleaseDC(hwnd, hdc);

Обсуждение

давно
Посетитель
7438
7205
11.04.2008, 15:21
общий
это ответ
Здравствуйте, S@ZaN!
Примерная программа в приложении

Приложение:
#include <windows.h>#include <stdio.h>#include <conio.h>#include <Wincon.h>HWND FindConsoleWindow(void) ;void fDrawMenu(char* s,int weight, int R, int G, int B, int x1, int y1, int x2, int y2) ; HWND FindConsoleWindow(void){ HWND hWnd ; char ConsoleWindowTitle[256] ; char * UniqueConsoleWindowTitle = "MyUniqueName" ; GetConsoleTitle((char*)ConsoleWindowTitle,256) ; SetConsoleTitle(UniqueConsoleWindowTitle) ; Sleep(40) ; //to ensure the window title was updated. hWnd = FindWindow(NULL, UniqueConsoleWindowTitle) ; SetConsoleTitle((char*)ConsoleWindowTitle) ; return hWnd ;}void fDrawMenu(char* s,int weight, int R, int G, int B, int x1, int y1, int x2, int y2){ HDC hdc; HWND hwnd=FindConsoleWindow(); hdc=GetWindowDC(hwnd); HPEN pen=CreatePen(PS_SOLID,weight,RGB(R,G,B)); SelectObject(hdc,pen); Rectangle(hdc,x1,y1,x2,y2); SetTextColor(hdc,RGB(44,255,0)); SetBkMode(hdc,TRANSPARENT); TextOut(hdc,x1+7,y1, s, strlen(s)); ReleaseDC(hwnd,hdc); } int main(int argc, char* argv[]){ HANDLE hConsole ; DWORD dw, i ; INPUT_RECORD ir[10] ; fDrawMenu("TEST",2,200,100,100,100,100,300,100) ; hConsole = GetStdHandle(STD_INPUT_HANDLE) ;; FlushConsoleInputBuffer(hConsole); WriteConsoleInput(hConsole,(INPUT_RECORD*)ir,1,&dw) ; while (1) { dw = WaitForSingleObject(hConsole, INFINITE); ReadConsoleInput(hConsole,(INPUT_RECORD*)ir,10,&dw) ; for (i=0; i<dw; i++) { switch (ir[i].EventType) { case MOUSE_EVENT: return 0 ; case KEY_EVENT: if (ir[i].Event.KeyEvent.bKeyDown && (ir[i].Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)) return 0 ; } } } return 0;}
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа