Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как добаваить кнопку

3.8K
07 июля 2005 года
arphey
51 / / 30.10.2004
Люди! Помогитя! Начал изучать API!
Вобщем окно создал а как в него добавить например кнопку не знаю!
Может кто подскажет?
Страницы:
439
07 июля 2005 года
Rexulnik
217 / / 09.02.2005
Цитата:
Originally posted by arphey
Люди! Помогитя! Начал изучать API!
Вобщем окно создал а как в него добавить например кнопку не знаю!
Может кто подскажет?



Смотри в MSDN'е функцию CreateWindow

3.8K
10 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by Rexulnik
Смотри в MSDN'е функцию CreateWindow


Ладно кнопку я поместил! Но что-то все элементы в
этом окне выгледят как-то фигово! В обычном DialogBox скажем EditBox выглядит лучше чем в моем

439
10 июля 2005 года
Rexulnik
217 / / 09.02.2005
Цитата:
Originally posted by arphey
Ладно кнопку я поместил! Но что-то все элементы в
этом окне выгледят как-то фигово! В обычном DialogBox скажем EditBox выглядит лучше чем в моем



Так ты стили настрой... тогда будет выглядеть нормально

406
10 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by Rexulnik
Так ты стили настрой... тогда будет выглядеть нормально



Если ты имееш ввиду стиль как в XP. то он добавляется следующим образом:

1. добавь в твой resource.h строку
#define MANIFEST_RESOURCE_ID 1

2. добавь в resource.rc
MANIFEST_RESOURCE_ID RT_MANIFEST "app.exe.manifest"

3. создай файл в корне проекта с именем app.exe.manifest
и засунь туда следующий текст:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<description>Program Description</description>
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="FinderMem.exe"
type="win32"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

439
10 июля 2005 года
Rexulnik
217 / / 09.02.2005
Цитата:
Originally posted by vitaly2003s
Если ты имееш ввиду стиль как в XP. то он добавляется следующим образом:

1. добавь в твой resource.h строку
#define MANIFEST_RESOURCE_ID 1

2. добавь в resource.rc
MANIFEST_RESOURCE_ID RT_MANIFEST "app.exe.manifest"

3. создай файл в корне проекта с именем app.exe.manifest
и засунь туда следующий текст:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<description>Program Description</description>
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="FinderMem.exe"
type="win32"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>



Та зачем так париться? Можно просто при создании окна указать его стили...

406
10 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by Rexulnik
Та зачем так париться? Можно просто при создании окна указать его стили...



Покажи пример как програмно ты создаш такой стиль XP к примеру обыкновенной BS_PUSHBUTTON?
Просто интересно как енто ты програмно заставиш винду использовать библиотеку Microsoft.Windows.Common-Controls 6.0 (Comctl32.dll) вместо 5 версии которая по умолчанию грузится вместе с прогой в XP для совместимости со старыми прогами,а данный файл указывает винде использовать 6 - ую версию вместо 5,отсюда и вид у контролов совершенно другой. Может я че не знаю,тогда поправьте.

439
10 июля 2005 года
Rexulnik
217 / / 09.02.2005
Цитата:
Originally posted by vitaly2003s
Покажи пример



Щас я не могу пример дать, потому-што у меня щас студии нема, я ткоа винду переставил... там по-моему в параметрах CreateWindow можно задать св-ва окна... или потом SetWindowLong попробуй... св-ва этих функций смотри в MSDN...
А лучше всего юзать MFC, там всё это инкапсулировано и не надо никак заморачиваться с бесчисленным кол-вом функций... всё уже готово (всё уже украдено до нас :))))

406
10 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by Rexulnik
Щас я не могу пример дать, потому-што у меня щас студии нема, я ткоа винду переставил... там по-моему в параметрах CreateWindow можно задать св-ва окна... или потом SetWindowLong попробуй... св-ва этих функций смотри в MSDN...
А лучше всего юзать MFC, там всё это инкапсулировано и не надо никак заморачиваться с бесчисленным кол-вом функций... всё уже готово (всё уже украдено до нас :))))



Щя ток смотрел и CreateWindow и CreateWindowEx и SetWindowLong,чет ниче не нашел. Тогда напиши всеже че за параметры,очень интересно. А MFC я не использую. Уж если и использовать библиотеку то WTL но никак не MFC.

