Názory ke článku Win32 API - 1. díl
14. 1. 2006
Vsetky uvedene kody ktore ste tu napisali som vyskusal ale vzdy sa my zobrazilo len okno s tlacidkom OK a nikdy ziaden text. Pouzicam Dev-C++.
V čom moze byt problem?
14. 1. 2006
Duvodu muze byt nekolik, pokud to mas presne jak je uvedeno:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox(NULL, TEXT("Ahoj světe"), TEXT("Programujeme"),0);
return 0;
}
tak ti to melo fachat, jakou verzi pouzivas?
15. 1. 2006
Vůbec mi nejde nic zkompilovat. Dole mi to píše C:\Dev-Cpp\Makefile.win [Build Error] ["Beze jména 2.o"] Error 1
Compilátor: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Spouští se make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe -c "Beze jména 2.cpp" -o "Beze jména 2.o" -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"
g++.exe: Beze jmÚna 2.cpp: No such file or directory
g++.exe: no input files
make.exe: *** ["Beze jména 2.o"] Error 1
Provádění ukončeno
Nevím co s tím.
16. 1. 2006
pro vas oba co vam to nejde:
skuste verzi 5, na ty sem to zkousel, na 4 ne tak nevim.
dale zkuse udelat update, vim ze na win Api ma Dev naky opravy.
Dale v nastaveni projektu bud v Linker nebo compiler bejva chybne oznaceno kompilovani pro konzolovou aplikaci, tak to potom dela kraviny, tak oznacit win32 application.
A jinak sem testoval Dev-C++ a zjistil sem, ze co se tyce jeho podpory Win32 API, tak zadna slava.Maj tam naky chyby. Lepsi by bylo pouzit VC++.Tam je to bez nejmensich problemu.Kdyz sem delal kod do dalsiho dilu tak mi ho Dev - C++ nechtel vzit, tak sem ho musel upravit a pritom je to v podstate vzorovej kod primo od vyvojaru microsoftu, takze by mel fachat na kazdym kompilatoru.Snad vam to pomuze, kdyz ne, tak se ozvete.
No když už je tu řeč ohledně VC++, ten je free nebo se dá nekde stáhnou(kde?????) ... jinak fakt moc díky za tyhle články i když sem v kurzu c++ nekde u 6 tak se mi daří ty kody číst....jinak to ted kombinuju zatím se SDL páč je tech dílu víc a učím se že jo ;-) Jinak doufám že už máš další..;-)..
19. 1. 2006
To te trosku zklamu, Microsoft Visual C++ je tezce licencovanej produk, je soucasti Visual Studia, ale da se sehnat i samostatne.
koukni se na tenhle link, je tam ke stazeni express verze VC++ 2005, ale nevim, jak moc je to omezeny a nezarucuju velke zmeny v kodu:http://msdn.microsoft.com/vstudio/express/visualc/download/default.aspx
24. 1. 2006
Používám MS-VC++ (v. 6). Kompilace proběhne v pohodě, ale při vytváření souboru "exe" to napíše tohle:
--------------------Configuration: pokus - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/pokus.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
pokus.exe - 2 error(s), 0 warning(s)
25. 1. 2006
koukal sem a nejde ti to, protoze si vytvoril projekt pro Win32 consolle application.
Musis vytvorit projekt Win32 application.
V VC++ je chytrej kompilator, kterej pozna, jakej projekt tvoris a jakej kod tam muze ocekavat, tudis jelikoz v konzoli zna vstupni bod programu jako "int main" a ty pouzivas "int WinMain", tak tu funkci neyna a pise ti chybu definice externiho symbolu. Vim, mel by to poznat uz pri linkovani, ale nepozna, ono z hlediska compilace ta funkce existuje, ale neni mozne ji pouzit pro konsole aplikace.
27. 1. 2006
Je hotovej, prolejza kontrolou ;-)
Je trsicku delsi, tak to chvilicku trva :-D
22. 2. 2006
Když to chci zkompilovat, tak to hodí chybu, že nejde najít <windows.h>. Nevíte, čím to je? používám VS C++ 2005
22. 2. 2006
Nakopíroval jsem tedy windows.h, kompilování je v poho, ale během pouštění mi ti píše
Creating temporary file "c:\Documents and Settings\Tomáš\Dokumenty\Moje Dokumenty\Programování\C++\While cyklus\w\w\Debug\TMP000002151308157644.tmp" with contents
[
1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ ".\\Debug\\w.exe.embed.manifest"
]
Creating command line "rc.exe /fo".\Debug\w.exe.embed.manifest.res" "c:\Documents and Settings\Tomáš\Dokumenty\Moje Dokumenty\Programování\C++\While cyklus\w\w\Debug\TMP000002151308157644.tmp""
Creating temporary file "c:\Documents and Settings\Tomáš\Dokumenty\Moje Dokumenty\Programování\C++\While cyklus\w\w\Debug\RSP000003151308157644.rsp" with contents
[
/OUT:"C:\Documents and Settings\Tomáš\Dokumenty\Moje Dokumenty\Programování\C++\While cyklus\w\Debug\w.exe" /INCREMENTAL /MANIFEST /MANIFESTFILE:"Debug\w.exe.intermediate.manifest" /DEBUG /PDB:"c:\documents and settings\tomáš\dokumenty\moje dokumenty\programování\c++\while cyklus\w\debug\w.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 kernel32.lib
".\debug\s.obj"
".\Debug\w.exe.embed.manifest.res"
]
Creating command line "link.exe @"c:\Documents and Settings\Tomáš\Dokumenty\Moje Dokumenty\Programování\C++\While cyklus\w\w\Debug\RSP000003151308157644.rsp" /NOLOGO /ERRORREPORT:PROMPT"
Output Window
Compiling manifest to resources...
Linking...
LINK : fatal error LNK1104: cannot open file 'uuid.lib'
Results
24. 2. 2006
pokud tam standartne neni windows.h tak to neni distribuce urcena pro vyvoj win32 aplikaci a zkopirovanim pouze windows.h si nepomuzes, potrebuje to i ostatni knihovny a hlavicky. bud sahni VC++ ktera je pripravena pro win32, nebo po Dev-C++
Ja mám program Dev-C++ verzia 4.9.9.2 a všetko mi ide, a mám ja 5 a ide to tiež
Ahoj fakt super clanek, ale mozna jsem nasel chybku. V tomto clanku nakonci v sekci Zkuste je uvedeno, ze v hlavickovem souboru winuser.h je konstanta ID_OK 1, tak jsem se tam hnedka podival a zjistil jsem, ze tam je IDOK 1 (bez toho podtrzitka). S podtrzitkem mi to nefunguje.
Prikald:
<pre> #include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
if(MessageBox(NULL, TEXT("Ahoj světe"), TEXT("Programujeme"),0) == IDOK)
MessageBox(NULL, TEXT("OK"), TEXT("Programujeme"),0);
return 0;
}
</pre>
kogi
mozete mi poradit ako presne to spustit v mojom programe?? mam uz skusenosti s Ceckom ale toto mi nejak nejde (myslim ten vzorovy kod na vypisanie textu) Dik
este by som to trochu upresnil, pise mi to ze mi chyba includovat stdafx.cpp ked dam vytvorit ten projekt a skopirujem tam kod. Mohli by ste niekto napisat ako sa to robi v Microsoft visuale 2005?
9. 4. 2007
Ahoj, potřeboval bych napsat jednoduchý program, který poběží na pozadí, já sem vytvořil obyčejnou konzolovou aplikaci a zavolal z ní FreeConsole(); To okno konzole skryje, ale na pár chvil před tím tam ta konzole problikne. Vím, že to jde i bez toho přes winapi, ale nevím jak, prosím ukažte mi, co mám ve svém kódu (níže) změnit, aby se program rovnou spustil bez okna. díky.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(int argc, char *argv[]) {
//Settings:
FreeConsole(); //Hide
int is = 1000; //Delay
//Code:
while(1) {
printf("Doo something useful here...\n");
sleep(is);
}
return 0;
}
jenom takovy detail ma se mi za tim malinkym oknem s ahoj svete objevit prikazovy radek?(OK velci typci budiz ignoruji a neplytvaji svym drahocannym casem na tuhle blbost)
no jak tak na to koukam tak se v prubehu kompilace snazi najit file "Beze jmÚna 2.cpp", pricemz by mel hledat spis "Beze jména 2.cpp"... nevim jestli to je treba tim ze g++ jako nativne linuxovskej kompilator uziva jinou znakovou mapu, a nejak ti tam tu diakritiku zgulasuje, ale zkus to pojmenovat treba "no_name.cpp" (-> celek treba "no_name.o")... celkove si myslim ze z hlediska kompatibility je lepsi diakritiku nepouzivat a vse psat jako cisty ASCII text...
ne nema... to se stane v pripade zes to vytvoril jako cistej zdrojak(tedy v podstate jako konzolovou aplikaci), je potreba to vytvorit jako windows aplication.
19. 5. 2007
rekl bych ze mas pravdu, ja mam ve winuser.h taky pouze IDOK (a myslim ze muj winuser.h neni nijak vyjimecny...)
ale mam otazecku k tvemu programu: proc ten MessageBox volas dvakrat? protoze kdyz se na nej v podmince ptas (nebo teda na jeho navratovou hodnotu), tak v tu chvili se cely MessageBox zavola (jak jinak taky zjistit jeho navratovou hodnotu, ze...), a potom ho volas jeste jednou...
nebylo by lepsi neco ve stylu
...
if(MessageBox(NULL, TEXT("Ahoj světe"), TEXT("Programujeme"),0) != IDOK) return 1;
...
tedy neco na styl vraceni chyby?
29. 7. 2011
Dobrýtro velcí mágové, dovoluji si předstoupit před vás se svým málo inteligentním dotazem. Kontrola počítače mi našla náledující cosi Adaware: Win 32/open candy a mírně vyhrožuje neštěstím. Hlubším zkoumáním dané změni písmen jsem zjistila rozporuplní informace. Co mi, Lajce, podíte vy? Poradíte? Prosíím..