1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
//Form20.cpp
#ifndef UNICODE
#define UNICODE
#endif
#ifndef _UNICODE
#define _UNICODE
#endif
#include <windows.h>
#include "Form20.h"
long fnWndProc_OnCreate(WndEventArgs& Wea)
{
Wea.hIns=((LPCREATESTRUCT)Wea.lParam)->hInstance;
CreateWindowEx(0,L"button",L"Show Open File Dialog",WS_CHILD | WS_VISIBLE,62,50,175,30,Wea.hWnd,(HMENU)IDC_BUTTON1,Wea.hIns,0);
return 0;
}
void ShowOpenFileDlg(WndEventArgs& Wea)
{
static wchar_t szFilter[]=L"C Files (*.C),CPP Files (*.cpp)\0*.c;*.cpp\0\0";
static wchar_t szTitleName[_MAX_FNAME+_MAX_EXT];
static wchar_t szFileName[_MAX_PATH];
wchar_t lpszBuffer[256];
OPENFILENAME ofn;
GetCurrentDirectory(256,lpszBuffer);
memset(&ofn,0,sizeof(OPENFILENAME));
wcscpy(szFileName,L"Form20.cpp"); // copied "Form20.cpp" to buffer
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.lpstrFilter = szFilter;
ofn.nMaxFile = _MAX_PATH;
ofn.nMaxFileTitle = _MAX_FNAME+_MAX_EXT;
ofn.lpstrInitialDir = lpszBuffer;
ofn.lpstrDefExt = L"cpp";
ofn.hInstance = GetModuleHandle(L"");
ofn.hwndOwner = Wea.hWnd;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szTitleName;
GetOpenFileName(&ofn);
}
long fnWndProc_OnCommand(WndEventArgs& Wea)
{
switch(LOWORD(Wea.wParam))
{
case IDC_BUTTON1:
ShowOpenFileDlg(Wea);
break;
}
return 0;
}
long fnWndProc_OnDestroy(WndEventArgs& Wea)
{
PostQuitMessage(0);
return 0;
}
LRESULT CALLBACK fnWndProc(HWND hwnd, unsigned int msg, WPARAM wParam, LPARAM lParam)
{
WndEventArgs Wea;
for(unsigned int i=0; i<dim(EventHandler); i++)
{
if(EventHandler[i].iMsg==msg)
{
Wea.hWnd=hwnd, Wea.lParam=lParam, Wea.wParam=wParam;
return (*EventHandler[i].fnPtr)(Wea);
}
}
return (DefWindowProc(hwnd, msg, wParam, lParam));
}
int WINAPI WinMain(HINSTANCE hIns, HINSTANCE hPrevIns, LPSTR lpszArgument, int iShow)
{
wchar_t szClassName[]=L"Form20";
WNDCLASSEX wc={0};
MSG messages;
HWND hWnd;
wc.lpszClassName = szClassName; wc.lpfnWndProc = fnWndProc;
wc.cbSize = sizeof (WNDCLASSEX); wc.hInstance = hIns;
wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)COLOR_BTNSHADOW;
RegisterClassEx(&wc);
hWnd=CreateWindowEx(0,szClassName,szClassName,WS_OVERLAPPEDWINDOW,75,75,320,200,HWND_DESKTOP,0,hIns,0);
ShowWindow(hWnd,iShow);
while(GetMessage(&messages,NULL,0,0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
|