warlocklex |
Отправлено: 16.01.2006, 23:52 |
|
Не зарегистрирован
|
Мне нужно написать на winapi прогу типа «подсчет и-нет трафика» по dial-up.Куча вопросов появилась:
1)
2)Т.к я подключаюсь через модем то в MSDN говорят для модемов определения подключения используют функцию InternetDial. Ещё есть вот эта функция InternetCheckConnection() подобных много, а какаю мне лучше?
3)
4) как вывести на экран текст я знаю(DrawText(hDC,"текст", -1,&Rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);) а как выводить изменяющее время или трафик с каждой секундой? Надо обрабатывать запрос каждую секунду.
HDC hDC;PAINTSTRUCT PaintStruct;RECT Rect;
Вставляю в WM_TIMER
hDC = BeginPaint(hwnd,&PaintStruct);
GetClientRect(hwnd,&Rect);
DrawText (hDC,"показать", -1,&Rect,DT_LEFT);
EndPaint(hwnd,&PaintStruct);
Так он вообще не выводит,ни как!таймер такой SetTimer(hwnd, 1, 100, NULL); Пишу до while(GetMessage(&msg,NULL,0,0))
5) во мне нужно что бы после того как я ввел строку в файл курсор передвигался на начало следующе!
использую WriteFile(HANDLE,,,,NULL).
6) какой конвертировать и во что, что бы вывести в файл и вывести на экран
|
|
Grigoriy |
Отправлено: 17.01.2006, 01:17 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
QUOTE | HDC hDC;PAINTSTRUCT PaintStruct;RECT Rect;
Вставляю в WM_TIMER
hDC = BeginPaint(hwnd,&PaintStruct);
GetClientRect(hwnd,&Rect);
DrawText (hDC,"показать", -1,&Rect,DT_LEFT);
EndPaint(hwnd,&PaintStruct);
|
Ничего не могу предположить конкретно, поскольку в программе присутствуют другие операторы, которые не отображены.
QUOTE |
5) во мне нужно что бы после того как я ввел строку в файл курсор передвигался на начало следующе!
использую WriteFile(HANDLE,,,,NULL).
6) какой конвертировать и во что, что бы вывести в файл и вывести на экран
|
А приложение оконное или консольное ?
|
|
Grigoriy |
Отправлено: 17.01.2006, 02:44 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
Метод первый
CODE |
HWND hwnd;HDC hDC;RECT Rect;
//..............
char mes11[9]="показать\0";//наша строка с завершающимся нулём
hDC = GetDC(hwnd);//получить контекст устройства
Rect=GetClientRect(hwnd,&Rect);//получить размер клиентской области
DrawTextA(hDC,mes11,-1,&Rect,DT_LEFT);//выводим текст
ReleaseDC(hwnd,hDC);//освобождаем контекст устройства
|
Только я не понимаю в какой среде программирования вы составляете программу. Если в C++, то там функция GetClientRect принадлежит объекту-форме и не имеет параметров. Как от туда вызвать API-функцию GetClientRect, я не знаю
Метод второй.
CODE |
HWND hwnd;HDC hDC;int X1;int Y1;
X1=100;Y1=100;
//..............
char mes11[9]="показать\0";//наша строка с завершающимся нулём
hDC = GetDC(hwnd);//получить контекст устройства
TextOutA(hDC,X1,Y1,mes11,8);//выводим текст от точки (X1,Y1)
ReleaseDC(hwnd,hDC);//освобождаем контекст устройства
|
|
|
Guest |
Отправлено: 18.01.2006, 10:13 |
|
Не зарегистрирован
|
весь код:
CODE |
#include <windows.h>
#include <intshcut.h>
#include <Wininet.h>
#include <ras.h>
#include <stdio.h>
LRESULT CALLBACK HelloWorldWndProc ( HWND, UINT, UINT, LONG );
void zapiz(char* cTexBuffer)
{
char cBuffer[0x400];
HANDLE hFile;DWORD dwBytes;
hFile=CreateFile("traffic.log",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, "íåñîçäàë", "ÂÍÈÌÀÍÈÅ", NULL);
}
SetFilePointer(hFile,0,0,FILE_END);
WriteFile(hFile,cTexBuffer,40,&dwBytes,NULL);
/* for(int i=0;i<sizeof(cTexBuffer);i++){cTexBuffer[i]=0;};
MessageBox(NULL,cTexBuffer, "ÂÍÈÌÀÍÈÅ", NULL);*/
CloseHandle(hFile);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevlnstance,LPSTR IpszCmdParam,int nCmdShow )
{
HWND hWnd;
WNDCLASS WndClass;
MSG Msg;
char szClassName[] ="HELLO WORLD";
WndClass.style=CS_HREDRAW | CS_VREDRAW;
WndClass.lpfnWndProc=HelloWorldWndProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = hInstance;
WndClass.hIcon = LoadIcon (NULL,IDI_APPLICATION);
WndClass.hCursor=LoadCursor (NULL, IDC_ARROW);
WndClass.hbrBackground=(HBRUSH) GetStockObject (WHITE_BRUSH);
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = szClassName;
RegisterClass(&WndClass);
hWnd=CreateWindow(szClassName, "òåñòåð 1", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance, NULL);
/* Show our window */
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
SetTimer(hWnd,1,2000,NULL);
while(GetMessage(&Msg, NULL, 0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
KillTimer(hWnd,1);
return Msg.lParam;
}
LRESULT CALLBACK HelloWorldWndProc(HWND hWnd,UINT Message,UINT wParam,LONG lParam)
{
HDC hDC; DWORD ASI; char* sim; int qwe=12;
PAINTSTRUCT PaintStruct;
RECT Rect; SYSTEMTIME st;
GetLocalTime(&st);
switch(Message)
{
/*case WM_TIMER:
if(Message==WM_PAINT) {
hDC = BeginPaint(hWnd,&PaintStruct);
GetClientRect(hWnd,&Rect);
DrawText(hDC,sim, -1,&Rect,DT_LEFT);
EndPaint(hWnd,&PaintStruct); }
break;*/
case WM_PAINT:
//sim="sim";
_ui64toa(qwe,sim,2);//-тут ошибку выдает при запуске
hDC = BeginPaint(hWnd,&PaintStruct);
GetClientRect(hWnd,&Rect);
DrawText(hDC,sim, -1,&Rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hWnd,&PaintStruct);
return 0;
case WM_DESTROY:
GetLocalTime(&st);
_ltoa(st.wMinute,sim,2);//-тут ошибку выдает при запуске
zapiz(sim);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,Message,wParam,lParam);
} |
Отредактировано Gedeon — 18/01/2006, 13:25 |
|
icewolf |
Отправлено: 19.01.2006, 10:19 |
|
Не зарегистрирован
|
какой функцией определить трафик входящий,если я использую модем? |
|
Guest |
Отправлено: 20.01.2006, 04:11 |
|
Не зарегистрирован
|
RAS_STATS r_stat;HRASCONN hRasCon;cInByte[BUFSIZE]
r_stat.dwSize = sizeof(RAS_STATS);
stat=RasGetConnectionStatistics(&hRasCon, &r_stat);
if (stat!=0){itoa(stat,cInByte,10);
MessageBox(hwnd, cInByte, "RasGetConnectionStatistics", NULL);
}
вылетает програ!
что не так? |
|
|