Частенько приходится создавать разные тулзы и я написал, что-то вроде шаблона, что бы не переписывать одно и тоже по 10-ть раз. Здесь сразу подключаю process.h может это не тру и стоит делать все WinAPI’евым но уже больше привычка, сразу создаю прототип функции потока. Одна глобальная переменная, он же хендл нашего окна, это для того чтобы в потоке можно было взаимодействовать с формой, может есть и более изящный вариант хз, если есть жду в коменты. У меня по дефолту подцепляется файл с ресурсом, вам конечно надо будет его создать самому, либо выставить идентификатор формы как у меня IDD_DIALOG1 (это собственно дефолтное название диалога, при создании его в VS2010), либо заменить на свой.Под катом сам код.
#include <Windows.h> #include <WindowsX.h> #include<process.h> #include "resource.h" BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam); BOOL DlgInit(HWND hwnd,HWND,LPARAM); unsigned _stdcall ThreadFunc(void* arg); HWND thwnd; void DlgCommand(HWND hwnd,int id,HWND,UINT); int APIENTRY WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int) { DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc); return 0; } BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { HANDLE_MSG(hwnd,WM_INITDIALOG,DlgInit); HANDLE_MSG(hwnd,WM_COMMAND,DlgCommand); case(WM_CLOSE): EndDialog(hwnd,0); default: return FALSE; } } BOOL DlgInit(HWND hwnd,HWND,LPARAM) { thwnd=hwnd; return TRUE; } void DlgCommand(HWND hwnd,int id,HWND,UINT) { }
Оставить комментарий