インデントやら処理メッセージの一覧性だけならgoto使ったり
#define CASEGOTO(a) case a:goto LABEL_##a;break;
callback(MSG m){
switch(m){
CASEGOTO(WM_PAINT)
CASEGOTO(WM_XX)
default: value=DefWndPorc();
}
LABEL_QUIT: return value;
LABEL_WM_PAINT:
....;goto LABEL_QUIT;
LABEL_WM_XX:
....;goto LABEL_QUIT; }