Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 |

 

  Вопрос: Си Добавлено: 07.07.05 07:27  

Автор вопроса:  Progos | Web-сайт: html-expert.org.ru | ICQ: 311715784 
Что в этом коде не так?
Проблема в том, что в текстовом поле ничего не печатается

#include <windows.h>

BOOL InitApp(HINSTANCE);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND Forms[65355];
int NumForms;


char const szClassName[] = "WindowAppClass";
char const szWindowTitle[] = "?????? ?????????? ? ??????? ????????????";

int PASCAL
WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszCmdLine,
    int nCmdShow)
{
 MSG msg;
 HWND hwnd;
 if(!InitApp(hInstance)) return FALSE;
 hwnd = CreateWindow(szClassName,szWindowTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
  CW_USEDEFAULT,CW_USEDEFAULT,0,0,hInstance,NULL);
 Forms[0]=hwnd;

  CreateWindowEx(0, "BUTTON", "MyButton", WS_CHILD|WS_VISIBLE, 10, 10, 100, 50, hwnd, NULL,  hInstance, NULL);
  CreateWindowEx(0, "Edit", "MyButton", WS_CHILD|WS_VISIBLE|WS_BORDER, 10, 60, 100, 50, hwnd, NULL,  hInstance, NULL);
  CreateWindowEx(0,"COMBOBOX","MyButton",WS_CHILD|WS_VISIBLE|WS_BORDER|CBS_DROPDOWN,10,110,100,50,hwnd,NULL,hInstance,NULL);
  
 
 if(!hwnd)
  return FALSE;

 ShowWindow(hwnd, nCmdShow);
 UpdateWindow(hwnd);
 
 while(GetMessage(&msg, 0, 0, 0))
 {
  DispatchMessage(&msg);
 }

 return msg.wParam;
}

BOOL
InitApp(HINSTANCE hInstance)
{
 ATOM aWndClass;
 WNDCLASS wc;
 memset(&wc, 0, sizeof(wc));
 wc.style = 0;

 wc.lpfnWndProc = (WNDPROC) WndProc;
 wc.cbClsExtra = 0;
 wc.cbWndExtra = 0;
 wc.hInstance = hInstance;
 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
 wc.lpszMenuName = (LPSTR)NULL;
 wc.lpszClassName = (LPSTR)szClassName;
 aWndClass = RegisterClass(&wc);
 return (aWndClass != 0);
}
LRESULT CALLBACK
WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (msg==WM_DESTROY && hwnd==Forms[0]){
MessageBox(hwnd,"Bye","Bye",MB_OK);
PostQuitMessage(0);
return 0;}
 return DefWindowProc(hwnd, msg, wParam, lParam);
}

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 07.07.05 11:24
гы :)
На вид все нормально :)
и в VB6 этот код работает... значит если из-за чего и не работает то только из-за оконной процедуры...

Ответить

Номер ответа: 2
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #2
Добавлено: 07.07.05 11:38
Не знаю, может из-за компилятора фигня?
У меня MSVC 6.
А вообще, кстати, какой лучше, Борланда или Мелкософта?

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 07.07.05 15:46
MSVC++ 2003 рулит.
На этой машине компилятора нет, проверить не могу, на вид похоже на правду.

Ответить

Номер ответа: 4
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #4 Добавлено: 07.07.05 17:00
while(GetMessage(&msg, 0, 0, 0))
 {
  ;DispatchMessage(&msg);
 }


А где TranslateMessage?

Ответить

Номер ответа: 5
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #5
Добавлено: 07.07.05 19:13
Не знаю, я в Си новичек, чё нашел в примерах, то и наваял :)
Как именно и куда надо вставить
TranslateMessage
?

Ответить

Номер ответа: 6
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #6 Добавлено: 07.07.05 20:20
Перед DispatchMessage(&msg);

while (1) {
    if (!GetMessage (&msg, NULL, 0, 0))  break;
    TranslateMessage (&msg);
    ;DispatchMessage (&msg);
    }

Ответить

Номер ответа: 7
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #7
Добавлено: 07.07.05 21:14
Спасибо!
Заработало!

У меня еще вопросы:
1.Можно ли создать на форме объект ActiveX OCX, созданный в ВБ?
2. Как создать RichEdit? Пробовал
CreateWindowEx(0, "RichEdit", "MyButton", WS_CHILD|WS_VISIBLE, 10, 10, 100, 50, hwnd, NULL,  hInstance, NULL);
- не работает...

Ответить

Номер ответа: 8
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #8 Добавлено: 07.07.05 22:48
- не работает...

Что значит не работает? CreateWindowEx работает всегда. Единственно что от тебя требуется - указать правильные параметры. Который из них неверный? Что возвращает функция? Что возвращает GetLastError?
Может hwnd не валидный.
Может не в нужном месте создаешь контрол (например в WM_CREATE)

Попробуй указать класс "RichEdit20a"

Ответить

Номер ответа: 9
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #9 Добавлено: 07.07.05 23:28
Слушай, а dll с RichEdit'ом ты вообще загрузил?


LoadLibrary("Riched20.dll";);
hRich = CreateWindowEx(NULL,                "RichEdit20A",
                       NULL,
                       WS_CHILD|WS_VISIBLE,
                       10,
                       10,
                       300,
                       500,
                       hWnd,
                       NULL,
                       hInstance,
                       NULL);



Если dll у тебя Riched32.dll, то класс укажи "RichEdit"

Ответить

Номер ответа: 10
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #10 Добавлено: 08.07.05 06:30
Грузить ничего не нужно для создания RichEdit.

Что же касается ручного создания контролов на форме... гы гы гы... http://bbs.vbstreets.ru/viewtopic.php?t=9370

Ответить

Номер ответа: 11
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #11
Добавлено: 08.07.05 07:23
2HOOLIGAN Спасибо! Точно, надо было dll'ку приставить.
Только при создании с Riched20.dll, при указании стиля WS_BORDER рамка присутсвует,при Riched32.dll - нет.

Ответить

Номер ответа: 12
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #12 Добавлено: 08.07.05 11:49
У тебя ex-styles в ноль выставлены, а хочешь рамку :)
Покомбинируй WS_EX_STATICEDGE, WS_EX_CLIENTEDGE, WS_EX_WINDOWEDGE и т.п. (в первый параметр CreateWindowEx)

Ответить

Номер ответа: 13
Автор ответа:
 Progos



ICQ: 311715784 

Вопросов: 39
Ответов: 157
 Web-сайт: html-expert.org.ru
 Профиль | | #13
Добавлено: 09.07.05 07:32
Thanks! %)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам