GUI app and winAPI calls - Printable Version +- QB64 Phoenix Edition (https://qb64phoenix.com/forum) +-- Forum: QB64 Rising (https://qb64phoenix.com/forum/forumdisplay.php?fid=1) +--- Forum: Code and Stuff (https://qb64phoenix.com/forum/forumdisplay.php?fid=3) +---- Forum: Programs (https://qb64phoenix.com/forum/forumdisplay.php?fid=7) +---- Thread: GUI app and winAPI calls (/showthread.php?tid=1568) |
RE: GUI app and winAPI calls - mnrvovrfc - 03-24-2023 (03-24-2023, 09:51 AM)aurel Wrote: another bad thing is that message loop is created with DO/LOOP Why is it a bad thing? Just add "DO" in front of "WHILE" statement, and at the bottom write "LOOP" instead of "WEND". "DO/LOOP" exists to give us a loop that could run once. I have never used "WHILE... WEND", it's unnecessary to me. There was the attempt to make it count with "EXIT WHILE" which arrived too late I think, because many programmers resisted so much using "DO... LOOP" instead. In fact, "EXIT DO" was the only way to replicate "break;" statement in C, and the excellent code example in the QB64 Wiki, the only way to "_CONTINUE" until of course that QB64-only statement was invented. The message loop involves "SELECT CASE... END SELECT" also, doesn't it? RE: GUI app and winAPI calls - aurel - 03-24-2023 And that is your main problem? no While GetMessage(msg,0,0,0) <> 0 without "stupid" bRet ..in combination with "stupid" SELECT CASE bRet Main problem is why QB64 not know for type or structure called WNDCLASSEX or why is not recognized when is there ..in mingW header ? RE: GUI app and winAPI calls - aurel - 03-24-2023 This is how typical C++ app should look: #include <windows.h> /* window procedure */ LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdParam, int cmdShow) { MSG messages; /* for messages queue manipulation */ WNDCLASSEX WndClass; /* data struct for window class */ HWND hWnd; /* handle for window */ /* define window class */ WndClass.cbSize = sizeof(WNDCLASSEX); WndClass.style = CS_DBLCLKS; WndClass.hInstance = hInst; WndClass.lpszClassName = "WindowClassName"; WndClass.lpfnWndProc = WndProc; /* icons, cursor and menu */ WndClass.hIcon = LoadIcon(hInst, "MAINICON"); /* default icon */ WndClass.hIconSm = LoadIcon(hInst, "MAINICON"); /* default icon */ WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); /* cursor */ WndClass.lpszMenuName = NULL; /* no menu */ WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; /* window background color */ WndClass.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); RegisterClassEx(&WndClass); hWnd = CreateWindowEx(0, /* extended window style */ "WindowClassName", /* registered class */ "Windows Application", /* window title */ WS_OVERLAPPEDWINDOW, /* default window style */ CW_USEDEFAULT, /* x position */ CW_USEDEFAULT, /* y position */ 640, /* width of window */ 480, /* heigth of window */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* no menu */ hInst, /* Program Instance handler */ NULL); /* No Window Creation data */ ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); /* loop messages. run until GetMessage return 0*/ while (GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); /* translate virtual keys into character messages*/ DispatchMessage(&messages); /* Send message to WndProc */ } /* return value to system */ return messages.wParam; } /* This function is called by the Windows function DispatchMessage() */ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: PostQuitMessage(0); /* send a WM_QUIT to the message queue */ break; default: /* for messages that we don't deal with */ return DefWindowProc(hwnd, message, wParam, lParam); } return 0; } RE: GUI app and winAPI calls - aurel - 03-25-2023 maybe i lost my mind ..or i am ... I am looking over whole old archived forum and still no clue what i need thanks RhoSigma i just looking into your LARGE framework - really impressive !!! but also very complex (shame on me) it looks that is easier to write native winApi gui program in C++ than in QB64 also it is obvious that new declares are not supported or built in qb64 source code of qb64 is a large 24000 LOC if i find something concrete i will let you know RE: GUI app and winAPI calls - aurel - 03-25-2023 ok i found old topic https://qb64forum.alephc.xyz/index.php?topic=4279.15 RE: GUI app and winAPI calls - aurel - 03-25-2023 Only thing which is not clear to me is this about manifest: Quote:With the release of QB64 v2.0 a seperate manifest nolonger required for Windows controls: So my question is what is $VersionInfo ? RE: GUI app and winAPI calls - RhoSigma - 03-25-2023 (03-25-2023, 09:35 PM)aurel Wrote: Only thing which is not clear to me is this about manifest: Just look into the first 20 lines of source/qb64pe.bas, and the respective Wiki page. RE: GUI app and winAPI calls - aurel - 03-26-2023 Thanks RhoSigma Now ..how i don't know that i must investigate this better RE: GUI app and winAPI calls - RhoSigma - 03-26-2023 (03-26-2023, 07:16 AM)aurel Wrote: Thanks RhoSigma It's basically the informations shown in the File Properties Dialog under the "Details" tab. $VERSIONINFO:FileDescription is also used in Filemanager/Resourcetracking as desciption of the process. |