Vister26 Temat założony przez niniejszego użytkownika |
» 2014-07-07 23:38:02 Możesz porównać czy uchwyt używany w bloku WM_COMMAND jest identyczny z tym tworzonym wcześniej używając funkcji GetDlgItem( HWND_Rodzica, ID_okna/kontrolki ). |
Użyłem tej funkcji. Zwróciło uchwyt do kontrolki hCommandLine, czyli wnioskuje, że tu jest OK. Chyba najlepiej będzie jak wrzucę cały kod: #if defined(UNICODE) && !defined(_UNICODE) #define _UNICODE #elif defined(_UNICODE) && !defined(UNICODE) #define UNICODE #endif
#include <tchar.h> #include <windows.h> #include <iostream>
#define ID_BUTTON1 101 #define ID_STATICTEXTBOX1 201 #define ID_COMANDLINE 301
LRESULT CALLBACK WindowProcedure( HWND, UINT, WPARAM, LPARAM );
TCHAR szClassName[] = _T( "WindowsApp" );
HWND hCommandLine; HWND hExecButton; HWND hStaticDebugBox;
LPSTR CommandLineBuf;
using std::cout; using std::endl;
int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow ) { HWND hwnd; MSG messages; WNDCLASSEX wincl; wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof( WNDCLASSEX ); wincl.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wincl.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); wincl.hCursor = LoadCursor( NULL, IDC_ARROW ); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground =( HBRUSH ) COLOR_BACKGROUND; if( !RegisterClassEx( & wincl ) ) return 0; hwnd = CreateWindowEx( 0, szClassName, _T( "Komunikator WINAPI by Vister26" ), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 800, 400, HWND_DESKTOP, NULL, hThisInstance, NULL ); hStaticDebugBox = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 10, 10, 763, 270, hwnd,( HMENU ) ID_STATICTEXTBOX1, hThisInstance, NULL ); hCommandLine = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 290, 763, 20, hwnd,( HMENU ) ID_COMANDLINE, hThisInstance, NULL ); hExecButton = CreateWindowEx( 0, "BUTTON", "Execute", WS_CHILD | WS_VISIBLE, 660, 320, 100, 30, hwnd,( HMENU ) ID_BUTTON1, hThisInstance, NULL ); SetWindowText( hStaticDebugBox, "test test test test test" ); ShowWindow( hwnd, nCmdShow ); while( GetMessage( & messages, NULL, 0, 0 ) ) { TranslateMessage( & messages ); DispatchMessage( & messages ); } return messages.wParam; }
LRESULT CALLBACK WindowProcedure( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_DESTROY: PostQuitMessage( 0 ); break; case WM_COMMAND: if( wParam == ID_BUTTON1 ) { int czydobrze = 0; czydobrze = GetWindowText( hCommandLine, CommandLineBuf, 50 ); cout << czydobrze << endl; SetDlgItemText( hwnd, ID_STATICTEXTBOX1, CommandLineBuf ); } default: return DefWindowProc( hwnd, message, wParam, lParam ); } return 0; }
|