GoldWolf Temat założony przez niniejszego użytkownika |
[WinAPI]Nie zawsze pojawiaja się wszystkie kontrolki. » 2011-06-10 13:35:29 Hej, dlaczego czasami, mi się wszystkie kontrolki w głównym oknie nie pojawią.
Jaki mechanizm zastosować, by nie było takich cyrków.
LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wPar, LPARAM lPar ) { switch( msg ) { case WM_CREATE: { DrawControls( hWnd ); HANDLE hThread =( HANDLE ) _beginthread( ThreadProc, 0, NULL ); break; } case WM_COMMAND:
int DrawControls( HWND hWnd ) { hText = CreateWindowEx( 0, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 30, 45, 50, 20, hWnd, NULL, * hInst, NULL ); Edit_LimitText( hText, 5 ); hFont = CreateFont( 21, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, "Arial" ); hStatic = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 20, 70, 150, 140, hWnd, NULL, * hInst, NULL ); hStatic1 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_CENTER, 20, 10, 320, 25, hWnd, NULL, * hInst, NULL ); SendMessage( hStatic1, WM_SETFONT,( WPARAM ) hFont, 0 ); SetWindowText( hStatic1, "Wprowadź ile :" ); hStatic2 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 190, 40, 165, 130, hWnd, NULL, * hInst, NULL ); hStatic3 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 190, 171, 160, 35, hWnd, NULL, * hInst, NULL ); hButton2 = CreateWindowEx( WS_EX_CLIENTEDGE, "BUTTON", "Start", WS_CHILD | WS_VISIBLE | WS_BORDER, 90, 40, 80, 30, hWnd,( HMENU ) ID_PRZYCISK2, * hInst, NULL ); return 1; }
|
GoldWolf Temat założony przez niniejszego użytkownika |
» 2011-06-13 10:39:38 nie rozumiem odpowiedzi, gdzieś w kursie coś przeoczyłem Mam jeszcze inny problem mianowicie z tym związaną. Mam taką funkcję do pokazywania obciążenia procka. Na XP odświeża się ok, a na 7 nie - pojawi się raz nie odświeża się. void __cdecl ThreadProc( void * Args ) { int sekundy = 1; while( sekundy != 0 ) { Sleep( 700 ); MonitorCPU( hWnd ); } _endthread(); } Jak widać jest to wątek, co robi MonitorCPU(hWnd);, o tym pisałem tutaj - http://cpp0x.pl/forum/temat/?id=4410 . Do wyświetlania używam SetWindowText( hStatic3, mam ); Na koniec odpowiedz na moje pierwszy pytanie, by zawsze się rysowało przeniosłem wywołanie funkcji z ciała - LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPar, LPARAM lPar) Do - int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR lStart, INT nShow ) Kiedyś zadałem takie pytanie czy lepiej kontrolki malować z oknem czy w ciele komunikatów dokładnie case WM_CREATE: { DrawControls( hWnd ); HANDLE hThread =( HANDLE ) _beginthread( ThreadProc, 0, NULL ); break; } Dostałem wtedy odpowiedź, że to zależy i doświadczenie nauczy. Więc, czy mogę przyjąć, że lepiej wszystkie kontrolki powoływać do życia razem z ciałem okna? |