Win32 Api problém s oknami – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Win32 Api problém s oknami – C / C++ – Fórum – Programujte.comWin32 Api problém s oknami – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
5. 5. 2011   #1
-
0
-

Dobrý deň. Začínam pracovať s Win32 a pri štúdiu som narazil na problém. Vytvoril som si jednoduchý program:

#include <windows.h>


#include "resource.h"

const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_CREATE:
{
HMENU hMenu, hSubMenu;
HICON hIcon, hIconSm;

hMenu = CreateMenu();

hSubMenu = CreatePopupMenu();
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "Koniec");
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "Súbor");

hSubMenu = CreatePopupMenu();
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "Automatické vypnutie PC");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO2, "Vzdialené vypnutie PC");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO3, "Štruktúra zložiek");

AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "Menu");

SetMenu(hwnd, hMenu);

hIcon = LoadImage(NULL, "ikona.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
if(hIcon)
SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
else
MessageBox(hwnd, "Nemôžem načítať veľkú ikonu!", "Chyba", MB_OK | MB_ICONERROR);

hIconSm = LoadImage(NULL, "ikona.ico", IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
if(hIconSm)
SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm);
else
MessageBox(hwnd, "Nemôžem načítať malú ikonu!", "Chyba", MB_OK | MB_ICONERROR);
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_FILE_EXIT:
PostMessage(hwnd, WM_CLOSE, 0, 0);
break;
case ID_STUFF_GO:
WinExec("cmd.exe /C shutdown -s -t 30", SW_SHOW);
break;
case ID_STUFF_GO2:
WinExec("cmd.exe /C shutdown -i", SW_SHOW);
break;
case ID_STUFF_GO3:
WinExec("cmd.exe /C tree", SW_SHOW);
break;
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;

wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MYMENU);
wc.lpszClassName = g_szClassName;
wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON), IMAGE_ICON, 16, 16, 0);

if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Projekt1",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 600, 400,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}


Problém spočíva v tom, že po skompilovaní sa mi otvorí hotové okno ale aj konzola a ak si v menu napríklad nakliknem možnosť "Štruktúra zložiek"
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO3, "Štruktúra zložiek");
výsledok spusteného príkazu sa vypíše do konzoly. Čo musím urobiť, aby sa to vypísalo rovno do okna?

Za odpoveď vopred všetkým ďakujem.

Nahlásit jako SPAM
IP: 213.81.166.–
Reklama
Reklama
nervak0
Věrný člen
6. 5. 2011   #2
-
0
-
Nahlásit jako SPAM
IP: 213.211.51.–
6. 5. 2011   #3
-
0
-

Ďakujem veľmi si mi pomohol.

Nahlásit jako SPAM
IP: 213.81.166.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 98 hostů

Podobná vlákna

Problem s oknami — založil Miro1701

Win32 API — založil survik1

Dialog ve Win32 API — založil david v.

Správy v Win32 API — založil Rišo Kakaš

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý