witam, ostatnio miałem wiele problemów w kwestii plików dll i okien modalnych, co do których pytania również zamieszczałem na tym forum.
Tym razem chciałbym wrzucić okno modalne do biblioteki dll początkowo próbowałem to zrobić normalnie, poprzez wrzucenie okna do zasobów biblioteki i wyświetlenie go za pomocą DialogBox. Jednak okno się nie wyświetlało… pomyślałem więc, że może wstawię do tego dll’a najzwyklejsze okienko, jakie się tworzy w każdym programie wykożystującym winapi. Niestety i ono nie chciało się w żaden sposób wyświetlić…
Kod pliku wygląda następująco
#include
#include "dll.h"
#include
using namespace std;
LRESULT CALLBACK ProceduraOkienka(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam);
BOOL WINAPI DLLMain(HANDLE hModule,DWORD ul_readon_for_call, LPVOID lpReseved){
MessageBox(0, "dll", "dll", MB_OK);
return TRUE;
}
DLLEXPORT int cezar(char plik[100], HINSTANCE hInstance, HWND uchwyt){
MessageBox(uchwyt, plik, "funcja do algorytmu cezara", MB_OK);
WNDCLASSEX mini = {0};
mini.cbSize = sizeof(WNDCLASSEX);
mini.style = CS_VREDRAW | CS_HREDRAW;
mini.lpfnWndProc = ProceduraOkienka;
mini.cbClsExtra = 0;
mini.cbWndExtra = 0;
mini.hInstance = hInstance;
mini.hIcon = LoadIcon(0, (LPCTSTR)IDI_APPLICATION);
mini.hCursor = LoadCursor(0, (LPCTSTR)IDC_ARROW);
mini.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
mini.lpszMenuName = 0;
mini.lpszClassName = "Standardowe";
mini.hIconSm = LoadIcon(0, (LPCTSTR)IDI_APPLICATION);
// rejestrujemya klase okna
RegisterClassEx(&mini);
// tworzymy okno
HWND uchwytOkna = CreateWindowEx(
0, // rozszerzony styl
"Standardowe", // klasa okna
"Cezar - Szczegóły", // tekst na belce
WS_POPUPWINDOW | WS_CHILD | WS_VISIBLE,
100, // pozycja x okna
60, // pozycja y okna
260, // szerokosc okna
120, // wysokosc okna
0, // okno nadrzedne
0, // uchwyt menu
hInstance, // uchwyt aplikacji
0); // wskaznik na dane
ShowWindow(uchwytOkna, SW_NORMAL);
UpdateWindow(uchwytOkna);
MSG msg = {0};
for(;;)
{
if(GetMessage(&msg, 0, 0, 0) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(msg.message == WM_QUIT) break;
}
return (int)msg.wParam;
}
LRESULT CALLBACK ProceduraOkienka(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_COMMAND:
{
//reakcja na przyciski
switch(LOWORD(wParam))
{
}
}
break;
default: return FALSE;
}
return TRUE;
}
Jak zwykle jestem otwarty na wszelkie propozycje