Пример создания простого модального окна на WinAPI

Март 16th, 2011 § 0 comments

Частенько приходится создавать разные тулзы и я написал, что-то вроде шаблона, что бы не переписывать одно и тоже по 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)
{

}

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Смотреть фильмы онлайн