ďťż

Ładny brzuch

Witam
Mam problem z kontrolką RichEdit. Ładuję bibliotekę, tworze kontrolkę, ale podczas zamykania programu, gdy chcę zwolnić bibliotekę wywala mi błąd "Wystąpił problem z aplikacją ircconsole.exe i zostanie ona zamknięta. Przepraszamy za kłopoty." Zamieszczam kod całego programu i makefile może ktoś coś poradzi.

main.c
#include <windows.h> HINSTANCE RichEditInstance; HWND RichEditHandle, EditHandle; BOOL CALLBACK DialogProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) {  case WM_CLOSE:   FreeLibrary(RichEditInstance);   EndDialog(hwnd, 0);  return TRUE;  case WM_INITDIALOG:   RichEditHandle = GetDlgItem(hwnd, 101);   EditHandle = GetDlgItem(hwnd, 102);  return TRUE;  case WM_SIZE:   if (wParam != SIZE_MINIMIZED)   {    MoveWindow(RichEditHandle, 0, 0, LOWORD(lParam), HIWORD(lParam) - 25, TRUE);    MoveWindow(EditHandle, 0, HIWORD(lParam) - 25, LOWORD(lParam), HIWORD(lParam) - (HIWORD(lParam) - 25), TRUE);   }  return TRUE;  case WM_COMMAND:   switch (LOWORD(wParam))   {    case 1010:     //kod    return TRUE;    case 1020:     SendMessage(hwnd, WM_CLOSE, 0, 0);    return TRUE;    case 1030:     //kod    return TRUE;    case 1040:     //kod    return TRUE;    case 1050:     //kod    return TRUE;    case 1060:     //kod    return TRUE;   }  break; } return FALSE; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmd, int nShow) { RichEditInstance = LoadLibrary("riched32.dll"); return DialogBox(hInstance, MAKEINTRESOURCE(100), NULL, DialogProcedure); }

resources.rc
#include <windows.h> 100 DIALOG 0, 0, 300, 200 STYLE DS_CENTER | DS_MODALFRAME | WS_OVERLAPPEDWINDOW CAPTION "IRC Console" FONT 8, "Helv" MENU 1000 BEGIN CONTROL "", 101, "RichEdit", ES_READONLY | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_MULTILINE | WS_BORDER | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0 CONTROL "", 102, "Edit", ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0 END 1000 MENU BEGIN POPUP "File" BEGIN  MENUITEM "Save log", 1010  MENUITEM "Exit", 1020 END POPUP "Server" BEGIN  MENUITEM "Connect", 1030  MENUITEM "Disconnect", 1040 END POPUP "Configure" BEGIN  MENUITEM "User", 1050  MENUITEM "Console", 1060 END END

makefile
filename = ircconsole sourcename = main resourcename = resources .silent: all: $(sourcename).c $(resourcename).rc gcc -c $(sourcename).c -o $(sourcename).o windres -i $(resourcename).rc --input-format=rc -o $(resourcename).res -O coff gcc $(sourcename).o $(resourcename).res -o $(filename).exe -mwindows strip --strip-all $(filename).exe clean: del $(sourcename).o del $(resourcename).res del $(filename).exe



Dodałem jeszcze taki kod w main.c:
case WM_KEYDOWN: if (wParam == VK_RETURN) {  //kod } return TRUE;
Klawiatura wcale nie reaguje.

case WM_CLOSE: { EndDialog(hwnd,0); DestroyWindow(RichEditHandle); FreeLibrary(RichEditInstance); } return TRUE;
Użytkownik Cyrkiel edytował ten post 23 czerwiec 2006, 18:45
Dzięki pomogło, a co z klawiaturą?



Już wiem! Chodzi o subclassing.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •