#include <windows.h> | |
LRESULT CALLBACK _export WndProc(HWND hWnd, UINT message, | |
WPARAM wParam, LPARAM lParam); | |
BOOL CALLBACK _export DlgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam); | |
HINSTANCE hInst; | |
HMENU hMenu,dummy; | |
extern char sysres_MENU_SYSMENU[],sysres_BITMAP_WINELOGO[],sysres_DIALOG_2[]; | |
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, | |
LPSTR lpszCmdLine, int cmdShow) | |
{ | |
MSG msg; | |
WNDCLASS wcHdumpClass; | |
HWND hWndMain; | |
hInst=hInstance; | |
// Define the window class for this application. | |
wcHdumpClass.lpszClassName = "WrcTestClass"; | |
wcHdumpClass.hInstance = hInstance; | |
wcHdumpClass.lpfnWndProc = WndProc; | |
wcHdumpClass.hCursor = 0; | |
wcHdumpClass.hIcon = 0; | |
wcHdumpClass.lpszMenuName = 0; | |
wcHdumpClass.hbrBackground = GetStockObject(WHITE_BRUSH); | |
wcHdumpClass.style = CS_HREDRAW | CS_VREDRAW; | |
wcHdumpClass.cbClsExtra = 0; | |
wcHdumpClass.cbWndExtra = 0; | |
RegisterClass(&wcHdumpClass); | |
hWndMain = CreateWindow("WrcTestClass","WrcTest", | |
WS_OVERLAPPEDWINDOW, | |
CW_USEDEFAULT, // x window location | |
CW_USEDEFAULT, // y | |
CW_USEDEFAULT, // cx and size | |
CW_USEDEFAULT, // cy | |
NULL, // no parent for this window | |
NULL, // use the class menu | |
hInstance, // who created this window | |
NULL // no parms to pass on | |
); | |
ShowWindow(hWndMain,SW_SHOW); | |
UpdateWindow(hWndMain); | |
hMenu=LoadMenuIndirect(sysres_MENU_SYSMENU); | |
/* see Q75254 on how to create a popup menu via LoadMenuIndirect */ | |
dummy=CreateMenu(); | |
InsertMenu(dummy,0,MF_POPUP,hMenu,NULL); | |
hMenu=GetSubMenu(dummy,0); | |
while (GetMessage(&msg, NULL, NULL, NULL)) | |
{ | |
TranslateMessage(&msg); | |
DispatchMessage(&msg); | |
} | |
return(msg.wParam); | |
} | |
LRESULT CALLBACK _export WndProc(HWND hWnd, UINT message, | |
WPARAM wParam, LPARAM lParam) | |
{ | |
POINT ptCurrent; | |
switch(message) | |
{ | |
case WM_LBUTTONDOWN: | |
ptCurrent=MAKEPOINT(lParam); | |
ClientToScreen(hWnd,&ptCurrent); | |
TrackPopupMenu(hMenu,0,ptCurrent.x,ptCurrent.y,0,hWnd,0); | |
break; | |
case WM_PAINT: | |
{ PAINTSTRUCT ps; | |
BITMAPINFO *bm=sysres_BITMAP_WINELOGO; | |
char *bits=bm; | |
bits+=bm->bmiHeader.biSize; | |
bits+=(1<<bm->bmiHeader.biBitCount)*sizeof(RGBQUAD); | |
BeginPaint(hWnd,&ps); | |
SetDIBitsToDevice(ps.hdc,0,0,bm->bmiHeader.biWidth, | |
bm->bmiHeader.biHeight,0,0,0,bm->bmiHeader.biHeight, | |
bits,bm,DIB_RGB_COLORS); | |
EndPaint(hWnd,&ps); | |
break; | |
} | |
case WM_COMMAND: | |
CreateDialogIndirect(hInst,sysres_DIALOG_2,hWnd,DlgProc); | |
break; | |
case WM_DESTROY: | |
PostQuitMessage(0); | |
break; | |
default:return DefWindowProc(hWnd,message,wParam,lParam); | |
} | |
return 0L; | |
} | |
BOOL CALLBACK _export DlgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) | |
{ | |
switch(msg) | |
{ | |
case WM_INITDIALOG: | |
return 1; | |
case WM_COMMAND: | |
DestroyWindow(hWnd); | |
return 0; | |
} | |
return 0; | |
} |