- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •InvalidateRect(hWnd,&rt,true);
- •InvalidateRect(hWnd,&rt,true);
- •InvalidateRect(hWnd,&rt,true);
- •InvalidateRect(hWnd,&rt,true);
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •If (!hWnd) return false;
- •If(!RegisterClass(&w)) return false;
- •If(!RegisterClass(&w)) return false;
- •If(!RegisterClass(&w)) return false;
- •InvalidateRect(hWnd,&rt,true);
- •If(!RegisterClass(&w)) return false;
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •InvalidateRect(hWnd,&rt,true);
- •InvalidateRect(hWnd,&rt,true);
- •InvalidateRect(hWnd,&rt,true);
- •InvalidateRect(hWnd,&rt,true);
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •InvalidateRect(hWnd,&rt,true);
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
- •If(!RegisterClass(&w)) return false;
- •If (!hWnd) return false;
- •If(!RegisterClass(&w)) return false;
InvalidateRect(hWnd,&rt,true);
}
break;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&rt);
brush=CreateSolidBrush(clf);
hOldBrush=SelectObject(hdc,brush);
font=CreateFontIndirect(&lf);
hOldFont=SelectObject(hdc,font);
SetTextColor(hdc,colfont);
SetBkColor(hdc,clf);
Rectangle(hdc,rt.left,rt.top,rt.right,rt.bottom);
TextOut(hdc,20,20,lf.lfFaceName,strlen(lf.lfFaceName));
SelectObject(hdc, hOldBrush);
DeleteObject(brush);
SelectObject(hdc, hOldFont);
DeleteObject(hOldFont);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
Пример 3
По нажатию на первый пункт меню - появляется второй пункт, по нажатию на второй – появляется третий пункт, по наведению на который появляются еще 2 подпункта.
#include <windows.h>
#define ID_FIRST 40001
#define ID_SECOND 40002
#define ID_THIRD 40003
LONG MyWinP(HWND, UINT,WPARAM,LPARAM);
Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
{ char ProgName[]="My Window";
char Title[]="Заголовок окна";
HWND hWnd; MSG msg;
WNDCLASS w;
w.lpszClassName=ProgName;
w.hInstance=hInstance;
w.lpfnWndProc=(WNDPROC)MyWinP;
w.hCursor=LoadCursor(NULL, IDC_ARROW);
w.hIcon=LoadIcon(NULL, IDI_APPLICATION);
//w.lpszMenuName=LPCSTR(IDR_MENU1);
w.lpszMenuName=NULL;
w.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
w.style=CS_HREDRAW | CS_VREDRAW;
w.cbClsExtra=0;
w.cbWndExtra=0;
If(!RegisterClass(&w)) return false;
hWnd=CreateWindow(ProgName,Title, WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,0,0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
If (!hWnd) return false;
ShowWindow(hWnd, nCmdShow);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;}
LONG MyWinP(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HMENU menu, popup_menu;
switch(msg)
{ case WM_COMMAND:
switch (LOWORD(wParam))
{ case ID_FIRST:
AppendMenu(menu, MF_STRING, ID_SECOND, "Второй пункт");
EnableMenuItem(menu, ID_FIRST, MF_GRAYED);
DrawMenuBar(hWnd);
break;
case ID_SECOND:
popup_menu=CreatePopupMenu();
InsertMenu(menu, -1, MF_STRING | MF_POPUP | MF_BYPOSITION, (UINT)popup_menu, "Третий пункт");
AppendMenu(popup_menu, MF_STRING, ID_THIRD, "Третий пункт 1");
AppendMenu(popup_menu,MF_STRING, 40004, "Третий пункт 2");
EnableMenuItem(menu, ID_SECOND, MF_GRAYED);
DrawMenuBar(hWnd);
break;
case ID_THIRD:
DeleteMenu(menu, ID_SECOND, 0);
DeleteMenu(popup_menu,ID_THIRD, 0);
DeleteMenu(popup_menu,40004, 0);
DeleteMenu(menu,(UINT)popup_menu, 0);
EnableMenuItem(menu,ID_FIRST, MF_ENABLED);
SetMenu(hWnd,menu);
break; }
break;
case WM_CREATE:
menu=CreateMenu();
AppendMenu(menu, MF_STRING, ID_FIRST, "Первый пункт");
SetMenu(hWnd,menu);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
Пример 4
Динамическое создание листбокса, комбобокса и кнопки, по нажатию на кнопку – в листбокс дописываются записи, по четному нажатию - листбокс активен, по нечетному – неактивен.
#include <windows.h>
#include <stdio.h>
#include <string.h>
#define ID_LIST 1001
#define ID_BUTTON 1002
#define ID_COMBO 1003
LONG MyWinP(HWND, UINT,WPARAM,LPARAM);