439
10 июля 2005 года
Rexulnik
217 / / 09.02.2005
Цитата:
Originally posted by vitaly2003s
Щя ток смотрел и CreateWindow и CreateWindowEx и SetWindowLong,чет ниче не нашел. Тогда напиши всеже че за параметры,очень интересно. А MFC я не использую. Уж если и использовать библиотеку то WTL но никак не MFC.



А чем те не нравится MFC? И WTL и MFC используют WinAPI
ну я не помню параметры, да их и не налдо помнить... посмотри лучше, там кажись шото в SetWindowLong в первом параметре хэндл, во втором какие стили окна добавить, а в третьем каие убрать... или наоборот... не помню уже, ещё можеш глянуть функцию SetWindowStyle... или она в ... кароче глянь...

406
10 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by Rexulnik
А чем те не нравится MFC? И WTL и MFC используют WinAPI
ну я не помню параметры, да их и не налдо помнить... посмотри лучше, там кажись шото в SetWindowLong в первом параметре хэндл, во втором какие стили окна добавить, а в третьем каие убрать... или наоборот... не помню уже, ещё можеш глянуть функцию SetWindowStyle... или она в ... кароче глянь...


Не ну ты сам посмотри в msdn на msdn.com глянь,может имееш ввиду WS_EX_LAYERED? Хотя врядли. Остальные стили вряд ли подойдут,посмотри сам,как найдеш напиши.

SetWindowStyle? Что то новенькое...

3.8K
10 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Не ну ты сам посмотри в msdn на msdn.com глянь,может имееш ввиду WS_EX_LAYERED? Хотя врядли. Остальные стили вряд ли подойдут,посмотри сам,как найдеш напиши.

SetWindowStyle? Что то новенькое...



Слыш ребята? че-то не помогает! Вы напишите че точно в стилях выставить. И че это за файл !FinderMem.exe!У меня такого нету. Да, и хотелось бы шрифт в окне поменять , а то он какой-то корявый

406
11 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
Слыш ребята? че-то не помогает! Вы напишите че точно в стилях выставить. И че это за файл !FinderMem.exe!У меня такого нету. Да, и хотелось бы шрифт в окне поменять , а то он какой-то корявый


FinderMem.exe - это моя прога замени на свое имя,роли не играет
Все должно работать если ты все сделал как я написал, а насчет шрифта,так получи контект устройства этого окна hdc = GetDC(src_hwnd),затем
создай нужный шрифт функцией hfont= CreateFont(...), и затем выбери полученый хэндл шрифта в требуемый контекст типа SelectObject(hdc,hfont)

3.8K
11 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
FinderMem.exe - это моя прога замени на свое имя,роли не играет
Все должно работать если ты все сделал как я написал, а насчет шрифта,так получи контект устройства этого окна hdc = GetDC(src_hwnd),затем
создай нужный шрифт функцией hfont= CreateFont(...), и затем выбери полученый хэндл шрифта в требуемый контекст типа SelectObject(hdc,hfont)



Незнаю. Все как сказал сделал но кнопки на икспишные не похожи. Мможет я не так их делаю,но у меня так:
HWND h_butok;
h_butok=CreateWindow("button",LPCTSTR("OK"),WS_VISIBLE|WS_BORDER|WS_CHILD,620,430,100,25,hWnd,(HMENU)IDC_BUTOK,hInst,NULL);

406
11 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
Незнаю. Все как сказал сделал но кнопки на икспишные не похожи. Мможет я не так их делаю,но у меня так:
HWND h_butok;
h_butok=CreateWindow("button",LPCTSTR("OK"),WS_VISIBLE|WS_BORDER|WS_CHILD,620,430,100,25,hWnd,(HMENU)IDC_BUTOK,hInst,NULL);


У тебя вообще операционка то XP? Если да то выложи сюда исходник,посмотрю,подкоректирую.

3.8K
11 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
У тебя вообще операционка то XP? Если да то выложи сюда исходник,посмотрю,подкоректирую.


Операционка ХР. Со шрифтом че-то тоже не получается.

mmain.cpp

#include "stdafx.h"
#include "resource.h"
#include "windows.h"
HINSTANCE hInst;

ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{

MSG msg;
HACCEL hAccelTable;


MyRegisterClass(hInstance);


if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}

hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_FIELDBOOK);


while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return msg.wParam;
}


ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = 0;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = 0;//LoadIcon(hInstance, (LPCTSTR)IDI_FIELDBOOK);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wcex.lpszMenuName = (LPCSTR)IDC_FIELDBOOK;
wcex.lpszClassName = "MyWindow";
wcex.hIconSm = 0;//LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

return RegisterClassEx(&wcex);
}


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance;

HWND hWnd;
hWnd = CreateWindowEx(WS_EX_STATICEDGE,"MyWindow", "FieldBook", WS_CAPTION|WS_MINIMIZEBOX|WS_SYSMENU|WS_BORDER|WS_EX_DLGMODALFRAME,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL,0, hInstance, NULL);
HWND h_butok;
h_butok=CreateWindow("button","OK",WS_VISIBLE|WS_BORDER|WS_CHILD,620,430,100,25,hWnd,(HMENU)IDC_BUTOK,hInst,NULL);
HWND h_butdate;
h_butdate=CreateWindow("BUTTON","Получить",WS_VISIBLE|WS_CHILD,500,430,100,25,hWnd,(HMENU)IDC_BUTGET,hInst,NULL);
HWND h_edget;
h_edget=CreateWindow("RichEdit","",WS_BORDER|WS_VISIBLE|WS_CHILD,100,430,100,25,hWnd,(HMENU)IDC_EDGET,hInst,NULL);


if (!hWnd)
{
return FALSE;
}
//SetWindowLong(hWnd,0,GWL_STYLE);
HDC hdc = GetDC(h_butdate);
HFONT hfont= CreateFont(8,8,GM_ADVANCED,0,FW_NORMAL,true,0,0,RUSSIAN_CHARSET,OUT_OUTLINE_PRECIS,CLIP_LH_ANGLES,NONANTIALIASED_QUALITY,FF_ROMAN,"Arial");
SelectObject(hdc,hfont);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

return TRUE;
}


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;


switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);

switch (wmId)
{
case IDM_about :
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_MNU_OPEN:
MessageBox(0,"OPEN","main",MB_OK);
break;
case IDM_MNU_SAVE:
MessageBox(0,"SAVE","main",MB_OK);
break;
case IDC_BUTOK:
MessageBox(0,"OK","main",MB_OK);
break;
case IDC_BUTGET:
MessageBox(0,"GET","main",MB_OK);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;


case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);

RECT rt;
GetClientRect(hWnd, &rt);

EndPaint(hWnd, &ps);
break;
case WM_CREATE:
//HWND h_butok;
//h_butok.CreateWindow("button","aa",WS_VISIBLE|WS_BORDER|WS_CHILD,0,0,100,50,hWnd,(HMENU)IDC_BUTOK,hInst,NULL);

break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}


LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;

case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}

406
11 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Короче не надо это сюда,я просил исходник со всеми файлами в zip Формате приаттаченый к твоему сообщению. А теперь я кажись понял в чем проблема и отнюдь не из твоих исходников,скорее всего ты не в том месте всатавил строки:

MANIFEST_RESOURCE_ID RT_MANIFEST "yourapp.exe.manifest"

вобщем открой блокнотом resource.rc и найди там строки вроде этих:
#ifdef APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END

3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED


И сразу после директивы #endif // APSTUDIO_INVOKED

вставляй строку MANIFEST_RESOURCE_ID RT_MANIFEST "yourapp.exe.manifest",а 1 и 3 ой пункт делай как я описал.Так же включи где нить в своем хедере или прям в самом верху своего mmain.cpp строки(если у тебя этого раньше не было сделано):
#include <commctrl.h>
#pragma comment (lib,"comctl32.lib")

и добавь функцию InitCommonControls() в свой InitInstance в самое начало перед первыми вызовами CreateWindow, вроде все.
Если все равно не получится то упакуй весь проект со всеми файлами в архи и выложи здесь.
3.8K
11 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Короче не надо это сюда,я просил исходник со всеми файлами в zip Формате приаттаченый к твоему сообщению. А теперь я кажись понял в чем проблема и отнюдь не из твоих исходников,скорее всего ты не в том месте всатавил строки:

