Comment créer un embedded zone de saisie de texte dans win32 de windows
Je veux créer une petite boîte ancrées dans ma fenêtre principale qui peut accepter de saisie de texte et contiennent des boutons. Quand je dis intégré, je veux dire, je veux qu'il soit intégré dans ma fenêtre principale de manière transparente, sans son propre bouton. J'ai cherché sur google sans cesse et n'ont pas trouvé une réponse qui ne comportent pas de mfc ou .net. Comment puis-je faire dans un raw application win32. S'il vous plaît ajouter votre code de mon squelette indiqué ci-dessous. Merci!
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("App") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, //window class name
TEXT ("App"), //window caption
WS_OVERLAPPEDWINDOW, //window style
CW_USEDEFAULT, //initial x position
CW_USEDEFAULT, //initial y position
CW_USEDEFAULT, //initial x size
CW_USEDEFAULT, //initial y size
NULL, //parent window handle
NULL, //window menu handle
hInstance, //program instance handle
NULL) ; //creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
case WM_CREATE:
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
- c'est un début de projet de shell dans visual studio, où est votre tenté de trouver des solutions?
Vous devez vous connecter pour publier un commentaire.
Ce que tous les messages que vous souhaitez recevoir?
Par exemple, WM_COMMAND message est envoyé lorsque le bouton est pressé. Traiter ces messages comme suit:
}
Votre question n'est pas très clair mais la manière de créer des zones de texte et les boutons de façon dynamique dans Win32 est d'utiliser le
CreateWindow
fonction. Win32 registres des classes spéciales pour les contrôles, qui vous pouvez utiliser pour transmettre comme premier paramètre deCreateWindow
.Pour créer une zone de texte, l'appel est -
Pour Créer un bouton -
Vous devez spécifier le
WS_CHILD
etWS_VISIBLE
styles et également fournir un handle de la fenêtre principale, comme son parent.WndProc
fonction.