MANIFEST_RESOURCE_ID RT_MANIFEST "yourapp.exe.manifest"

вобщем открой блокнотом resource.rc и найди там строки вроде этих:
#ifdef APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END

3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED


И сразу после директивы #endif // APSTUDIO_INVOKED

вставляй строку MANIFEST_RESOURCE_ID RT_MANIFEST "yourapp.exe.manifest",а 1 и 3 ой пункт делай как я описал.Так же включи где нить в своем хедере или прям в самом верху своего mmain.cpp строки(если у тебя этого раньше не было сделано):
#include <commctrl.h>
#pragma comment (lib,"comctl32.lib")

и добавь функцию InitCommonControls() в свой InitInstance в самое начало перед первыми вызовами CreateWindow, вроде все.
Если все равно не получится то упакуй весь проект со всеми файлами в архи и выложи здесь.



Все! Спасибо!С манифестом разобрался. Осталось разобраться со шрифром. И еще меня интересует вопрос: Почему у меня не оьображается RichEdit!

406
11 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
Все! Спасибо!С манифестом разобрался. Осталось разобраться со шрифром. И еще меня интересует вопрос: Почему у меня не оьображается RichEdit!


Теперь про шрифт. SelectObject для контролов не подходит,так как ты всего лиш замениш на свой hfont его текущий в hdc,но контролы хранят gdi обекты такие как шрифт,кисть и др в отдельном месте а не в текущем hdc,поэтому для установки шрифта пракстически на всех контролах буть то кнопка или edit - box и спользуется сообщение WM_SETTEXT котрое заменяет стандартный шрифт на твой собственный,делается это примерно так:
HWND hctl = CreateWindow("BUTTON",...
HFONT hfont=CreateFont(....
SendMessage(hctl,WM_SETFONT,(WPARAM)hfont,(LPARAM)true);

3.8K
11 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Теперь про шрифт. SelectObject для контролов не подходит,так как ты всего лиш замениш на свой hfont его текущий в hdc,но контролы хранят gdi обекты такие как шрифт,кисть и др в отдельном месте а не в текущем hdc,поэтому для установки шрифта пракстически на всех контролах буть то кнопка или edit - box и спользуется сообщение WM_SETTEXT котрое заменяет стандартный шрифт на твой собственный,делается это примерно так:
HWND hctl = CreateWindow("BUTTON",...
HFONT hfont=CreateFont(....
SendMessage(hctl,WM_SETFONT,(WPARAM)hfont,(LPARAM)true);



А про RichEdit ничего не знаешь? Почему его не видно? И если не трудно какой нить пример с CommonDialog'ом!

406
11 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
А про RichEdit ничего не знаешь? Почему его не видно? И если не трудно какой нить пример с CommonDialog'ом!


Короче с рич едитом необходимо сделать следующее:
LoadLibrary("Riched32.dll");
HWND hff=CreateWindowEx(0,"RichEdit","" , ES_LEFT |ES_MULTILINE |WS_VISIBLE|WS_CHILDWINDOW,0,0,400,500,hWnd,0,0,0);

Т.е. необходимо грузить библиотеку рича как показано выше

3.8K
15 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Короче с рич едитом необходимо сделать следующее:
LoadLibrary("Riched32.dll");
HWND hff=CreateWindowEx(0,"RichEdit","" , ES_LEFT |ES_MULTILINE |WS_VISIBLE|WS_CHILDWINDOW,0,0,400,500,hWnd,0,0,0);

Т.е. необходимо грузить библиотеку рича как показано выше




Слушай,помоги еще в одной фигне: не могу забрать путь из GetOpenFileName() и не могу установить филтр:
OPENFILENAME cd;
LPSTR file;
cd.lStructSize =sizeof(cd);
cd.hwndOwner = hWnd;
cd.hInstance = hInst;
cd.lpstrFilter = "Текстовые файлы,*.txt";
cd.lpstrCustomFilter = NULL ;
cd.nMaxCustFilter = NULL;
cd.nFilterIndex = NULL;

cd.nMaxFile = 256;
cd.lpstrFileTitle = NULL;
cd.nMaxFileTitle = NULL;
cd.lpstrInitialDir = NULL;
cd.lpstrTitle = NULL;
cd.Flags = OFN_CREATEPROMPT|OFN_HIDEREADONLY|OFN_EXPLORER;
cd.nFileOffset = NULL;
cd.nFileExtension= NULL;
cd.lpstrDefExt = NULL;
cd.lCustData = NULL;
cd.lpfnHook = NULL;
cd.lpTemplateName = NULL;

GetOpenFileName(&cd);
file=cd.lpstrFile;

Подскажи что исправить

406
15 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Вобщем возьми мою функцию открытия диалога и посмотри как она работает:

char* OpenFileDialog(HINSTANCE hInstance,HWND hwowner,LPCSTR lpheader,LPCSTR lpfilter)
{
OPENFILENAME ofn;
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwowner;
ofn.hInstance = hInstance;
ofn.lpstrFilter=lpfilter;
ofn.lpstrFile = (LPSTR)calloc(MAX_PATH,sizeof(WCHAR));
ofn.nMaxFile = MAX_PATH;
ofn.lpstrTitle = lpheader;
ofn.Flags = OFN_HIDEREADONLY | OFN_EXPLORER | OFN_PATHMUSTEXIST |OFN_NONETWORKBUTTON | OFN_NOREADONLYRETURN ;
if(GetOpenFileName(&ofn)) return ofn.lpstrFile;
if(ofn.lpstrFile!=0) free(ofn.lpstrFile);
return 0;
}

Используй так:

int main(...)
{
char* namepath;
//возвращяет имя выбранного файла
namepath=OpenFileDialog(s_gif.hins,hwndDlg,"Open table","All Support Type\0*.jpg;*.jpeg;*.bmp;*.png;*.gif\0JPEG\0*.jpg;*.jpeg\0BMP\0*.bmp\0PNG\0*.png\0GIF\0*.gif\0");

}

Когда запустиш,думаю поймеш как формируются фильтры
406
15 июля 2005 года
vitaly2003s
481 / / 27.07.2004
В твоем примере ты не выделил память под путь для файла а именно lpstrFile

Эксперементирую,так ты найдеш правильный путь!
И... читай MSDN тщятельнее.
3.8K
19 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
В твоем примере ты не выделил память под путь для файла а именно lpstrFile

Эксперементирую,так ты найдеш правильный путь!
И... читай MSDN тщятельнее.



Ой! Поможи еще разок. Что-то я задолбался с этим char'ом. Читаю файл,хочу загнать каждую строку в массив и что-то не выходит.

FILE *defile;
char s1[19];
char mas[6];
int i;
i=0;
defile=fopen("default.txt","r");
while (fgets(s1, sizeof(s1), defile)
{
mas=s1;
i+=1;
}
fclose(defile);

406
20 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
Ой! Поможи еще разок. Что-то я задолбался с этим char'ом. Читаю файл,хочу загнать каждую строку в массив и что-то не выходит.

FILE *defile;
char s1[19];
char mas[6];
int i;
i=0;
defile=fopen("default.txt","r");
while (fgets(s1, sizeof(s1), defile)
{
mas=s1;
i+=1;
}
fclose(defile);



И че ты пытаешся сделать здесь? Присвоить 1 первый байт однобайтному массиву .
Делай так:

FILE *defile;
char s1[19];
char* mas[6];
int count_mas=0;
defile=fopen("default.txt","r");
while (fgets(s1, sizeof(s1), defile))
{
mas[count_mas]=(char*)malloc(sizeof(s1)*sizeof(char)+1);//выделяем память под массив
strncpy((char*)mas[count_mas],(char*)s1,sizeof(s1));//копируем строку в массив
count_mas++;
if(count_mas>5) break;
}
fclose(defile); [/QUOTE]

А лучше используй string из STL

3.8K
21 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
И че ты пытаешся сделать здесь? Присвоить 1 первый байт однобайтному массиву .
Делай так:

FILE *defile;
char s1[19];
char* mas[6];
int count_mas=0;
defile=fopen("default.txt","r");
while (fgets(s1, sizeof(s1), defile))
{
mas[count_mas]=(char*)malloc(sizeof(s1)*sizeof(char)+1);//выделяем память под массив
strncpy((char*)mas[count_mas],(char*)s1,sizeof(s1));//копируем строку в массив
count_mas++;
if(count_mas>5) break;
}
fclose(defile);



А лучше используй string из STL [/QUOTE]

Что такое STL? И как это подключить?

406
21 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
А лучше используй string из STL



Что такое STL? И как это подключить? [/QUOTE]
STL это Standard Template Library (библиотека шаблонов)
Почитай что нить типа С++ для начинающих,хотя лучше страуструпа.
#include <string>
#include <iostream>

using namespace std ;

int main()
{
string s1;
cout << "Enter a sentence (use <space> as the delimiter): ";
getline(cin,s1, ' ');
cout << "You entered: " << s1 << endl;;
}

3.8K
21 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Что такое STL? И как это подключить?


STL это Standard Template Library (библиотека шаблонов)
Почитай что нить типа С++ для начинающих,хотя лучше страуструпа.
#include <string>
#include <iostream>

using namespace std ;

int main()
{
string s1;
cout << "Enter a sentence (use <space> as the delimiter): ";
getline(cin,s1, ' ');
cout << "You entered: " << s1 << endl;;
} [/QUOTE]

Кстати не знаешь почему когда посылаю NetMessageBufferSend() сообщение, например 'Hello' приходит '??o'

3.8K
21 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by arphey
STL это Standard Template Library (библиотека шаблонов)
Почитай что нить типа С++ для начинающих,хотя лучше страуструпа.
#include <string>
#include <iostream>

using namespace std ;

int main()
{
string s1;
cout << "Enter a sentence (use <space> as the delimiter): ";
getline(cin,s1, ' ');
cout << "You entered: " << s1 << endl;;
}



Кстати не знаешь почему когда посылаю NetMessageBufferSend() сообщение, например 'Hello' приходит '??o' [/QUOTE]


И может я чего не понимаю ,но String у меня не работает!

D:\Win_my_source\fieldbook\fieldbook.cpp(39) : error C2146: syntax error : missing ';' before identifier 's1'
D:\Win_my_source\fieldbook\fieldbook.cpp(39) : error C2501: 'string' : missing storage-class or type specifiers
D:\Win_my_source\fieldbook\fieldbook.cpp(39) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

fieldbook.exe - 3 error(s), 0 warning(s)

Вот такую байду пишет.

406
21 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Зачем тебе нужна NetMessageBufferSend,покажи код.

Не String a string так и пиши.
Надеюсь ты не используеш int main(){},вставь этот пример в свою функцию и включи директивы с заголовками которые описаны выше,они должны находится в том же файле что и функция либо в глобальном файле. Если не получится покажи файл где ты пытаешся это использовать. Все здесь прекрасно работает.
3.8K
21 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Зачем тебе нужна NetMessageBufferSend,покажи код.

Не String a string так и пиши.
Надеюсь ты не используеш int main(){},вставь этот пример в свою функцию и включи директивы с заголовками которые описаны выше,они должны находится в том же файле что и функция либо в глобальном файле. Если не получится покажи файл где ты пытаешся это использовать. Все здесь прекрасно работает.



С NetMessageBufferSend() хочу просто по эксперементировать. А со string'ом напроч не хочет
работать.

406
22 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
С NetMessageBufferSend() хочу просто по эксперементировать. А со string'ом напроч не хочет
работать.



С NetMessageBufferSend у тебя была проблема из за того что ты передавал ansi(multi byte char) а не unicode (wide char) строки поэтому смотри код для преобразования строк:
wchar_t* bufw;
bufw=(wchar_t*)calloc(50,sizeof(wchar_t));

mbstowcs(bufw,(char*)msg,strlen((char*)msg));
x= NetMessageBufferSend (NULL,L"127.0.0.1",L"127.0.0.1",(LPBYTE)bufw,sizeof(msg)*2);

теперь все должно быть ОК.

А про string ты забыл указать using namespace std;
можно и без этой директивы но тогда нужно писать так:
std::string c1;

теперь твой код весь рабочий. вот выложил.

3.8K
22 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
С NetMessageBufferSend у тебя была проблема из за того что ты передавал ansi(multi byte char) а не unicode (wide char) строки поэтому смотри код для преобразования строк:
wchar_t* bufw;
bufw=(wchar_t*)calloc(50,sizeof(wchar_t));

mbstowcs(bufw,(char*)msg,strlen((char*)msg));
x= NetMessageBufferSend (NULL,L"127.0.0.1",L"127.0.0.1",(LPBYTE)bufw,sizeof(msg)*2);

теперь все должно быть ОК.

А про string ты забыл указать using namespace std;
можно и без этой директивы но тогда нужно писать так:
std::string c1;

теперь твой код весь рабочий. вот выложил.



Ой! Спасибо! А то не знаю сколько я бы еще парился! Впринципе все нужные функции для работы с char'ом я уже написал сам! А за NetBufferSend() спасибо!

3.8K
22 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
С NetMessageBufferSend у тебя была проблема из за того что ты передавал ansi(multi byte char) а не unicode (wide char) строки поэтому смотри код для преобразования строк:
wchar_t* bufw;
bufw=(wchar_t*)calloc(50,sizeof(wchar_t));

mbstowcs(bufw,(char*)msg,strlen((char*)msg));
x= NetMessageBufferSend (NULL,L"127.0.0.1",L"127.0.0.1",(LPBYTE)bufw,sizeof(msg)*2);

теперь все должно быть ОК.

А про string ты забыл указать using namespace std;
можно и без этой директивы но тогда нужно писать так:
std::string c1;

теперь твой код весь рабочий. вот выложил.



А может ты еще знаешь как заставить NetMessageBufferSend() понимать русский язык?
Да, и если не в лом погляди,что за ошибка:
Файл->Открыть-выбери че нить
А потом на кнопку Получить

406
23 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
А может ты еще знаешь как заставить NetMessageBufferSend() понимать русский язык?
Да, и если не в лом погляди,что за ошибка:
Файл->Открыть-выбери че нить
А потом на кнопку Получить



Для того чтобы конверить как англ так и рус алфавит используй более продвинутую системную функцию MultiByteToWideChar.
Замени у себя в коде:
mbstowcs(bufw,(char*)msg,trlen((char*)msg));
на:
MultiByteToWideChar(CP_ACP,B_PRECOMPOSED,(char*)msg,-1,bufw,50);


А ошибка у тебя возникает из за переполнения стека локальных переменных:

char chas1[1] ,minu1[1],secu1[1],day1[1],mes1[2],god1[2];

замени их на такое объявление:

char chas1[20] ,minu1[20],secu1[20],day1[250],mes1[20],god1[20];

И говорю же тебе лучше используй string,он тебе очень поможет,так как ты ничего практически не знаеш о массивах и как с ними работать.

3.8K
23 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Для того чтобы конверить как англ так и рус алфавит используй более продвинутую системную функцию MultiByteToWideChar.
Замени у себя в коде:
mbstowcs(bufw,(char*)msg,trlen((char*)msg));
на:
MultiByteToWideChar(CP_ACP,B_PRECOMPOSED,(char*)msg,-1,bufw,50);


А ошибка у тебя возникает из за переполнения стека локальных переменных:

char chas1[1] ,minu1[1],secu1[1],day1[1],mes1[2],god1[2];

замени их на такое объявление:

char chas1[20] ,minu1[20],secu1[20],day1[250],mes1[20],god1[20];

И говорю же тебе лучше используй string,он тебе очень поможет,так как ты ничего практически не знаеш о массивах и как с ними работать.



Че-то еррор не пропадает!

406
23 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
Че-то еррор не пропадает!


Не знай не должно быть больше ошибки в этом месте,может ты еще че там добавил. Давай исходник сюда посмотрю. Только файл с расширением ncb не вкладывай.

3.8K
23 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
Не знай не должно быть больше ошибки в этом месте,может ты еще че там добавил. Давай исходник сюда посмотрю. Только файл с расширением ncb не вкладывай.



Ложу.

406
24 июля 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by arphey
Ложу.


У тебя там куча ошибок. Используй дебаг для их поиска а лучше начинай переписывать все заново.
Вот исправленый код.

3.8K
27 июля 2005 года
arphey
51 / / 30.10.2004
Цитата:
Originally posted by vitaly2003s
У тебя там куча ошибок. Используй дебаг для их поиска а лучше начинай переписывать все заново.
Вот исправленый код.



Слушай.У меня есть Tab Control в нем две вкладки. Как поместить Button во вторую вкладку?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог